我试图设计这个,但我无法弄清楚如何实施点4(团队领导者)。我的错误允许任何成员领导任何团队。我该如何修改它?
尝试:http://i.imgur.com/LHwOmL6.png
正如你所看到的,我认为我在MEMBER和TEAM之间的关系是错误的,因为任何成员都可以领导任何违反我规则的团队。 (无视类型)
答案 0 :(得分:1)
让我们一步一个步骤。
一个部门有一个或多个团队。
所以,让我们创建一个部门表。
Department
----------
Department ID
Department Name
...
团队只能在一个部门。
现在,我们创建一个Team表。
Team
----
Team ID
Department ID
Team Name
...
部门ID是返回Department表的外键。 (部门ID,团队ID)上有一个唯一索引,因此您可以看到部门中的团队。
会员可以加入一个或多个团队
团队可以有1个或更多成员
首先,我们需要一个会员表。
Member
------
Member ID
Member Name
...
接下来,Team和Member表有很多关系。我们用TeamMember联结表表示这种关系。
TeamMember
----------
Team ID
Member ID
Join Time Stamp
...
主键是(团队ID,会员ID)。您还将拥有一个唯一索引(会员ID,团队ID)。您可以从主键获得团队成员。您可以从唯一索引中获取该成员所属的团队。
会员可以领导0个或更多团队。
每个团队都有一位成员领导......
正如您所见,这些是棘手的要求。这是模拟这些关系的一种方式。
Leader
------
Team ID
Member ID
Promotion Time Stamp
...
此Leader表具有主键(Team ID)和唯一索引(Member ID,Team ID)。主键只是团队ID,以强制每个团队一个领导者的要求。
必须检查TeamMember表上是否存在(团队ID,成员ID),然后才能在Leader表上写入行。这强制要求领导者必须是团队的成员。
否则,您可以将这些列放在TeamMember表中,非领导者的列值为null。
答案 1 :(得分:0)
TEAM
-------
team_id
name
department_id
Person
--------
person_id
name
Team Member
---------------
team_id
person_id
is_leader
Department
-----------
Department_id
name