当子实体具有相同的属性(ER 图)时应该使用继承吗?
Should inheritance be used when sub-entities have the same attributes (ER-diagrams)?
我想知道,在对数据库建模时,如果子实体具有完全相同的属性,是否应该使用继承?
我举个例子说明一下。在举重比赛中,举重运动员做两种不同的动作:"Snatch" 和 "Clean and jerk"。他们每一步都有 3 次尝试。我按以下方式对此建模:
起初,这对我来说很有意义,因为这两个动作有很多共同的属性,这些属性都在名为 Result 的父实体中。但是,"Snatch"和"CleanAndJerk"也有完全相等的属性。这似乎是多余的。不过,将所有内容都放在 "Result" 实体中似乎也好不了多少。
设计数据库时,这是一个不错的选择吗?
在这种情况下,您真正需要的是多态 table。
我认为这样做会更好:
Move
table。列:FirstTry
、SecondTry
、ThirdTry
、BestTry
、MoveTypeId
.
MoveType
table。列:MoveTypeId
、MoveTypeName
、MoveTypeDescription
.
那么简单 Move
有一个 MoveType
table 的外键。
我想知道,在对数据库建模时,如果子实体具有完全相同的属性,是否应该使用继承?
我举个例子说明一下。在举重比赛中,举重运动员做两种不同的动作:"Snatch" 和 "Clean and jerk"。他们每一步都有 3 次尝试。我按以下方式对此建模:
起初,这对我来说很有意义,因为这两个动作有很多共同的属性,这些属性都在名为 Result 的父实体中。但是,"Snatch"和"CleanAndJerk"也有完全相等的属性。这似乎是多余的。不过,将所有内容都放在 "Result" 实体中似乎也好不了多少。
设计数据库时,这是一个不错的选择吗?
在这种情况下,您真正需要的是多态 table。
我认为这样做会更好:
Move
table。列:FirstTry
、SecondTry
、ThirdTry
、BestTry
、MoveTypeId
.MoveType
table。列:MoveTypeId
、MoveTypeName
、MoveTypeDescription
.
那么简单 Move
有一个 MoveType
table 的外键。