2011-09-26 56 views
4

以下情况的一般准则是什么?从外部系统生成的主键

您需要创建一个表,其中PK是从外部系统生成的值。它是独一无二的,类似于使用SSN。

这是否是有意义的主键?特别是考虑到它将用于与其他两个表的外键关系。或者,除了唯一键之外,创建自动递增ID字段还是更好,并在表关系中使用自动递增ID?

回答

6

个人而言,我不会信任外部系统的ID。当然,他们会在今天向你承诺它将是独一无二的,永不改变,永远不会被重复使用。但是,在未来的某一天...

创建您自己的自动递增ID并将其用于PK和FK关系。保留其ID只作为参考。

0

我会一直创建自己的代理主键,并将自然标识符设置为辅助唯一键。

Scott W Ambler对两种策略here有很好的比较。

0

使用你自己的自动生成的ID会给你一个表中的另一个领域与多余的信息。如果外部身份证与SSN相似,我想你几乎不会收到重复。我选择将外部ID作为PK。

+0

与使用递增整数相比,您是否发现使用非顺序标识符(如SSN)会导致索引碎片问题? –