Отношение один ко многим: составной первичный ключ или один первичный ключ? - PullRequest
0 голосов
/ 14 мая 2018

У меня есть таблица person, содержащая личную информацию, и у меня есть другая таблица person_contact для хранения контактной информации об этом человеке (type показывает, является ли это запись телефона или электронной почты, а record содержит фактическуюномер телефона или адрес электронной почты).

Я разработал схему следующим образом: enter image description here

В person_contact Я объявил pcont_id и person_idкак PK, в то время как person_id является FK, ссылающимся на person.person_id.Нужен ли мне PK pcont_id вообще?Когда я должен использовать один PK в отношениях один ко многим, и когда лучше использовать композитный PK?

1 Ответ

0 голосов
/ 14 мая 2018

Вам не нужно person_id как часть вашего первичного ключа в таблице person_contact.pcont_id должен быть первичным ключом, если между двумя таблицами есть отношение один ко многим.

Нужен ли вообще PK pcont_id?

Я предлагаю, он должен быть там и должен быть первичным ключом вашей таблицы, при условии, что вы можете иметь несколько контактов для одного человека.

Если у одного человека может быть только один контакт, в этом случае вам не нужна эта таблица,Вы можете хранить данные непосредственно в таблице лиц.

Если вы все еще хотите хранить его отдельно, тогда вам не нужен столбец pcont_id, ваш столбец person_id должен быть помечен как первичный ключ.

Когда следует использоватьодин PK в отношении один-ко-многим, и когда лучше использовать составной PK?

Составной первичный ключ используется, когда у вас есть junction table/associative table для сопоставления многих ко многимотношения.В случае отношения «один ко многим» вам не нужен составной первичный ключ со столбцом внешнего ключа.

...