GONJY_MONJY
@GONJY_MONJY
В поисках новых горизонтов

Есть схема БД для медицинского центра. Реализованы ли здесь первые три нормальные формы?

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

645969f3429be005327943.png

Вопросы:
  • Приведена ли эта база данных к трём нормальным формам
  • Правильно ли расставлены связи один к одному, один ко многим


P.S.
Если у вас есть на примете хороший ресурс, где хорошо объяснены значения стрелок, соединяющие сущности в диаграмме, то буду очень признателен, если поделитесь им.

Таблицы pharmacy и suppliers добавлены только для реализации просмотра лекарств в аптеке центра, ничего более. Просто фича для фронтенда.

Если качество изображения удручает, то вот ссылка на схему: ссылка
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
(я не только корректность схемы тут рассматриваю)
Вроде всё ок, только видно некоторое дублирование данных в пациенте и сотруднике.

Можно (не обязательно) попробовать ввести сущность "человек" (название черновое), у которого будет информация о паспорте, имени, и прочем.
И пусть пациент/сотрудник ссылается на него.

Можно так достаточно интересную связь сделать, когда один и тот же человек является одновременно и сотрудником и пациентом. (И например ввести запрет на выписывание лекарств самому себе)

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

Таблица с лекартсвами выглядит как справочник, тк никаких связей с другими таблицами не имеет.

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

Можно попытаться формализовать планы лечения - но это отдельная очень большая задача.

К таблице с адресами ещё есть смысл добавить номер ФИАС/КЛАДР/ГАР (уже запутался в этих системах) - это распространённая практика в России.

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

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

Не совсем понятно, что скрывается за ролями, и почему у пользователя не может быть нескольких ролей.

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

Вместо флага is_doctor в позиции следует всётаки какой-нибудь enum сделать, ибо потом захочется делить сотрудников на более чем две категории.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы