Вам не нужно person_id
как часть вашего первичного ключа в таблице person_contact
.pcont_id
должен быть первичным ключом, если между двумя таблицами есть отношение один ко многим.
Нужен ли вообще PK pcont_id?
Я предлагаю, он должен быть там и должен быть первичным ключом вашей таблицы, при условии, что вы можете иметь несколько контактов для одного человека.
Если у одного человека может быть только один контакт, в этом случае вам не нужна эта таблица,Вы можете хранить данные непосредственно в таблице лиц.
Если вы все еще хотите хранить его отдельно, тогда вам не нужен столбец pcont_id
, ваш столбец person_id
должен быть помечен как первичный ключ.
Когда следует использоватьодин PK в отношении один-ко-многим, и когда лучше использовать составной PK?
Составной первичный ключ используется, когда у вас есть junction table/associative table
для сопоставления многих ко многимотношения.В случае отношения «один ко многим» вам не нужен составной первичный ключ со столбцом внешнего ключа.