首页 > 解决方案 > 代理与自然主键,*特别*在数据仓库中。这有争议吗?

问题描述

代理与自然主键在数据仓库领域是否普遍存在争议?需要明确的是-无论如何,自然键都会在那里。我所说的代理键是指源系统中不存在的键,但它们是作为数据仓库的 ETL 的一部分创建的。

是否依赖源系统自然键作为主键,还是将代理键分配为 ETL 的一部分是否存在争议?

我的(有限的)理解一直是,在操作系统中——根据情况/人的不同,它可以采用任何一种方式,但在数据仓库设置中——代理键是主键的无争议规范。

准确,还是比这更有争议?

标签: sqlkeyprimary-keywarehouse

解决方案


对于几乎任何实际的数据仓库解决方案,自然键几乎都是必不可少的(业务键域键实际上是比自然键更好的术语)。问题是是否以及何时使用代理键以及,而不是代替其他键。管理代理键会增加很多复杂性和一些重大开销,所以最好的答案是“它取决于......”。

如果您的仓库基于 HDFS 等分布式一次性写入技术,那么代理可能毫无意义。如果您正在使用一些历史数据捕获机制,例如 Microsoft 的临时表或 Oracle 的闪回,那么您可能会发现不需要代理。如果您采用基于 5NF 或 6NF 的时间建模方法,那么您通常也不需要代理,但您可能希望将它们用于某些表。

如果您使用像 Data Vault 或 Kimball 的方法这样的模板,那么您可能会想要使用代理,因为这就是它在某人的书中所说的。


推荐阅读