Я проектирую базу данных MySQL для стартапа, работающего с медицинскими картами пациентов. У меня есть несколько таблиц, которые не могут иметь уникальных ключей: медицинские условия, аллергии, семейный анамнез и т. Д. Например, таблица medications
может иметь поля patient_id
, med_name
, usage_dates
, dosage
, reason
и т. д. Единственный гарантированный уникальный ключ - это все поля вместе.
Веб-приложение может легко получить эти данные для данного пациента, выбрав значение patient_id
, но если невозможно сохранить указатели на строки в базе данных с несколькими пользователями, оно кажется мне неуклюжей системой для редактирования или удаления строки в этой таблице. СУБД должна будет выбрать значение для каждого поля, чтобы найти правильную строку. Из того, что (мало) я знаю о базах данных, я полагаю, что это может быть неэффективно в большой базе данных.
Было бы более эффективно создать новое поле с идентификационным номером, который будет функционировать в качестве первичного ключа в каждой из этих таблиц, или СУБД намного умнее меня, и это совершенно не нужно?