2017-05-26 39 views
0

我正在设计一个使用Data Vault模型的数据仓库。我的数据仓库中有一个名为Specialty的实体。有这些专业的查找表根据他们的代码具有从Specialty_CD到描述的一对一映射。该查找表中有数据条目的历史记录(特殊代码可以改变含义)以及我保管库中的所有卫星表。Data Vault模型和查找表

我遇到了一个奇怪的案例,我想将Data Vault中另一个名为“Professional”的实体链接到专业实体,专业人员可以拥有多个专业。但是,专业实体没有枢纽。我当前的解决方案只有一个Professional Hub,它为每个专业人员提供业务密钥和业务密钥哈希,一个将专业BK哈希映射到专业实践专业专业代码的链接表,以及从特殊代码到描述的查找表。这里的问题是链接表将集线器连接到查找表,而不是另一个集线器。我不禁感到这会打破Data Vault模型。这是否违反了Data Vault模型的规则?这是否毁了我整个模型的正常化?

我觉得为特色创建一个Hub会导致额外的数据检索连接。由于专业代码已经是专业描述的唯一标识符,我宁愿只为这个专业实体设置一个查找表,而不是专用实体的集线器和额外卫星,而这些我不需要。特别是因为它只是在数据仓库中服务于专业代码定义和描述的目的。

欢迎对此情况提出任何建议。通过将集线器连接到查找表,在这种情况下数据仓库是否毁了?这个专业实体是否值得在检索过程中额外的开销和联合创建一个中心和卫星?

谢谢!

回答

2

你已经回答了自己的问题: “的专业代码的特色是专业实践”

特产显然是一个核心的经营理念,是一个枢纽。它只有两个字段(代码和说明)的事实是不相关的。

数据保险库适用于模式。它不是“只在数据库中才能达到定义的目的”。如果它被删除,数据库仍然可用?例如,我从数据库将继续运行的地址中删除邮编。我会猜测,如果您删除了专业,那么某些报告可能会出现问题。

当您创建原始数据保险库时,您需要习惯这样一个事实,即您将拥有更多的表(大约7是常规指标)。

PCD

0

我觉得你的模型应该像这样

  • Specialty_HUB(HUB_ID(PK),Specialty_CD)
  • Specialty_SAT(SAT_ID(PK),HUB_ID(FK),Load_Date,说明)
  • Professional_HUB(HUB_ID(pk),Professional_PK)
  • Professional_SAT(SAT_ID(pk),(HUB_ID(fk),专业详情...)
  • Profesional_X_Specialty_LNK(LNK_ID(PK),Load_Date日期,结束日期,Professional_HUB_ID(FK),Specialty_HUB_ID(FK))

注意,在这个设计,你必须在链路表中END_DATE,你可以要求需要退出一个独立于专业或专业地位的协会,并且您需要确保您的ETL逻辑提取“删除”。如果与专业相关的代码也可以改变,那么在链接表和专业SAT之间需要另一层抽象,以确保链接保持稳定。