良好的数据库表设计:一个表为每个实体混合不同的实体或单独的表

Ane*_*esh 8 database-design

什么是更好的数据库设计?

有一个可以包含不同"类型"记录的大表,例如:员工,汽车,手机,为了识别每种类型的记录,我们有一个名为type的列.

所以表格的列会看起来像

id | 类型| 名称

1 | 汽车| 涉

2 | 汽车| 丰田

3 | 电话| 摩托罗拉

4 | 员工| 插口

5 | 员工| Aneesh

6 | 电话| 诺基亚

7 | 电话| 摩托罗拉

或者每种类型都有不同的表格

例如:

雇员

id | 名称

汽车

id | 名称

手机

id | 名称

这些表可以具有来自其他表的外键引用.现在,如果每个表都有不同的列,那么决定很简单,你不能在同一个表中拥有它.因此可能排除选项1(除非所有不常见的列都可以为空).但是,如果这些不同的实体具有相似的列,那么更好的设计是什么呢?

什么可以支持和反对每个?

mar*_*c_s 7

我同意所有人 - 绝对使用单独的表格.通过使用单独的表来放松一下 - 只是因为你有更多的表,你的数据库不会变得更慢或更不易管理.

但是你获得了很多 - 你不必拥有许多对某种类型的实体毫无意义的字段,依此类推.正如许多人所指出的,你坚持2NF,这绝对是一件好事!

看看关于Simple Talk的这篇有趣的文章

五个简单的数据库设计错误以及如何避免它们

错误#1是作者所谓的"常见查找表",这听起来很像你想要做的 - 但对于真实的实时数据.

阅读文章,内化其所有要求 - 优秀的东西,强烈推荐!


R-D*_*R-D 5

由于它们是非常不同的类型,我建议将dm存储在单独的表中.这可以防止必须维护类型列表,因为它们都在自己的表中.此外,如果将来扩展其中一种类型(例如,您将为员工存储电话号码),您就不会获得任何奇怪的关系,例如汽车的电话号码.它还使您的数据库更易于理解和维护.