Проектирование базы данных с одним объектом с множеством различных единиц

Я новичок в проектировании баз данных, и я работаю над проектом, который требует использования одного объекта (лекарства), который может быть привязан к любому количеству пациентов, и у каждого пациента может быть своя дозировка. Как лучше оформить стол в такой ситуации? Я мог бы использовать одну таблицу и просто хранить каждое отдельное лекарство и дозировку и привязывать это к уникальному пациенту. Но это дало бы мне повторяющиеся записи в таблице лекарств (одно и то же лекарство, но с другой дозировкой).

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

Я использую первый подход модели Entity Framework. Буду ли я использовать одну таблицу T_Patient_Medication и использовать каждый из двух идентификаторов таблиц в качестве комбинации первичного ключа, а затем использовать поле дозировки для этой комбинации? Если да, то как бы мне создать ассоциацию, чтобы связать эту таблицу с двумя другими. Какие-либо предложения?


person jbolt    schedule 12.05.2013    source источник


Ответы (1)


С верхней части моей головы:

- таблица лекарств (MedicineId, MedicineName и т. д.).

- таблица пациентов (PatientId, PatientName и т. д.)

- таблица пациентов и лекарств (MedicineId, PatientId, Dosage, дата, примечания и т. д.).

Другими словами, таблица лекарств содержит по строке для каждого уникального лекарства, пациент содержит одну строку для каждого уникального пациента.

Таблица «пациент-медицина» — это место, где встречаются эти две вещи: она содержит идентификатор пациента, идентификатор лекарства и другие уникальные сведения о пациенте, получающем это лекарство (т. е. имя доктора, дозировка, дата начала приема и т. д.). Лично я бы сделал так, чтобы каждая строка в таблице «пациент-медицина» также имела свой уникальный идентификатор, отдельный от комбинации идентификатора пациента и идентификатора лекарства (что вы собираетесь делать, когда тот же пациент возвращается к тому же лекарству в другое время, если ваш первичный ключ — Patientid+Medicineid). По моему мнению, каждая запись должна иметь свой уникальный идентификатор.

Между таблицами должны быть внешние ключи для обеспечения этой связи: то есть вы не можете добавить строку в таблицу «пациент-медицина», если в таблице пациентов не существует идентификатор пациента, а лекарство не существует в таблице лекарств; и, что не менее важно, предотвратить удаление строк из таблиц, в которых есть зависимые записи в других таблицах. Если вы потратите время и настроите все эти внешние ключи (отношения), в EF будет очень просто перемещаться по связанным записям.

Это, без сомнения, сложнее, чем это, но это основная идея реляционной таблицы.

person E.J. Brennan    schedule 12.05.2013
comment
Спасибо @EJBrennan, именно к этому я и направлялся, но не мог понять, как добавить это в представление модели. В итоге я получил ПАЦИЕНТА (от 1 ко многим) PAT_MED и ЛЕКАРСТВО (от 1 ко многим) PAT_MED. Я добавил поля количества и дозировки, чтобы заполнить таблицу. Спасибо за быстрый ответ - person jbolt; 12.05.2013