没有继承的数据库设计

时间:2012-07-02 14:26:31

标签: database inheritance

我为我的客户提出了以下架构。有什么东西在这里,特别是订单行项目。我应该使用继承吗?我很确定这个网站只允许你订购课程,课程和礼品卡,就是这样

任何反馈都将不胜感激

enter image description here

2 个答案:

答案 0 :(得分:1)

我对设计的看法:

  1. 您有可用购买对象的CoursesLessonsGiftCards表,OrderLines包含每个表的ID。但是,如果客户购买LessonGiftCard,则应在订单中显示为2行。另外,如果您的客户想要交易更多对象,您会怎么做?

    因此我觉得重新设计这个部分可能会更好,就像这样:

    • OrderLines重命名为OrderItems;
    • 添加ItemType表格,共有3行:CoursesLessonsGiftCards;
    • 使用Items字段添加(ItemId, ItemType, Title, Price, LanguageCode, SortOrder, etc.)表。

    通过这种方式,我们不仅可以为Lessons添加评论,还可以为所有可能的项目添加评论。

    您必须提供保留Items详细信息字段的首选方法。现在CoursesLessons共享了很多字段,因此将所有字段移动到新的Items表中可能是合理的,因为这些字段似乎对{ {1}}也。如果您有GiftCards等特定详细信息,则可以添加特定表格,例如GiftCardsGiftCardItems以及一组未与其他Items.id共享的特殊字段类型。

  2. 一个小注:我会将Item分成几个表,因为我认为这个表将包含客户和支持。这意味着此表可能会变大(取决于预期的客户数量)。当表的行数增加时,在单个表中维护这么多字段可能会有问题。

  3. 我同意马特的观点 - 如果没有要求,很难说清楚。

答案 1 :(得分:0)

如果不了解客户的要求,真的很难说。一切看起来都不错,但我无法确定它是否包含客户想要的内容而没有他们的需求文档。