首页 > 解决方案 > 如何在客户下订单且每个订单包含多个食物的餐厅场景中设计星型模式

问题描述

在这里,我有一个 FACT 表FACT_Orders,其中包含字段customer_id、order_id、total_cost、created_date、updated_date

此外,我还有一个 FACT 表FACT_Order_List以保持项目的顺序,其中包含字段 order_list_id、order_id、item_id

我还有维度表DIM_ItemDIM_Customer来保留 Item 和 Customer 的属性

从 FACT 表中,我需要计算最畅销的商品和最不受欢迎的商品

这个好的设计是否有两个 FACT 表并连接 FACT 表进行计算?

标签: sqldatabase-designdata-modelingdata-warehousestar-schema-datawarehouse

解决方案


假如说 :

一个项目有很多订单,一个订单包含很多项目。

您可以有如下事实记录:CustomerId=5 订购了 2 件商品

OrderId OrderListId ItemId CustomerId ItemPrice   TotalCost   CreatedDate
1       1           12     5          100         350         17-01-2021
1       1           15     5          250         350         17-01-2021

你不加入事实表。通过按公共维度单独汇总每组度量值,然后在这些维度上连接汇总集,从而组合事实。

您的模型可能如下所示:

在此处输入图像描述

在事实中重新考虑 updated_date :

事实表不应更新。事实衡量值几乎永远不应该更新有几个非常好的理由。...事实表处理:在 SQL Server 数据仓库数据库服务器上执行表更新可能是一项非常昂贵的操作!事实表可以而且应该非常大。


推荐阅读