Как сделать, чтобы две таблицы ссылались на один и тот же объект в базе данных? - PullRequest
0 голосов
/ 10 марта 2020

Извините за возможно некорректно поставленный вопрос, позвольте мне объяснить.

У меня есть таблица: Доктор и таблица: Пациент

У доктора и Пациента один и тот же первичный ключ, 'person_id'

Пациент также может быть врачом, и наоборот, в этом случае у него будет один и тот же человек_ид

Это разрешено? Какие отношения я бы использовал между этими таблицами? Разрешил бы я автоинкремент для первичных ключей на обоих? Как бы я смоделировал это в MySQL Workbench?

1 Ответ

1 голос
/ 10 марта 2020

Мне кажется, что Doctor и Patient являются подклассами Person. Если важно иметь связь между экземплярами Doctor и Patient, я бы сделал в этих таблицах person_id ссылку на иностранный ключ для новой таблицы суперкласса person:

например,

CREATE TABLE `person` 
( id            BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 'PK person.id'
, ...
) ...

CREATE TABLE `doctor` 
( person_id     BIGINT PRIMARY KEY COMMENT 'PK, FK ref person.id'
, ...
, CONSTRAINT FK_doctor_person FOREIGN KEY person_id REFERENCE person (id) 
    ON UPDATE CASCADE ...
, ...
) ...

CREATE TABLE `patient` 
( person_id     BIGINT PRIMARY KEY COMMENT 'PK, FK ref person.id'
, ...
, CONSTRAINT FK_patient_person FOREIGN KEY person_id REFERENCE person (id)
    ON UPDATE CASCADE ...
, ...
) ...

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

...