与多个表的关系

时间:2013-06-14 18:46:38

标签: php mysql database polymorphic-associations

我有桌子;类别,科目和成绩。

Category -> id, name, desc; 
Subject -> id, name, desc, category_id; 
Grade -> id, name, desc, subject_id.

我有另一张桌子,Price。目前正在

Price -> id, amount, category_id.

是的,价格已添加到类别中,但新要求是,价格可以添加到任何级别,即类别,主题或成绩。

我知道一种方法可以通过添加其他外币到价格表来解决它,因为 - > id,amount,category_id,subject_id,grade_id。然后将它们留给NULL而不是相关的表。

我不知道,这是更好的解决方案,我喜欢创建完美的数据库架构。请建议我替代更好的解决方案。

我使用MySQL和PHP。

1 个答案:

答案 0 :(得分:2)

解决方案1:为每个表添加价格数字字段

我想说一个解决方案是直接在三个表中添加一个金额字段,并省去关系。 任何没有价格的物品都会有零价格。

解决方案2:创建三个价格关系表

你可以创建三个表:

CategoryPrice -> Category_ID, Price
SubjectPrice -> Subject_ID, Price
GradePrice -> Grade_ID, Price

对于没有价格的三张原始表格中的行,您可以省略价格关系表中的条目。

解决方案3:创建超类型以加入价格表

您可以创建一个名为“Object”的超类型表,它将具有唯一的ID。 所有类别,科目和成绩都将按对象的子类型进行,因此共享相同的ID。

因此,您可以使用价格表中的Object_ID为对象分配价格。