Выбор ответа Middle Моделирование: Кимбалл, звезда, SCD спрашивают часто обновлено

Зачем суррогатные ключи

Вопрос

Зачем измерению клиента суррогатный ключ customer_sk, если в источнике уже есть customer_id?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Чтобы хранить версии клиента (SCD 2) и не зависеть от ключей источников. При SCD 2 у одного customerid несколько строк-версий, и факт должен ссылаться на конкретную версию: это и есть суррогатный ключ.

Варианты ответа

  1. Чтобы таблица занимала меньше места: целый ключ короче строкового
  2. Чтобы хранить версии клиента (SCD 2) и не зависеть от ключей источниковправильный ответ
  3. Потому что customer_id из источника нельзя индексировать в хранилище
  4. Суррогатные ключи нужны только в снежинке для связи нормализованных таблиц

Разбор

При SCD 2 у одного customer_id несколько строк-версий, и факт должен ссылаться на конкретную версию: это и есть суррогатный ключ. Ещё он изолирует хранилище от смены и пересечения ключей источников. Место он экономит лишь иногда. Индексировать натуральный ключ можно. Суррогатные ключи используют и в звезде.

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

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