我正在设计一个使用Data Vault模型的数据仓库。我的数据仓库中有一个名为Specialty的实体。这些Specialties的查找表基于它们的代码,具有从Specialty_CD到Description的一对一映射。此查找表(特殊代码可以更改含义)和我的库中的所有卫星表都有数据条目的历史记录。
我遇到了一个奇怪的案例,我希望将Data Vault中名为“Professional”的另一个实体链接到Specialty实体,其中专业人员可以拥有多个专业。但是,专业实体没有Hub。 My Current解决方案只有一个专业中心,为每个专业人员提供业务密钥和业务密钥哈希,一个链接表,将专业BK哈希映射到专业实践专业的专业代码,以及从专业代码到描述的查找表。这里的问题是链接表将集线器连接到查找表,而不是另一个集线器。我不禁觉得这打破了Data Vault模型。这会违反Data Vault模型的规则吗?这会破坏我整个模型的正常化吗?
我觉得为Specialties创建一个Hub会导致数据检索的额外连接。由于专业代码已经是专业描述的唯一标识符,我宁愿只为这个专业实体提供一个查找表,而不是我不需要的专业实体的集线器和额外卫星。特别是因为它只是在数据仓库中服务于定义和描述专业代码的目的。
欢迎任何有关这种情况的建议。通过将集线器链接到查找表,数据库是否在此方案中被破坏?是否值得为此专业实体创建集线器和卫星的检索开销和额外连接?
谢谢!
答案 0 :(得分:2)
您已回答了自己的问题: " 专业的专业代码 专业实践"
专业显然是核心业务概念,是一个枢纽。它只有2个字段(代码和描述)这一事实无关紧要。
Data Vault适用于模式。它不是仅仅在数据库中用于定义的目的"。如果它被删除,数据库仍然可以工作吗?例如,我从数据库将继续运行的地址中删除了邮政编码。我猜想如果你删除了Specialty,那么某些报告可能会出现问题。
在创建原始数据库时,您需要习惯这样一个事实:您将拥有更多表(大约7是一般指标)。
PCD
答案 1 :(得分:0)
我认为你的模型应该是这样的
请注意,在此设计中,您需要在链接表中使用End_Date,因为您可能需要独立于专业或专业的状态退出单个关联,并且您需要确保您的ETL逻辑选择“缺失”。如果与专业相关的代码也可以改变,那么你需要在链接表和专业SAT之间进行另一层抽象,以确保链接保持稳定。