作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的一个项目(销售订单)设计数据仓库的维度建模。我是这个概念的新手。
到目前为止,我可以理解产品、客户和日期可以存储在维度表中,而订单信息将存储在事实表中。
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 表
每个订单都有一个条目,产品和订单之间的关系将在另一个表中维护,该表将 order_id 和 product_id 作为外键。
提前致谢。
最佳答案
这是一个经典案例,您应该(可能)有两个事实表FactOrderHeader 和 FactOrderDetail。
FactOrderHeader 将有每个订单的记录,存储有关订单值(value)和任何订单级别折扣的信息;尽管在某些情况下它们可以表示为 OrderDetail 记录。
FactOrderDetail 会对每一个订单行都有一条记录,存储关于产品的信息,产品成本,产品销售价格,商品数量,商品折扣。等
您可能还需要一个 DimOrderHeader,如果您想要存储非事实信息,例如,订单的接收日期、交付日期和付款日期。
关于data-warehouse - 如何将数据存储在数据仓库中一个订单中包含多个产品的事实表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35694914/
我是一名优秀的程序员,十分优秀!