我正在一家企业实习,在SQL数据库上进行选择查询,并且我想退一步确定什么是一种好的做法,或者不保持这种做法。这是一个很好的练习来创建一个大的桌子吗?
他们做了一个表,不同类型的代码,如:
ID | TYPE | Code |
-------------------------------------
1 | 1 | red |
2 | 1 | white |
3 | 1 | blue |
4 | 1 | green |
5 | 2 | dept1 |
6 | 2 | dept2 |
7 | 2 | dept3 |
8 | 3 | prodtype1 |
9 | 3 | prodtype2 |
10 | 3 | prodtype3 |
正如你看到的,对于每个代码的一些信息。这是一种有效的做法,重新组合一个大表中只有少量信息的表,并在通过列“type”上的WHERE子句选择时检索我们的信息? 在我的规模上,我将不得不创建三个表格(颜色,部门,生产类型),但是很少有信息。保留三张小桌子是否耗费大量资源?它是否会导致长期存在的巨大问题,使用一张包含不同“种类”信息的大表格?
它们似乎是简单的文本查找。为每个查询分开的表格有优点和缺点。没有明确的“最佳”选择。 – Richard
你能列举这种做法的一些优点和缺点吗?因为我发现保留单独的表格更清晰,但是它也会使关系模型变得沉重,没有任何好处。 – Exomus
这种(反)模式通常被称为OTLT(一个真正的查找表)。国际海事组织的主要缺点是,除非你使用更广泛的外键约束,否则没有什么可以阻止某人存储例如'prodtype2',a.k.a'9'列在期待颜色的列中。即为了获得体面的完整性,FK必须覆盖'type'列和'id'。 –