我有四张表: ItemCategory、Items、DiamondCategoy和钻石。
用户存储项目详细信息并指定其上是否有菱形,例如:
ItemCategory: Ring
Item: R1如果有钻石,那么:
DiamondCategory: Round
Diamond: D1因此环的R1具有圆形的D1
项目可以没有菱形,例如:
ItemCategory: Ring
Item: R1
DiamondCategory: None
Diamond: None我不知道该如何设计这些关系。我想出了这个解决方案,如果我错了,请纠正我。
ItemCategory:
c_Id >> PK项目:
p_Id >> PK
c_Id >> FK
d_Id >> FK钻石:
d_Id >> PK
dc_Id >> FKDiamondCategory:
dc_Id >> PK是这样吗?
发布于 2010-03-02 04:29:54
就我而言,这看起来很好。如果一个项目可以有多种类型的菱形(就像许多环一样),您可能希望有一个交集(交集)表,如下所示:
项目:
p_Id >> PK
c_Id >> FKItemDiamonds
d_Id >> FK >>
>> UK or PK
p_id >> FK >>
no_of_diamonds 因此,项目ID和钻石ID分别是外键,并且(项目ID、钻石ID)一起形成一个主键或唯一键。no_of_diamonds属性假定一个项目可以有多个任何类型的菱形。
每个查找代码都有一个单独的表(您的类别表)有两个好处:
Oracle
发布于 2010-03-02 03:49:50
如果一件商品和一颗钻石只能有一个类别,为什么你需要为它们单独的表格?只需将类别作为属性包含在Item和钻石表格中即可。
然后您将有两个表,一个用于Items,一个用于钻石,第三个表用作这两个表之间的查找表,并将存储Item的主键和它所拥有的相应钻石的主键。
https://stackoverflow.com/questions/2358560
复制相似问题