我有四个表:ItemCategory,Items,DiamondCategoy和Diamonds。
用户存储项目详细信息并指定是否有钻石,例如:
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 >> FK
DiamondCategory:
dc_Id >> PK
这是正确的吗?。
答案 0 :(得分:2)
如果物品和钻石只能有一个类别,为什么还需要单独的表格呢?只需在您的项目和钻石表格中包含该类别作为属性。
然后你有两个表,一个用于Items,一个用于Diamond,第三个表用作两者之间的查找表,并存储Item的主键和相应钻石的主键它有。
答案 1 :(得分:1)
就我而言,这对我来说很好。如果一个物品可以有多种类型的钻石(就像许多戒指一样),你可能想要一个交叉点(交叉点)表,如下所示:
产品:
p_Id >> PK
c_Id >> FK
ItemDiamonds
d_Id >> FK >>
>> UK or PK
p_id >> FK >>
no_of_diamonds
因此,项目ID和钻石ID是单独的外键,并且(项目ID,钻石ID)一起形成主键或唯一键。 no_of_diamonds属性假定Item可以包含多种类型的Diamond。
为每个查找代码(您的类别表)提供单独的表有两个好处: