我有以下表格:
订单头表:ordnum、orddate、customerID、cost_of_packing、cost_of_delivery
订单行表:ordnum、ordlinenum、productid、qty、price
Ordnum 列是上述 2 个表之间的公共字段。
客户:客户 ID、客户名称
产品:产品ID、产品名称
如何对这些数据建模?
如果我连接订单标题和订单行表,因此将其放入一个事实表中,那么每一行的包装成本和交货成本将重复。
如果我将它们保留为 2 个单独的事实表,那么我无法将它们连接到 ordnum 列,因为这会破坏星型模式设计。因此我无法报告订单标题和详细信息。
将它们连接到一个表中,然后使用 DISTINCT()。这正是星型模式中标题/详细信息结构的本质。另一种方法是连接到事实表,当您连接两个非常大的基数表时,模型其余部分的性能将非常糟糕。