1

我正在尝试为我的一个项目(销售订单)设计数据仓库的维度建模。我对这个概念很陌生。

到目前为止,我可以理解产品、客户和日期可以存储在维度表中,而订单信息将存储在事实表中。

Date_dimension 表结构将是

date_dim_id, date, week_number, month_number

Product_dimension 表结构将是

product_dim_id, product_name, desc, sku

order_fact 表结构将是

order_id, product_dim_id(fk), date_dim_id(fk), order_quantity, order_total_price, etc

如果一个订单有 2 个或更多数量的产品,在 order_fact 表中是否会有相同的重复条目order_id, date_dim_id

请帮助解决这个问题。我在这里很困惑。我知道在关系数据库中,order table每个订单都有一个条目,并且产品和订单之间的关系将保存在以 order_id 和 product_id 作为外键的不同表中。

提前致谢。

4

1 回答 1

1

这是一个经典案例,您应该(可能)拥有两个事实表 FactOrderHeader 和 FactOrderDetail。

FactOrderHeader 将记录每个订单,存储有关订单价值和任何订单级别折扣的信息;尽管在某些情况下它们可以表示为 OrderDetail 记录。

FactOrderDetail 将记录每个订单行,存储有关产品、产品成本、产品售价、商品数量、商品折扣的信息。等等

如果您要存储非事实信息,例如订单的获取、交付、付款日期,您可能还需要一个 DimOrderHeader。

于 2016-03-05T23:35:30.203 回答