一尘不染

星型模式设计-一栏尺寸

sql

我是数据仓库的新手,但我认为我的问题相对容易回答。我建立了一个星型模式,其中包含一个尺寸表“ product”。该表具有列“
PropertyName”和列“ PropertyValue”。因此,维度看起来像这样:

surrogate_key | natural_key (productID) | PropertyName | PropertyValue | ...
    1              5                          Size           20          ...
    2              5                          Color          red
    3              6                          Size           20
    4              6                          Material       wood

等等。

在我的事实表中,我始终使用尺寸的替代键。由于PropertyName和PropertyValue列的原因,我的自然键不再是唯一的/无法识别,所以事实表中的行太多了。

现在我的问题是,该如何处理属性列?最好将每个属性放到单独的维度中,例如维度大小,维度颜色等?我有大约30种不同的属性。还是应该为事实表中的每个属性创建列?还是将所有属性一维化?

在此先感谢您的帮助。


阅读 129

收藏
2021-05-16

共1个答案

一尘不染

您的尺寸表“产品”应如下所示:

surrogate_key | natural_key (productID) | Color | Material | Size | ...
    1              5                      red     wood       20     ...
    2              6                      red     ...

如果必须具有多个属性,请尝试将它们归入另一个维度。例如,如果您可以在另一种颜色或材料中使用相同的ID和相同的价格购买相同的产品,则颜色和材料可以是另一维的属性。您的事实表可以使用两个键来标识产品:product_id和colormaterial_id

2021-05-16