我的经理要求我为采购部门设计一个个人防护设备数据库,使用SQL Server.In收集我对数据库的需求,我想出了5个PPE类别:手、眼睛和脸、头部、身体、鞋类。
目前有一个存储上述所有类别的表,
PPCatTable:*手,眼睛和脸,头,身体,鞋类
对于每个类别,有几个有子集,即
鞋类:*耐电气,HasSteelToe,颜色,高度,
手套:*危险,危险,ProtectiveMaterial
但是,我很难理解子表的结构应该是什么样子,如何存储每个category.Each子集的不同子集,每个子集都有不同的数字属性,而采购部门坚持要捕获所有不同的属性。
我应该为每个子类别创建一个表吗?
哪些字段应该引用PPEEOrderDetails表的子键的主键?
是否应该将相应的子属性存储为父类别表中的XML数据类型?
发布于 2013-01-13 13:01:06
您希望使用实体超级类型/子类型技术来对项进行建模。考虑以下数据模型:

每个类别都有自己的表,因为它们有不同的属性集。每个子类别都有一个列作为其主键,该列也是超级表PPEQUIP的外键。
注意,PPEQUIP不是一个类别列表,就像您的PPCatTable一样。PPEQUIP包含每个子类型表中每个项的记录。PPEQUIP中的列将是公共标识符和partitioning attribute,它是一个colum,指示哪一个子类型应用于该项。如果所有类型都有其他属性,那么这些公共属性也会出现在PPEQUIP中。
现在,当您有一个通常需要引用设备的表时,而不具体考虑设备属于什么类别,比如您的ORDER_DETAIL,那么外键引用将转到超级类型表(即PPEQUIP)。另一方面,如果您只需要引用一个特定的类别,那么您将在子类型级别上这样做。
https://stackoverflow.com/questions/14302461
复制相似问题