尺寸建模 - 在各种尺寸的复合键中使用的通用属性

时间:2015-01-21 15:55:23

标签: data-warehouse dimensional-modeling star-schema snowflake-schema

我有一个我以前没有遇到的情况。

我有相同ERP系统的多个实例,因卫星区域设置而异。 每个区域设置都分配有自己的ID。

在每个卫星位置内,数据库架构与其他位置相同,表格相同,值相同。

组合表时,让我们说来自两个或多个这些语言环境的部分,它们的自然操作键将是相同的,但附加属性数据可能不同。因为我需要能够链接到一个部分,根据它来自哪个卫星区域,我想我需要一个复合键 - 部件ID和卫星ID。

现在这对于这个单一维度来说没问题,但是,这个卫星ID在许多其他维度的其他地方使用的方式相同。它也是许多事实表的主要切片器。

我该如何对待这个属性?把它放在自己的维度和雪花?或者将值推入每个维度(重复),然后让事实表将唯一的FK保存到卫星维度?

1 个答案:

答案 0 :(得分:2)

在一个理想的世界中,解决方案是在ETL过程中用Natural Operational Keys代替每个PartID / SatelliteID唯一的代理键(对于处于相同情况的每个维度,例如I怀疑对于时间维度,你可以跳过代理键。)

当然,这需要在维度表中添加此代理键,而且还需要在事实表中添加此代理键。

如果您需要通过Satellite报告,Satellite ID列也将作为单独的维度出现。

这将是一个理想的解决方案。

快速而肮脏的解决方案可能与您建议在自然键旁边添加带有Satellite ID的其他列一样,您需要为每个维度(除了时间维度除外)和事实表添加此列。然后,每次进行连接时都需要包含“卫星ID”列。

在这种情况下,在报告工具中,您需要将Satellite ID作为复合ID的一部分,由自然操作密钥和卫星ID组成。

您还可以创建一个特定的卫星维度,可用于选择特定卫星的数据。