设计一个包含100多个属性的Employee表这样的大型实体的最佳做法是什么?
我应该将它们保存为包含100列的单个表,还是应该将它们拆分为1..1关系,然后在我的代码中编写Employee对象?
有什么意见吗?各种方法的优缺点是什么?
答案 0 :(得分:2)
这里的答案不在于Employees表,而在于更广泛的数据库设计。如果所有属性肯定是1-1,那么我肯定会有一个实体。当您进入物理设计时,SQL Server可以使用优化,例如对于具有许多NULL值的列的SPARSE列。
我假设您正在进行规范化和实体关系图的过程。如果你是,那么我建议你看看SuperType / SubType方法,员工通常是一个很好的候选人。
在这种方法中(例如),您可能有一个“联系人”表,其中包含名字,姓氏,电话号码等。然后这将链接到您的员工表,您的客户表,您的供应商表,您的员工表将只包含员工特有的属性,例如员工编号,开始日期等。
这有几个好处。
答案 1 :(得分:0)
尝试阅读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