Первичный ключ, сгенерированный из внешней системы - PullRequest
5 голосов
/ 26 сентября 2011

Каковы общие рекомендации для следующего сценария:

Вам необходимо создать таблицу, в которой PK - это значение, которое генерируется из внешней системы. Это уникально, похоже на использование SSN.

Имеет ли смысл, чтобы это было первичным ключом? Особенно учитывая, что он будет использоваться в отношениях внешнего ключа с двумя другими таблицами. Или было бы лучше создать поле идентификатора с автоинкрементом в дополнение к уникальному ключу и использовать идентификатор автоинкремента в отношениях таблицы?

Ответы [ 3 ]

7 голосов
/ 26 сентября 2011

Лично я бы не стал доверять идентификатору из внешней системы.Конечно, они обещают вам сегодня, что он будет уникальным, никогда не изменится и никогда не будет использоваться повторно.Но потом, однажды в будущем ...

Создайте свой собственный автоматически увеличивающийся идентификатор и используйте его для отношений PK и FK.Сохраняйте их идентификационные данные только для справки.

0 голосов
/ 26 сентября 2011

Использование собственного автоматически сгенерированного идентификатора даст вам еще одно поле в таблице с избыточной информацией. Если внешний идентификатор похож на SSN, я думаю, вы вряд ли получите дубликаты. Я решил сделать внешний идентификатор как PK.

0 голосов
/ 26 сентября 2011

Я бы всегда создавал свой собственный суррогатный первичный ключ и устанавливал естественный идентификатор в качестве вторичного уникального ключа.

Скотт В. Амблер хорошо сравнивает две стратегии здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...