Суррогатный внешний ключ - PullRequest
       3

Суррогатный внешний ключ

0 голосов
/ 05 сентября 2010

Оки, поэтому у меня есть две таблицы: person и person_email

PERSON
------
id (PK)
person_code (Unique key 1)
person_type (Unique key 1)
surname
forename

PERSON_EMAIL
------------
id (PK)
person_id (Unique key 1) (references person(id))
email_address (Unique key 1)

Это правильно ??

или должно быть:

PERSON_EMAIL
------------
id (PK)
person_id (references person(id))
person_code (Unique key 1)
person_type (Unique key 1)
email_address (Unique key 1)

1 Ответ

2 голосов
/ 05 сентября 2010

Ваше второе предложение включает в себя оба уникальных идентификатора таблицы PERSON. Если вы попытаетесь сделать это, рано или поздно вы обнаружите, что эти идентификаторы указывают на две разные строки. Кроме того, изменение person_code или person_type в таблице PERSON потребует соответствующего обновления таблицы PERSON_EMAIL. По этим причинам я хотел бы предложить вашу первую версию лучше.

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