小编Mic*_*utz的帖子

在事实/维度星型模式上构建缓慢变化的维度

我听说过关于如何设计关于事实表中的内容和维度表中的内容的星型模式的教科书定义,例如:

事实表应包含有关对象的核心信息,维度应包含有关事实的信息

(转述)

但是,实际上在业务中,我看到过设计的星型模式,其中事实表包含代理键、业务键和对象的所有单值字段,每个维度存储对象的所有多值字段(因此是维度这个词)。例如,一个人可能是事实表中表示的对象。一个人有一个名字、一个年龄等,这些都在事实表中构成了可行的事实。一个人可能拥有多辆汽车,每辆汽车都有自己的属性,这些属性代表一个人的汽车维度,存储为一个维度表,其中包含多个列来描述每辆车的属性。在这个例子中,这个维度表还包括一个外键,表示来自事实表的相应行的业务键。

所以,如果我们同意这可能是一个合适的设计,我试图克服的问题是如何在多值维度表上执行 SCD 类型 2(历史)。对于我充满单一事实的事实表,这是显而易见的。我包括两个额外的列,有效日期和到期日期,并且我使用业务密钥链接公共记录,其中最近的记录具有NULL到期日期,并且同一业务密钥的所有其他历史记录都具有有效日期和到期日期表明他们是最新记录的时间点。

如何在表示多值列表的维度上使用相同的概念?我基本上想要相同的概念,我可以(1)识别当前列表(在这个例子中,一个人拥有的汽车)和(2)识别历史上任何给定时刻的列表。我可以在每个维度值上设置有效日期和到期日期吗?那么我如何区分一段时间后添加的值?还是删除的值?

但是,如果我们不同意这种设计方法,请告诉我什么行业标准,这样我才能正确地做到这一点。

data-warehouse database-design slowly-changing-dimension star-schema

5
推荐指数
1
解决办法
2642
查看次数