我有桌子;类别,科目和成绩。
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。
答案 0 :(得分:2)
解决方案1:为每个表添加价格数字字段
我想说一个解决方案是直接在三个表中添加一个金额字段,并省去关系。 任何没有价格的物品都会有零价格。
解决方案2:创建三个价格关系表
你可以创建三个表:
CategoryPrice -> Category_ID, Price
SubjectPrice -> Subject_ID, Price
GradePrice -> Grade_ID, Price
对于没有价格的三张原始表格中的行,您可以省略价格关系表中的条目。
解决方案3:创建超类型以加入价格表
您可以创建一个名为“Object”的超类型表,它将具有唯一的ID。 所有类别,科目和成绩都将按对象的子类型进行,因此共享相同的ID。
因此,您可以使用价格表中的Object_ID为对象分配价格。