Как хранить несколько телефонов водителя разных типов в DWH?

В DWH информация о заказах такси смоделирована следующим образом.

Короткий ответ

Что ответить на собеседовании

В DWH информация о заказах такси смоделирована следующим образом.

Подробный разбор

Ответ с пояснениями

Условие

В DWH информация о заказах такси смоделирована следующим образом.

fct_order

  • id
  • create_dt
  • cost
  • driver_id dim_driver
  • driver_id
  • name
  • phone

Как можно доработать модель данных, чтобы хранить информацию о нескольких телефонах водителя с указанием их типа (основной, дополнительный, emergency)?

Решение

Вынесите телефоны в отдельную таблицу связи с водителем: одна строка описывает один номер определённого типа. Модель заказа менять не требуется, если телефон не является атрибутом конкретного заказа.

Например: driver_phone(id, driver_id, phone, phone_type, valid_from, valid_to). phone_type принимает согласованные значения primary, additional, emergency; driver_id ссылается на водителя. Ограничение «один основной действующий телефон» задают отдельно, если оно нужно бизнесу. При JOIN с заказами учитывайте отношение один-ко-многим, иначе сумма стоимости заказов может умножиться на число телефонов.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку