在一个表中存储诸如姓名,电话号码,地址等信息是不是很糟糕?这将导致Employee和Customer Table具有引用“People”表的外键。
如果我们不将这些信息存储在一个表中,我们会让Employee和Customer Table有很多类似的信息。
什么是最好的设计?
答案 0 :(得分:6)
我的个人偏好:将客户和员工数据库分开。虽然客户和员工之间的某些数据可能相同,但数据要求和规则开始出现差异的时间不长。例如,对于员工,您可能希望存储出生日期,但您可能不需要为客户存储。
保持表格还可以防止select
中的错误。如果客户和员工在人员中引用并且新手不知道要加入什么以及何时使用where
条款来分隔客户和员工,结果可能是意外的并且可能未被发现。让客户和员工分开可避免此类问题。
将它们分开也有助于将客户表添加到与客户/订单等相关联的模式,员工表可以转到与hr相关的模式。可以对他们施加不同程度的保护。
人员表的维护可能会影响客户和员工表。例如,如果必须在大型人员表中添加列,则某些RDBMS可能会将表锁定太长时间。如果表格是分开的,您将只能准备相关的组。
总的来说,我认为使用与客户和员工相关的FK创建人员表几乎没什么好处。也许SO上的其他人可能会提高人们的福利。