从那个StackOverflow 的问题:
总结:
Customer
s 和Employee
s 与 one Person
、 one Individual
(与此人本身相关的字段)和 one User
(用于登录目的)相关联。所以Individual
s 和User
s 总是与一个人Customer
或一个Employee
人有关。Branch
es 与一Person
和一相关联Company
(与公司人相关的字段)。所以Company
s总是与一个Branch
人有关。他们没有用户,因为他们隶属于这个数据库所代表的公司——是他们的员工可以对应用程序进行身份验证。Employee
属于一个Branch
。ABranch
有零个或多个Employee
s。(是的,图表不正确,抱歉!)Employee
角色 - 我有拥有操作和管理权限的员工。角色权限包含在代码本身中,在这里您可以意识到客户也有自己的角色......是否有任何建议来实施更好(和简单)的方法来管理客户和员工的角色?我应该如何更改错误的3NF 结构以实现设计良好的单表继承以更好地使用 MVC 模式?
更新
好吧,我试着简化了一下,现在我完成了这个新结构:
我还能改进吗?如何?
除非我误解了您的要求,否则Person
、Individual
、Company
和User
表可以合并为一条记录,因为这些表之间的关系都是一对一的。除非这是某种棘手的问题......
甚至可以说,所有涉及一对一关系的表都可以合并到一个表中,因为这将消除重复的外键,从而节省空间。话虽如此,您确实必须在空间紧张的情况下才担心节省那么一点空间。
在我看来,您需要重新审视您的设计规范,着眼于简化。