2

我们有一个项目用于将数据从外部源加载到 Data Vault 数据仓库中。数据是雇主和雇员之间的工资报表。

在开始建模时,我们找到两个业务密钥,即雇主的公司 ID 和员工的社会安全号码 (SSN)。基于此,我们得到两个中心,一个用于雇主,一个用于员工。在这两个中心之间添加链接时,我们注意到,对于雇主和雇员的每个组合,可能(将会)有不止一个工资报表。这意味着我们不能用两个集线器和一个链接来模拟这种关系。

从逻辑上讲,这可以通过添加第三个工资报表中心来处理。然后我们可以为所有这三个集线器建立一个链接。我们的问题是我们没有任何用于薪水报表的业务密钥!

作为一种解决方法,我唯一的想法是使用公司 ID、SSN 和薪水报表期间为薪水报表生成人工业务密钥。在数据仓库中生成业务密钥确实感觉不对,但我们还有其他选择吗?是否可以使用 Data Vault 进行不同的建模?

任何想法和想法都受到高度赞赏。

4

1 回答 1

3

您在这里注意到的是 Data Vault 变得非常困难的情况。

您的情况是每个数据对象都没有业务密钥。

Data Vault 架构需要业务密钥。

您通常有 4 个选项。

  1. 拥有一个没有业务键的业务对象(在本例中为薪水报表)是一种反模式。说服薪资系统的开发人员为每个薪资报表提供业务密钥或唯一的交易编号。

  2. 就像您提到的那样,创建一个复合键。这种方法最大的问题是:你能确定复合键总是唯一的吗?假设您使用公司 ID、SSN 和期间。如果工资制度出现错误,他们不得不在同一时期额外支付怎么办?在这种情况下,您将有 2 行用于相同的复合键(公司 ID、SSN 和句点)。

  3. 创建您自己的业务密钥。编写一个小程序,从工资系统中获取数据,并添加自己的业务密钥。这可以像具有主键的数据库表一样简单,然后将该主键用作业务键。

  4. 不要为此对象使用 Data Vault。如果一个对象不适合 Data Vault,或者如果有另一个结构更适合数据,那么使用它。

于 2019-03-24T14:30:56.573 回答