为单一类型的多种形式设计数据库

时间:2018-05-17 08:32:24

标签: sql-server database

为具有多个表单的类型设计DB表的最佳方法是什么。 例如Animal,它可以是具有特定属性的任何动物。

动物表,每个类型都有公共列和各个表。但是如何在主动物表中维护外键引用?我们不能为每种类型保留一个键,如果类型增长,引用也会增长。对于一行,只存在一种类型,动物表中的所有其他键都将为空。

除此之外,有没有最好的方法来设计表格? 例如,请考虑下表 家具表:

Id    FurnituretypeId NoofLegs ChairId    TableId
-------------------------------------------------
int   int             int       int        int

主席表:

Id    Name        CansSwing   CanDetachable          
-------------------------------------------------
int   Varchar(25) boolean      boolean

婴儿床表:

Id    Name        CotType      Storage   StorageType
-------------------------------------------------
int   Varchar(35) Varchar(25)  boolean   Varchar(25)

考虑到上面的例子,如果我必须插入一把椅子,那么在Furniture表中的TableId将为null。如果有多种类型的家具,那么我必须在家具表中添加这些类型ID作为外键,但一次只能添加一种类型。

1 个答案:

答案 0 :(得分:0)

只是一个想法,如果有多个属性,将创建一个包含所有常见内容的动物表,以及一个动物属性表,其中包含动物(FK),属性,值。当然,这是一个无法解决的解决方案,可能适用于您,也可能不适合您。