设计一个包含 100 多个属性的 Employee 表这样的大实体的最佳实践是什么?
我应该将它们保留为具有 100 列的单个表,还是应该将它们拆分为 1..1 关系,然后在我的代码中组合 Employee 对象?
有什么意见吗?每种方法的优缺点?
设计一个包含 100 多个属性的 Employee 表这样的大实体的最佳实践是什么?
我应该将它们保留为具有 100 列的单个表,还是应该将它们拆分为 1..1 关系,然后在我的代码中组合 Employee 对象?
有什么意见吗?每种方法的优缺点?
这里的答案不在于Employees 表,而在于更广泛的数据库设计。如果所有属性都绝对是 1-1,那么我肯定会有一个实体。SQL Server 具有您在进行物理设计时可以使用的优化,例如用于具有许多 NULL 值的列的 SPARSE 列。
我假设您目前正在经历规范化和实体关系图的过程。如果您是,那么我建议您查看 SuperType/SubType 方法,Employees 通常是一个很好的候选者。
在这种方法中(例如),您可能有一个“联系人”表,其中包含名字、姓氏、电话号码等。然后,这将链接到您的员工表、客户表、供应商表等。您的然后,员工表将只包含员工特有的属性,例如员工编号、开始日期等。
这有几个好处。
尝试阅读 Star-Schema 和 Snowflake-Schema。这些是在设计数据仓库模式时使用的术语,其优缺点可能与您在这里所面临的非常相似。
http://en.wikipedia.org/wiki/Star_schema
http://en.wikipedia.org/wiki/Snowflake_schema
http://www.diffen.com/difference/Snowflake_Schema_vs_Star_Schema