在维度建模的上下文中,作为典型案例,在维度表中有代理键来跟踪行的变化是很棒的( http://www.kimballgroup.com/2006/07/design-tip-81-fact-表代理键/)。
代理键的实现常用的三种方式 1) 序列号 2) 版本号 3) 散列键(数据保险库使用)
我的问题是:为什么在我见过的大多数维度建模中都首选序列号。
非常感谢
在维度建模的上下文中,作为典型案例,在维度表中有代理键来跟踪行的变化是很棒的( http://www.kimballgroup.com/2006/07/design-tip-81-fact-表代理键/)。
代理键的实现常用的三种方式 1) 序列号 2) 版本号 3) 散列键(数据保险库使用)
我的问题是:为什么在我见过的大多数维度建模中都首选序列号。
非常感谢
我认为通常使用序列号有几个原因,但我不认为这在所有情况下都是一种明显优越的做事方式。
我以前没有见过这样的例子,谷歌搜索似乎出现了这个问题和一些关于将其附加到现有字段的引用,所以我假设你正在谈论将版本附加到序列或哈希或其他标识符。
如果您不打算使用序列号,这可能是我的首选。虽然我认为需要一些非常具体的情况
将信息编码到代理键中的少数情况之一并不意味着为未来的发展刺伤自己的脚。
如果您使用的是类型 1 缓慢变化的尺寸,那么您只是在自找麻烦。更新了属性?尝试在不删除一半数据库的情况下更新主键,看看你能走多远。
因此,这取决于您的情况,但是序列号非常容易实现,并且在几乎所有情况下其缺点几乎可以忽略不计,以至于它可以作为一个舒适的默认值。因此,选择另一个选项通常属于“您必须解释为什么这样做”的类别。