来自that问题:
汇总:
Customer
和Employee
与一个Person
,一个Individual
(与此人相关的字段)和一个User
相关联(用于登录)目的)。因此,Individual
和User
始终与一个Customer
或Employee
人相关。Branch
es与一个Person
和一个Company
相关联(与公司人员相关的字段)。因此Company
始终与一个Branch
人相关。他们没有用户,因为他们与该数据库所代表的公司有关联 - 他们的员工可以在应用程序中进行身份验证。Employee
属于一个Branch
。 Branch
的{{1}}为零或多个Employee
。 (是的,图表不正确,抱歉!) Employee
角色 - 我的员工拥有运营和管理权限。角色权限在代码本身中,在这里您可以意识到客户也有自己的角色......有任何建议可以实现更好(和简单)的方式来管理客户和员工的角色吗?如何更改错误的 3NF结构以实现精心设计的单表继承以更好地使用MVC模式?
我试着简化一下,现在我完成了这个新结构:
我还能改进它吗?哪里?你会如何模仿?
答案 0 :(得分:0)
如果您具有正常低基数(更少的唯一/更多重复),则仅为城市创建新表是值得的。因此,根据您的用户,您必须自己决定。另一方面,您可以打破地址表和电话号码表。
根据您存储的有关员工和客户的信息类型,您可以只显示一个字段,指明该人员是员工还是客户,还是可以有两个单独的表格。
如果我们谈论角色,它们通常表示员工的权限/职位/可访问性。即普通,P / T,经理。您可以开发访问级别&每个组/角色的内容可见性。
从Person中取出所有个人详细信息并将其存储在新表中。 (只是好奇..你真的需要nickname
字段吗?磁盘I / O是任何应用程序的最大瓶颈之一)将个人详细信息与专业细节和ID分开。
谈到分行,你确定任何时候只有一个联系人吗?通常情况下,商业世界并非如此。但是一个分支/个人在任何给定的时间都只有一个地址,所以在这里你的单独地址表会有所帮助。
一般来说建议一个结构真的很难。好的设计总是基于业务规则。