Я пытаюсь разработать нормализованную реляционную базу данных, в которой у пациента есть *контактное лицо* (лицо, с которым связываются в случае чрезвычайной ситуации). У меня также есть таблица с именем contact_num, в которой в качестве внешнего ключа используется идентификатор пациента. Но как я могу реализовать наличие контактного лица в экстренных случаях (у которого есть номер телефона), которое может быть или не быть другим пациентом? Должен ли я реализовать таблицу Emergency_contact_num? Или какая-то унарная связь? например было бы полезно
Экстренное лицо реляционной базы данных + контактный номер?
Ответы (2)
Я думаю, у вас могла бы быть книга контактов, хранящаяся в базе данных.
Таким образом, для пациента запись в базу данных может быть:
'id' => '1'
'first_name' => 'john'
'last_name' => 'doe'
'emergency_contact' => '2'
Конечно, вы также должны включить любую важную информацию об этом человеке в эту таблицу (например, номер телефона). Для экстренного контакта база данных может быть:
'id' => '2'
'first_name' => 'lisa'
'last_name' => 'joe'
'emergency_contact' => 'none'
Если ваша цель — нормализация, то контактная информация — это контактная информация независимо от того, какую роль человек играет в операции. Воспользуйтесь предложениями контактной книги, но не включайте экстренный контакт и т. д. Пациент есть пациент, и у него может быть любое количество требуемых сведений, которые не имеют ничего общего с контактной информацией. В этот момент вы можете либо включить контактную информацию для экстренных случаев как часть основной таблицы пациентов, либо, если вы ожидаете возможность нескольких контактов для одного пациента, у вас может быть таблицаpatient_Contact, которая будет содержать идентификатор пациента из таблицы пациентов и идентификатор контакта для каждого контакта в списке. Это обеспечило бы максимальную гибкость для контактов, имеющих несколько отношений с разными участниками процесса, просто сохраняя перекрестную ссылку.
Таким образом, вместо того, чтобы включать пациента как FK в контакт, включите идентификатор контакта в пациента. вы также можете включить контактные данные пациента (их номер телефона, адрес и т. д.) в таблицу контактов и указать идентификатор контакта как PatientContact. теперь у вас есть только одна таблица, в которой хранится имя, номер телефона, адрес и т. д.