Ваша формулировка не точная.Таблица не может иметь 2 основных ключа.Однако он может иметь состав (составной) Первичный ключ , который состоит из 2 или более столбцов.
CREATE TABLE Person
( first_name
, family_name
, age
, ...
, PRIMARY KEY (first_name, family_name)
)
Оставляя в стороне дискуссии о суррогате противестественные ключи, когда у вас есть такой составной первичный ключ, любой внешний ключ из другой таблицы должен быть составным и ссылаться на ваш составной первичный ключ:
CREATE TABLE Doctor
( first_name
, family_name
, specialty
, ...
, PRIMARY KEY (first_name, family_name)
, FOREIGN KEY (first_name, family_name)
REFERENCES Person (first_name, family_name)
)
Этот тип ограничения внешнего ключа, где PRIMARY KEY
таблицы (Doctor
) также является FOREIGN KEY
для другой таблицы (Person
) является общим решением для отношения 1::0..1
(также называемого супертипом / подтипом).