【问题标题】:Surrogate key in Oracle DB best practicesOracle DB 最佳实践中的代理键
【发布时间】:2017-03-29 10:37:39
【问题描述】:

我有几个系统,我需要将这些系统中的数据导入到一个公用表中。但 ID 仅在源系统内是唯一的。所以我需要创建自己的主键来唯一标识目标表中的这些数据。

解决问题的最佳做法是什么?我不想将主键创建为字符,也不想通过添加 1000000000 来生成 ID。与系统名称连接将构建字符数据类型。你有什么想法或解决方案吗?

感谢您的帮助。

【问题讨论】:

  • 请显示两个系统的相关表结构
  • 尽可能使用复合主键
  • 简单结构如:ID、variable1、variable2...下一个系统具有相同的属性和自己的特定ID。

标签: sql oracle primary-key surrogate-key


【解决方案1】:

使用连接创建的主键不是好的做法,你是对的。找出并解决关键问题也会给您带来未来的问题。 我认为最好的做法是创建由 SYSTEMID 等 2 个属性组成的密钥,ID 那里的 ID 你可以保留旧 ID 不受系统影响,这对 2 个属性为你提供了唯一的 PK。

【讨论】:

    【解决方案2】:

    没有最佳实践,只有意见。但通常将源系统密钥用作数据仓库(或您正在构建的任何数据存储)中的主键是一个坏主意。

    为目标表创建新列,至少代理主键;识别原始系统的东西也非常有用。在加载数据时填充它们。您可能希望将 (source system key, source system name ) 强制为唯一键,在这种情况下,您需要添加该原始系统标识符列。

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 2015-12-02
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2015-10-24
      • 2014-06-21
      相关资源
      最近更新 更多