Ответ вслух Middle ER-модели и нормализация обновлено

Кейс: модель данных для записи к врачу

Вопрос

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

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

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

Что должно прозвучать в ответе

  • Сущности: пациент, врач, филиал, специальность, услуга, слот расписания, запись

  • Связи: врач и филиалы M:N, врач и специальности M:N, услуга и специальность

  • Слот: врач, филиал, время начала и конца, статус; уникальность против двойной записи

  • Запись: пациент, слот, услуга, статус и история (создана, перенесена, отменена, неявка)

  • Персональные и медицинские данные отдельно, доступы

Что могут спросить следом

  • Как запретить двойную запись в один слот на уровне БД?
  • Генерировать слоты заранее или считать на лету?

Разбор

Основные сущности: пациент, врач, филиал, специальность, услуга, слот, запись. Врач работает в нескольких филиалах и может иметь несколько специальностей, это две связи многие ко многим. Услуга привязана к специальности и имеет длительность. Слот это конкретный интервал врача в филиале со статусом свободен, занят, заблокирован. Запись связывает пациента, слот и услугу, у неё свой статус и история переходов. Двойную запись запрещаю ограничением уникальности на слот для активных записей, например частичным уникальным индексом. Медицинские данные и документы пациента храню отдельно с усиленным доступом, в записи только ссылка.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.