Mysql 员工和客户=人员表?

Mysql 员工和客户=人员表?,mysql,database,Mysql,Database,将诸如姓名、电话号码、地址等信息存储在一个表中是否不好?这将导致Employee和Customer表有一个外键引用“People”表 如果我们不将这些信息存储在一个表中,那么Employee和Customer表中就会有很多类似类型的信息 最好的设计是什么 我的个人偏好:将客户和员工数据库分开。虽然客户和员工之间的一些数据可能是相同的,但不久数据要求和规则就会开始不同。例如,对于员工,您可能希望存储出生日期,但对于客户,您可能不需要 保留表格还可以防止selects出错。如果客户和员工是“人”中的

将诸如姓名、电话号码、地址等信息存储在一个表中是否不好?这将导致Employee和Customer表有一个外键引用“People”表

如果我们不将这些信息存储在一个表中,那么Employee和Customer表中就会有很多类似类型的信息


最好的设计是什么

我的个人偏好:将客户和员工数据库分开。虽然客户和员工之间的一些数据可能是相同的,但不久数据要求和规则就会开始不同。例如,对于员工,您可能希望存储出生日期,但对于客户,您可能不需要

保留表格还可以防止
select
s出错。如果客户和员工是“人”中的参考人,而新来者不知道加入什么以及何时使用
where
子句来分隔客户和员工,那么结果可能是意外的,并且可能无法检测到。将客户和员工分开可以避免此类问题

将它们分开也有助于将客户表添加到与客户/订单等相关的模式中,员工表可以转到与人力资源相关的模式中。可以对其应用不同级别的保护

人员表的维护可能会影响客户和员工表。例如,如果必须在大型人员表中添加一列,某些RDBMS可能会将该表锁定得太长。如果表格是分开的,您将只能准备相关的组


总的来说,我认为使用与客户和员工相关的FK创建人员表没有什么好处。也许其他人也会提出“人民的利益”这个问题

不,还不错。您希望存储的关于客户的信息类型与您希望存储的关于员工的信息类型非常不同,即使员工也是客户。“人员”或“用户”表可用于存储统一身份验证数据,而“客户”和“员工”将存储用户可以拥有的每种配置文件的特定数据。我知道这个问题和答案很古老,但评论这个问题是为了帮助来自谷歌的人。