【发布时间】:2016-06-12 05:14:29
【问题描述】:
我正在尝试为我的一个项目(销售订单)设计数据仓库的维度建模。我是这个概念的新手。
到目前为止,我可以理解产品,客户和日期可以存储在维度表中,订单信息将存储在事实表中。
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 作为外键的不同表中。
提前致谢。
【问题讨论】:
-
您想从订单头表中保存哪些信息?您在订单级别详细信息中创建一个事实,然后制定如何保存订单标题信息。例如,客户仅出现在源系统的标题中,但在您的订单事实表中,它将针对所有单个产品订单重复出现。这没有问题。唯一的挑战是当您在标题上显示总购物金额时 - 您不能在多个产品记录中重复此操作。
-
有两种主要的解决方法: 1. 按记录数划分运费,并将其分布在所有记录中; 2.添加另一条记录,假装运输是产品。无论您做什么,您都需要保留原始订单号,以便您可以衡量“每个订单的平均销售额”和“每个订单的平均产品”等内容。无论如何,这个标题/细节维度建模在互联网上被讨论得令人作呕。你为什么不做一些研究并提出一个具体的问题。
-
您可能应该使用订单行项目作为事实表的粒度
标签: data-warehouse dimensional-modeling fact-table