如何在事实表中处理佣金支付状态 - STAR SCHEMA ECOMMERCE

时间:2017-12-14 20:40:33

标签: database oracle data-warehouse

我对数据仓库完全陌生,我不知道我是否做得对。

我正在设计一个基于供应商的电子商务平台,其中供应商会添加不同的产品,客户会购买它们,客户可以立即从不同的供应商订购,每个订单都有订单,客户,产品和供应商信息以及佣金支付状态(供应商为每次产品销售支付的佣金)。

我已使用星型模式将OLTP转换为OLAP,在星型模式中,我有以下事实和维度表。

事实销售表:

(在此表中我保留了产品销售记录,我必须保持记录,无论供应商是否支付了交易佣金)

  1. product_id(fk)
  2. customer_id(fk)
  3. vender_id(fk)
  4. order_id(fk)
  5. category_id(fk)
  6. time_id(fk)
  7. product_salesprice
  8. product_quantity
  9. 佣金支付状态(因为这不是衡量标准,我不能在事实表中调用它,对吗?但我在哪里调用呢?)
  10. 这个佣金支付表在我的OLTP订单详细信息表中,一旦供应商支付了他销售的特定产品的佣金,状态就是如此,这就是系统如何产生利润。

    我有以下尺寸:

    1. 客户
    2. 供应商
    3. 产品
    4. 顺序
    5. 时间
    6. 类别

1 个答案:

答案 0 :(得分:0)

你可以制作一个佣金支付状态维度,但很多人会认为这只有一个专栏。但是,您确实应该避免将这种文本类别放入事实表中。

相反,标准技术是将各种小标志和状态收集到一个维度中,称为“垃圾”维度。它使维度模型更易于使用,具有这些细节的维度。

这是误导性的命名,因为这些标志仍然可用于分析:只是它们不属于其他维度。你可以通过在每个组合中创建一行来构建它们。

在你的情况下,你只有其中一个开始,但随着你的设计进展,你可能会发现更多的候选人包含在'垃圾'维度。您可以将此维度称为“订单详细信息”或“订单状态”,具体取决于您在维度中包含的内容,使用其代理键和至少一个支付佣金状态列。