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

    (я не только корректность схемы тут рассматриваю)
    Вроде всё ок, только видно некоторое дублирование данных в пациенте и сотруднике.

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

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

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

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

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

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

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

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

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

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

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

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