Oracle DB最佳实践中的代理键

时间:2017-03-29 10:37:39

标签: sql oracle primary-key surrogate-key

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

使用串联创建的主键不是好习惯,你是对的。它将来会给你带来问题,找出并解决问题。 我认为最好的做法是创建一个由2个属性组成的密钥,如SYSTEMID,ID,ID,你可以保留系统中的旧ID,这两个属性给你独特的PK。

答案 1 :(得分:1)

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

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