Экстренное лицо реляционной базы данных + контактный номер?

Я пытаюсь разработать нормализованную реляционную базу данных, в которой у пациента есть *контактное лицо* (лицо, с которым связываются в случае чрезвычайной ситуации). У меня также есть таблица с именем contact_num, в которой в качестве внешнего ключа используется идентификатор пациента. Но как я могу реализовать наличие контактного лица в экстренных случаях (у которого есть номер телефона), которое может быть или не быть другим пациентом? Должен ли я реализовать таблицу Emergency_contact_num? Или какая-то унарная связь? например было бы полезно


person Mark Johnson    schedule 02.05.2013    source источник
comment
Прежде чем пытаться что-либо спроектировать, вы должны убедиться, что знаете бизнес-правила своего учреждения. В частности, убедитесь, что контакт с другим пациентом разрешен.   -  person Dan Bracuk    schedule 02.05.2013
comment
да я это уже проверил. Спасибо, хотя @DanBracuk   -  person Mark Johnson    schedule 02.05.2013


Ответы (2)


Я думаю, у вас могла бы быть книга контактов, хранящаяся в базе данных.

Таким образом, для пациента запись в базу данных может быть:

'id' => '1'
'first_name' => 'john'
'last_name' => 'doe'
'emergency_contact' => '2'

Конечно, вы также должны включить любую важную информацию об этом человеке в эту таблицу (например, номер телефона). Для экстренного контакта база данных может быть:

'id' => '2'
'first_name' => 'lisa'
'last_name' => 'joe'
'emergency_contact' => 'none'

person VCNinc    schedule 02.05.2013
comment
Суть в том, что пациенты и лица, контактирующие с экстренными службами, — это люди, у которых много общих черт, например, номера телефонов. У вас, вероятно, была бы такая таблица, как допуски (я упрощаю, поскольку существует множество способов сделать что-то настолько сложное), которая будет включать такие вещи, как дата входа и дата выхода, а также внешний ключ к вашей таблице контактов. Те люди, которые являются contact_id в госпитализации, — это люди, которые были пациентами, и именно поэтому вы отличаете их от обычных пожилых людей, которые оказались контактными лицами в экстренных случаях. - person Chud; 02.05.2013

Если ваша цель — нормализация, то контактная информация — это контактная информация независимо от того, какую роль человек играет в операции. Воспользуйтесь предложениями контактной книги, но не включайте экстренный контакт и т. д. Пациент есть пациент, и у него может быть любое количество требуемых сведений, которые не имеют ничего общего с контактной информацией. В этот момент вы можете либо включить контактную информацию для экстренных случаев как часть основной таблицы пациентов, либо, если вы ожидаете возможность нескольких контактов для одного пациента, у вас может быть таблицаpatient_Contact, которая будет содержать идентификатор пациента из таблицы пациентов и идентификатор контакта для каждого контакта в списке. Это обеспечило бы максимальную гибкость для контактов, имеющих несколько отношений с разными участниками процесса, просто сохраняя перекрестную ссылку.

Таким образом, вместо того, чтобы включать пациента как FK в контакт, включите идентификатор контакта в пациента. вы также можете включить контактные данные пациента (их номер телефона, адрес и т. д.) в таблицу контактов и указать идентификатор контакта как PatientContact. теперь у вас есть только одна таблица, в которой хранится имя, номер телефона, адрес и т. д.

person Bill Melius    schedule 02.05.2013