В 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 с заказами учитывайте отношение один-ко-многим, иначе сумма стоимости заказов может умножиться на число телефонов.