[This reference to Kimball group声明所有维度都应具有替代键,除了一些非常可预测的维(例如日期补偿)。
我的情况与SCD Type 1 Wiki page中所述的情况完全相同:
从技术上讲,不需要替代键,因为该行将由自然键(Supplier_Code)唯一。
数据是从操作系统中加载的,没有代理键,而我基于单个且唯一的xxx_code
列在ETL中计算代理键。 SCD类型1,满载。
在我的情况下,是否有任何理由使用代理密钥而不是从xxx_code
列中创建自然密钥?
代理键具有某些优点:
话虽如此,自然键有时可能非常有用。例如,我使用相当复杂的系统链。在每个系统中引入新密钥刚开始变得令人困惑-例如,这是产品代码。
尽管我偏爱代理键,但在这种情况下,自然键会很有用。重要的是,这样的键是主键,它们实际上不能更改值,并且它们(最好是数字)(对于外键关系更有效)。