我有两个循环依赖的表; 每个小组都有一名领导成员
+---------+-------+----------+
| GroupId | Group | MemberId |
+---------+-------+----------+
| 1 | g1 | 1 |
+---------+-------+----------+
并且每个成员都属于一个组:
+----------+--------+---------+
| MemberId | Member | GroupId |
+----------+--------+---------+
| 1 | m1 | 1 |
+----------+--------+---------+
一种可能的解决方案是:
+----------+--------+---------+---------+
| MemberId | Member | GroupId | Leading |
+----------+--------+---------+---------+
| 1 | m1 | 1 | 1 |
+----------+--------+---------+---------+
但由于成员与领导者之比很高,导致非规范化。
设计这个的最佳方法是什么?
答案 0 :(得分:1)
这两个表格设计正确。 您拥有所有信息:
1. groupID,GroupName,LeaderMemberID;
2. MemberID,MemberName,MemberGroupID;
如果您对同一个组有多个领导者,和/或每个成员可能属于多个组,则可能会出现此问题。
但您可以轻松地将设计更改为以下常用方法:
1. groupID,GroupName;
2. MemberID,MemberName;
3. MemberID,GroupID,isLeader;
我希望它有所帮助。
答案 1 :(得分:0)
假设每个小组只能有一个领导者,我说你的第一个例子没问题。虽然我会称之为领导者领域" LeadMemberId"或者其他一些而不仅仅是" MemberId",因为看着桌子的其他人可能会对在组记录中拥有单个成员ID意味着什么感到严重困惑。
如果一个群体可以拥有多个领导者,那么我可以添加一个" IsLeader"标记到成员记录。大多数记录都有假或0的事实是无关紧要的。但是,如果只有一个,我会避免这样做,因为数据结构暗示可能有多个,并且有人可能会犯错并在多个记录中将标志设置为true,这可能会让您感到悲伤