数据仓库模型和查找表

时间:2017-05-26 19:27:11

标签: sql-server data-warehouse lookup-tables data-vault

我正在设计一个使用Data Vault模型的数据仓库。我的数据仓库中有一个名为Specialty的实体。这些Specialties的查找表基于它们的代码,具有从Specialty_CD到Description的一对一映射。此查找表(特殊代码可以更改含义)和我的库中的所有卫星表都有数据条目的历史记录。

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

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

欢迎任何有关这种情况的建议。通过将集线器链接到查找表,数据库是否在此方案中被破坏?是否值得为此专业实体创建集线器和卫星的检索开销和额外连接?

谢谢!

2 个答案:

答案 0 :(得分:2)

您已回答了自己的问题: " 专业的专业代码 专业实践"

专业显然是核心业务概念,是一个枢纽。它只有2个字段(代码和描述)这一事实无关紧要。

Data Vault适用于模式。它不是仅仅在数据库中用于定义的目的"。如果它被删除,数据库仍然可以工作吗?例如,我从数据库将继续运行的地址中删除了邮政编码。我猜想如果你删除了Specialty,那么某些报告可能会出现问题。

在创建原始数据库时,您需要习惯这样一个事实:您将拥有更多表(大约7是一般指标)。

PCD

答案 1 :(得分: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,End_Date,Professional_HUB_ID(fk),Specialty_HUB_ID(fk))

请注意,在此设计中,您需要在链接表中使用End_Date,因为您可能需要独立于专业或专业的状态退出单个关联,并且您需要确保您的ETL逻辑选择“缺失”。如果与专业相关的代码也可以改变,那么你需要在链接表和专业SAT之间进行另一层抽象,以确保链接保持稳定。