【问题标题】:Database design for ETL - Surrogate vs natural keyETL 的数据库设计 - 代理与自然键
【发布时间】:2014-02-05 13:25:56
【问题描述】:

我们目前正在重新设计我们的 ETL 数据库。

到目前为止,我们已经使用了以下带有自然键的设计: CustomerID、OrderID 和 SystemType

OrderID 可以针对不同的客户重复,这就是 SystemType 键帮助我们创建唯一索引的原因。我们的连接很复杂,因为我们总是需要在三个键上连接。

我们想使用代理键,但是当另一个数据提取进入系统时,我们无法识别行,因为我们的代理键未包含在客户的提取中。

我们应该使用三列作为主键还是应该将它们连接成一列并将其用作主键?我知道自动增量键不是一个选项。

您能否分享您对此类系统的首选密钥设计的看法?

谢谢,

马蒂亚斯

【问题讨论】:

    标签: database-design primary-key etl


    【解决方案1】:

    在 ETL 场景中,通常两者都有。您需要自然键来识别更新行中的新行,并且在加载数据时必须保持其唯一性。如果需要,然后将代理键分配给任何新行。其他表中的外键可以引用代理或自然键,无论您喜欢哪个。在 ETL 场景中,如果自然键属性已经作为外键引用存在于其他表中,那么通过模式级联代理键的成本可能比仅保留自然键值的成本高得多。

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 2011-08-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      相关资源
      最近更新 更多