2

我设计了与场所相关的仓库表 - DimPlaces、FactPlaces、DimGeography。如果您看到,这是简单的设计。所有位置都在 DimPlaces 中(Addrline1、Addrline2、地名等),地理层次结构在 DimGeography 中(城市、州、国家、邮政编码)。FactPlaces 是具有 DimPlaces 和 DimGeography 的外键的表。

我想保留历史数据,因为地点名称或其属性可能会发生变化,同时如果地点的位置发生变化,那么地理层次结构键也会发生变化。

我找到了设计模式 -

另一个有用的设计模式是除了维度的代理键之外,还向事实表添加持久帐户键。这将连接回维度中的当前行,以便更轻松地按当前维度属性报告所有历史记录。

您能否建议遵循此解决方案可以吗?如果是,我是否需要使用 UNIQUEIDENTIFIER 类型的 KEY 作为唯一值?

关于此的另一个问题 - 我有员工数据(DimEmployee 和 FactEmployee)。每个员工都与他工作的地方相关联。如何将这些员工表与地点表连接起来。我需要将 FACTEMPLOYEE 与 FACTPLACES 联系起来吗?

4

1 回答 1

0

我认为首先,他们指的是业务密钥?因此,如果您的维度表有两行,代理键 1 和 2,但它们都引用同一事物,因此 AccountId/ProductId/WhateverId 均为 1,那么您将拥有一些具有代理键 1 和业务键的事实表行1,以及后来的代理键 2 和业务键 1。

唯一标识符非常广泛,尽量避免在事实表和连接中使用它们(如果可能)。

对于你的最后一个问题 - 这真的更像是一个报告的事情。你需要这样做吗?那是人们需要看到的吗,他们需要削减吗?您可以考虑引用维度 - 地点表通过员工维度上的 placeId 链接到事实表的位置。或者,您可以有一个包含开始日期和结束日期的 factemployees 表。这取决于您需要实现的目标。

于 2013-02-25T17:07:21.357 回答