强实体指其弱实体

时间:2016-03-14 09:10:36

标签: database database-design

我有2个名为Group and Person的表,Group是强实体,Person是弱实体。

组(PK_Group,Name,...)

Person(PK_Group,PK_Person,Name,...)

问题是,如何将组长添加到表中。将Flag_Leader添加到Person表是一个很好的设计吗?有什么建议?谢谢。

1 个答案:

答案 0 :(得分:0)

我会将外键leader_id添加到引用此组的人员的组中。您考虑的领导者标志会产生约束,以确保每个组中只有一个领导者更复杂。

在决定之前,我会重新考虑你的主要关键策略。我是否认为你的想法是将PK_Group包含在Person的主键中?这使得组成员资格成为该人的身份属性。如果有一天,一个人可能是一个以上的团体的成员,或者一个人可能从一个团体移动到另一个团体,那么你将遇到麻烦。因此,如果您从头开始设计此数据库并且不受任何先前遗留数据结构的约束,则应为每个表定义一个密钥,该密钥仅用于标识,而不是用于描述数据对象。

所以我的建议是:

group(pk_id, name, fk_leader_id, ...)
person(pk_id, name, fk_group_id, ...)

其中fk表示外键。