尺寸建模

时间:2013-03-25 23:58:54

标签: sql-server-2012 data-warehouse dimensional-modeling

我正在尝试为多个表格中的客户首选项构建维度。

源表的示例如下:

enter image description here

我已经建立了Dim Customer,现在我必须设计Customer Preference Dimension。新的维度将是SCD1;始终拥有客户的最新偏好。但是给定的客户可以有多种组合。

现在我的问题:为每个Preference表设计维度是否合适?我应该将客户的所有Preference属性放入一个单独的Dimension Table中,如下所示:

enter image description here

突出显示的列将成为客户的唯一偏好。 *客户可以有多种偏好。

如果在未来的业务中引入了更多偏好并希望包含在维度中,该怎么办?然后我必须将这些属性带到上表中,以及使这些属性成为唯一的键。

最好是按照偏好设置单个维度,还是将所有维度合并为一个大维度。

建议请。

修改

除了我的阅读之外,我了解到我必须在我的客户目标和其他客户偏好维度之间设计桥牌表。

我计划的是为所有组合创建每个首选项类型的CustomerPreference维度。并将这些映射到桥接表中,其中可以存在多对多的客户偏好关系。

示例如下

这是正确的做法还是最佳做法。

enter image description here

[或]这是正确的方法吗?

enter image description here

编辑:27-03-2013

根据Pondlife的建议,采用Snowflake方法如下:

enter image description here

2 个答案:

答案 0 :(得分:4)

你没有说过你的事实表,这可能是决定的关键因素。如果首选项仅适用于客户并且与事实完全无关,那么您可以使用snowflake model添加仅链接到客户维度的客户首选项表。

但是你提到了“每个偏好的个人维度”,这表明偏好可能与事实直接相关。在这种情况下,如果您每个事实的可能偏好数量有限(从您提供的信息中并不是很清楚),包含所有可能的首选项组合的mini-dimension可能是更好的选择。

如果这没有帮助,我建议您澄清以下几点:

  1. 事实表代表什么
  2. 如果偏好与事实或客户相关联
  3. 如果一个客户(或事实?)最多有3个偏好(营销,平台和流派)或未定义的数字(例如3个营销偏好,10个平台偏好,2个流派偏好)

答案 1 :(得分:0)

您已经为客户偏好设置了可怕的“实体 - 属性 - 价值”模型,因为开发人员认为,当添加新的首选项时,不必更改数据库,从而使他们的生活更“轻松”。当然,这会让你的生活更加艰难。

我目前在类似的情况下工作,并且发现建模客户偏好的最简单方法是使用属性桥表,因为您已经发现了自己,特别是当它真的很多时。

需要提出的真正问题是将对这些偏好进行何种分析?如果您只是根据偏好过滤客户,然后与这组客户进行事实,许多桥梁应该可以解决问题。