Как создать троичные отношения, которые имеют слабую сущность? - PullRequest
0 голосов
/ 04 июня 2018

Я разрабатываю систему, в которой есть doctor, patient и diagnosis.Я сделал diagnosis слабой сущностью, потому что без врача или пациента не будет диагноза.

Теперь я хочу установить отношения под названием treatment между doctor и patient и diagnosis где конкретный врач будет лечить конкретного пациента с конкретным диагнозом.

как установить связь, учитывая, что diagnosis является слабой сущностью, у которой не будет собственного первичного ключа.

1 Ответ

0 голосов
/ 04 июня 2018

Я думаю, что ваше фундаментальное понимание слабых сущностей и первичных ключей неверно.

Кажется, вы думаете, что поскольку таблица слабых сущностей "включает" первичные ключи двух других таблиц, это означает, что она не может иметь свой собственный первичный ключ.

Это не тот случай.Первичный ключ может быть комбинацией нескольких столбцов, если эта комбинация уникальна для всех строк.

Исходя из того, что вы описываете, у вас должно быть что-то вроде этого:

Table Doctor
Primary Key:  DoctorID

Table Patient
Primary Key:  PatientID

Table Diagnosis
Primary Key:  DoctorID, PatientID (or an Identity column to form an artificial PK)
Foreign Key:  DoctorID References Table Doctor
Foreign Key:  PatientID References Table Patient

So finally, 

Table Treatment
Primary Key:  DoctorID, PatientID (, Identity column of Table Diagnosis if you created one)
Foreign Key:  DoctorID References Table Doctor
Foreign Key:  PatientID References Table Patient

Thisдостаточно, если врач может диагностировать каждого пациента только один раз, а также может предложить только одно лечение на пациента.Если любая из этих комбинаций может иметь более одного экземпляра, необходимо добавить третий столбец типа «Номер строки» в PK таблицы «Диагностика и / или лечение», чтобы включить его в PK для этой таблицы и сделать его уникальным.

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