2013-03-01 79 views
0

我是DW的新人,我需要为电子商务网站创建一个非常简单的仓库。数据仓库设计 - 如何设计事实表?

维度表

  • 日期维度表(ID,年,季,月,日)
  • 时间维度表(ID,小时,分钟)
  • 产品维度表(ID,产品名称,价格,类别ID)
  • 产品类别维度表(ID,类别名称)

事实表

    每个产品
  • 销售(日期ID,产品ID,销售数量,价格和)

这一事实表是适合喜欢“在6月有多少产品卖”问题等等。

但是我需要回答问题,比如“6月份哪些类别的产品销量最多?”或者“星期三最成功的商业时间是什么?”。

我看到两种可能性:

  1. 我可以添加新列(类别ID或时间ID)为产品的事实表。但是这个ID会改变表格的粒度
  2. 我可以为类别创建另一个事实表,其中将包含关于类别的事实。但是这(在我看来)是浪费磁盘空间,不是吗?

哪种可能性是正确的?

+0

可能downvoter解释这个问题有什么问题吗?如果需要,我可以添加一些缺失的信息。 – Artegon 2013-03-02 06:22:01

回答

1

您的销售事实表应该是订单项

你可以添加一个退化的维度只为这一天的时间,或者在小时的粮食增加时间维度表。

为什么不给dim_product添加分类名称?

+0

由于产品可能列在更多类别中。 – Artegon 2013-03-02 05:58:55

+1

很好,它只是一个产品层次结构。您可以在产品昏暗的许多记录中拥有相同的类别。数据重复在星型模式下是可以的。 – 2013-03-04 01:47:11

0

如果你在每件商品的销售水平上创造你的Fact_table,即几乎在交易谷物上,我认为你可以添加类别id到引用一个Dim_category的Fact_table。 这肯定会增加Fact_table的磁盘存储空间,但在稍后的阶段,这个Datamart将能够回答您的任何问题。

0

是。始终以业务流程中最细化的方式创建事实(如果您的源系统允许) - 在这种情况下,每种产品在特定的数据和时间向客户进行每次销售。如果(并且只在需要)性能需要时(并且只在需要时)才能始终创建汇总数据。

与返工工作相比,磁盘空间相当便宜。