如何建模:团队&lt ;-( 1)---(N) - >员工,扭曲;更好的模式?

时间:2016-01-03 04:13:17

标签: entity-framework oop design-patterns database-design

我必须在SQL Server数据库中建模并创建一个简单的关系......

团队可以分配零个或多个员工;员工只能分配到一个团队。很简单......这是我正在努力的转折......

团队有一个TeamLeader,他是一名员工。可以将TeamLeader分配给单个团队。所以,我向团队添加了TeamLeaderId,并为TeamLeaderId提供了一个独特的索引。我在Team to中的TeamLeaderId和Employees中的EmployeeId之间创建了一个外键关系。

这是针对这种情况的最佳模式,还是有更好的模式?

感谢您的帮助和指导,

麦克

3 个答案:

答案 0 :(得分:2)

对于你提出的约束,这看起来是正确的。但是看起来你最好使用Team和Employee之间的链接表。为什么要将员工限制在一个团队中,或者让员工成为团队中的强制要求?今天有人(你?)可能认为这是唯一的方法,明天它可能会有所不同。

答案 1 :(得分:1)

最好从Team表中删除TeamLeaderId字段并创建新表TeamLeaders(使用唯一键[Employees中的EmployeeId +团队中的TeamId])

现在,您可以毫不费力地改变主意并从业务领域模型中删除团队领导:只需删除teamleaders表。

答案 2 :(得分:0)

我认为这个问题的答案很大程度上取决于系统的用法:

  1. 如果创建了团队并分配了员工,那么最终团队成员中的任何团队成员都会被选中,那么这是一个很好的选择。
  2. 另一方面,如果雇用一名员工作为团队负责人,并且他将始终被指派为团队负责人,最好将这种“类型”的信息添加到员工表中(其他人增加/删除员工)需要额外的不必要的逻辑来处理TeamleaderId和潜在的未来“类型”)。