【问题标题】:Efficiently storing different type of orders for a client entity [database schema]为客户实体有效存储不同类型的订单 [数据库模式]
【发布时间】:2014-03-10 20:00:05
【问题描述】:

我必须设计一个数据库,其中我有一个客户实体,并且客户可以下多种类型的订单(所有订单都彼此不同,但它们之间很少有共同的字段,如状态、定价、时间等)。 例如,他可以下订单-A、订单-C、订单-F(来自不同的表格)。我很困惑如何满足不同类型的订单。

这是我迄今为止创建的。

现在我很困惑如何满足订单类型中不常见的字段。我应该为每种订单类型创建单独的表格以保存所有不同的值吗?并将所有这些表的外键添加到订单表?会很复杂。最好的方法是什么?

【问题讨论】:

    标签: database database-design one-to-many database-schema


    【解决方案1】:

    纯粹主义者会说您应该为每种类型的订单创建一个单独的表格,其中包含与该订单类型相关的字段。如果存在所有订单类型共有的字段,则这些字段应位于单独的通用表中。那么具有特定类型数据的表应该指向“主”订单表。

    相反的选择是将所有字段放在一个表中,并将不适用于给定订单类型的字段设置为空。

    您选择哪种方法实际上取决于您的数据。坦率地说,如果我在一个订单记录中有 30 个字段,然后有一两个字段只适用于某些订单,我只是将它们扔到订单表中,不适用时让它们为空。

    如果您有许多不同的订单类型以及不同订单类型中的许多不同字段,那么创建单独的表格可能是一个真正的野兽。谁想管理 30 个订单表?当某些字段属于多个订单类型但不是全部时,它也会变得棘手。

    就个人而言,我通常会创建一个包含所有字段的大表,并让一些字段为空。这通常是最实用的。但是您必须查看数据和实体的性质。如果有少量不同的订单类型并且每种类型都有大量的字段,那么制作单独的表格以将它们分开就开始有意义了。如果没有一堆空字段,它可能不会那么混乱。

    【讨论】:

    • 非常感谢,谢谢。我决定创建一个表,因为大多数字段都是常见的,并且很少有字段因订单类型而异。
    猜你喜欢
    • 2017-08-26
    • 1970-01-01
    • 2019-07-04
    • 2015-07-10
    • 1970-01-01
    • 2016-09-26
    • 2012-07-16
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多