如何使用现在的业务密钥处理数据仓库中心?

时间:2018-10-05 11:50:33

标签: database data-modeling data-warehouse data-vault

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

在开始对此建模时,我们找到两个企业密钥,即雇主的公司ID和雇员的社会安全号码(SSN)。基于此,我们得到了两个中心,一个用于雇主,一个用于雇员。当在这两个枢纽之间添加链接时,我们注意到,由于雇主和雇员的每种组合可能会有一个以上的工资表。这意味着我们无法使用两个集线器和一个链接来建立这种关系的模型。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

Data Vault体系结构需要业务密钥。

您通常有4个选择。

  1. 具有不带业务密钥的业务对象(在这种情况下为工资报表)是一种反模式。说服薪资系统的开发人员为每个薪资报表提供一个业务密钥或唯一的交易号。

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

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

  4. 请勿为此对象使用Data Vault。如果某个对象不适合Data Vault,或者存在另一个更适合该数据的结构,请使用该结构。