应用单表继承

Pau*_*tas 5 database-design

那个StackOverflow 的问题:

数据库结构

总结:

  • 我的 CRUD 是:客户、员工和分支机构。
  • Customers 和Employees 与 one Person、 one Individual(与此人本身相关的字段)和 one User(用于登录目的)相关联。所以Individuals 和Users 总是与一个人Customer或一个Employee人有关。
  • Branches 与一Person和一相关联Company(与公司人相关的字段)。所以Companys总是与一个Branch人有关。他们没有用户,因为他们隶属于这个数据库所代表的公司——是他们的员工可以对应用程序进行身份验证。
  • 一个Employee属于一个Branch。ABranch有零个或多个Employees。(是的,图表不正确,抱歉!)
  • 目前我正在使用一个位来区分Employee角色 - 我有拥有操作和管理权限的员工。角色权限包含在代码本身中,在这里您可以意识到客户也有自己的角色......是否有任何建议来实施更好(和简单)的方法来管理客户和员工的角色?

我应该如何更改错误的3NF 结构以实现设计良好的单表继承以更好地使用 MVC 模式?

更新

好吧,我试着简化了一下,现在我完成了这个新结构:

新的数据库结构

我还能改进吗?如何?

Han*_*non 2

除非我误解了您的要求,否则PersonIndividualCompanyUser表可以合并为一条记录,因为这些表之间的关系都是一对一的。除非这是某种棘手的问题......

甚至可以说,所有涉及一对一关系的表都可以合并到一个表中,因为这将消除重复的外键,从而节省空间。话虽如此,您确实必须在空间紧张的情况下才担心节省那么一点空间。

在我看来,您需要重新审视您的设计规范,着眼于简化。