Кейс: модель данных для записи к врачу
Вопрос
Спроектируй модель данных для онлайн-записи в сеть клиник: врачи работают в разных филиалах, у них расписание, пациенты записываются на услуги.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Сущности: пациент, врач, филиал, специальность, услуга, слот расписания, запись
Связи: врач и филиалы M:N, врач и специальности M:N, услуга и специальность
Слот: врач, филиал, время начала и конца, статус; уникальность против двойной записи
Запись: пациент, слот, услуга, статус и история (создана, перенесена, отменена, неявка)
Персональные и медицинские данные отдельно, доступы
Что могут спросить следом
- Как запретить двойную запись в один слот на уровне БД?
- Генерировать слоты заранее или считать на лету?
Разбор
Основные сущности: пациент, врач, филиал, специальность, услуга, слот, запись. Врач работает в нескольких филиалах и может иметь несколько специальностей, это две связи многие ко многим. Услуга привязана к специальности и имеет длительность. Слот это конкретный интервал врача в филиале со статусом свободен, занят, заблокирован. Запись связывает пациента, слот и услугу, у неё свой статус и история переходов. Двойную запись запрещаю ограничением уникальности на слот для активных записей, например частичным уникальным индексом. Медицинские данные и документы пациента храню отдельно с усиленным доступом, в записи только ссылка.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.