【发布时间】:2019-12-04 01:36:51
【问题描述】:
代理与自然主键在数据仓库领域是否普遍存在争议?需要明确的是-无论如何,自然键都会在那里。我所说的代理键是指源系统中不存在的键,但它们是作为数据仓库的 ETL 的一部分创建的。
是否依赖源系统自然键作为主键,还是将代理键分配为 ETL 的一部分是否存在争议?
我的(有限的)理解一直是,在操作系统中——它可以根据情况/人而采用任何一种方式,但在数据仓库设置中——代理键是主键的无争议规范。
准确,还是比这更受争议?
【问题讨论】:
-
“Surrogate”用来表示很多东西——请解释一下。自从使用 DB 实现的应用程序启动以来,有些人将“代理”用于 DBMS 选择的任何值,但有些人将其限制为已实现应用程序的用户看不到的 DB 中的值。前者将驱动程序的 ID 称为代理,但后者将其称为非代理和自然键。考虑到仓库用户不是应用程序用户,似乎您的意思是后者。 PS你的研究表明了什么?请参阅How to Ask 和投票箭头鼠标悬停文本。
-
在这种情况下,我的意思是代理项意味着 - 一个根本不是来自操作系统的密钥,而是在数据仓库本身中创建的。非常感谢 - 我的研究刚刚阅读(Kimball & Star Schema),它把代理作为仓库中的决定性事情。然而,一位同事讨厌使用代理人并表示这是有争议的。之后我用谷歌搜索了,但对话似乎更笼统,而不是特定于数据仓库,所以我不清楚。
-
请通过编辑而不是 cmets 澄清。
标签: sql key primary-key warehouse