2

我有一个Supertype/Subtype关系,其中一个子类型没有任何属性,所以我不确定如何建模。我有一个名为Tracks的超类型,其中一个轨道可以是三个子类型之一,即音频,视频,文本。音频和视频子类型都具有特定的属性,因此将它们放在单独的表格中是有意义的。 Text子类型没有额外的元数据,所以我应该在一个单独的表中捕获它?超类型/子类型:数据建模

回答

2

如果你在你的父表中的型判别 ,那么你并不需要一个亚型表在所有 - 亚型将由型判别标识及其所有领域都已经在基地表。

否则,子类型表只会复制超级表的PK(没有附加字段)。

或者,你可以考虑采用"all types in the same table"策略来实现继承。


只需标识其列的类型的字段 - 即从一个“公知”和记录集获取其值通常的整数(或者如果枚举DBMS支持的话)。

+1

Aslo,Nik应该看看下面的标签:“class-table-inheritance”,“single-table-inheritance”和“shared-primary-key”。 –

1

只需在轨道表中添加一个名为tracktype的单独列。在这个专栏里存储音轨的类型,它是音频文本。 轨道表应包含所有类型的轨道信息,其中包含所有类型共有的属性,现在对于每种类型,您需要单独的表。它们都将拥有自己的标识符和其他属性,标识符应该是轨道表中的主键和外键。您可以避免创建文本表格,因为它没有任何属性。但是,如果任何其他表格特别依赖于文本表格,则可以为文本创建一个单独的表格,并在该表格中仅放置一个属性,该属性是文本实体的标识符。