分离或合并具有相似属性的 2 个表?

Wil*_*rdi 5 normalization database-design

我的业务系统中有两种用户:CustomerEmployee。两个用户都有UsernamePasswordFullnamePhone NumberEmail和其他类似的属性。

我很难确定将CustomerEmployee合并到一个表上(例如我存储在User表中)还是将每个实体分开放在不同的表上哪个更好 ?

就我而言,Customer具有Employee没有的其他属性(例如:NewsUpdateSubscription)。而且对于Employee,它具有Customer没有的其他属性(例如:Salary)。这种情况的最佳做法是什么?提前致谢。

a1e*_*x07 4

我想说“客户”和“员工”是一个人可以在系统中扮演的两个角色。因此,我会在你的设计中添加“角色”的概念。然后,您可以将客户相关属性存储在一个表中,将员工相关属性存储在另一表中。你会得到类似的东西

User (user_id, name, ...)
Role (role_id, description)
UserRole (user_role_id, user_id,role_id, date_from, date_thru) 
-- note, dates are quite important(at least date_from should be not null)
CustomerRoleAttribute(user_role_id, NewsUpdateSubscription)
EmployeeRoleAttribute(user_role_id, salary)
Run Code Online (Sandbox Code Playgroud)

另外,为了绝对正确,Customer角色Employee需要第二部分 - 例如,我是AAA公司的客户,也是 的员工BBB,所以我的角色是由与其他用户的某种类型的关系定义的(在“情况下是组织”)雇佣关系)。

您可以在 Len Silverston 所著的《数据模型资源手册》中找到有关此方法的更多信息