Назначение суррогатного ключа
Интересно, почему разработчик создает свой собственный суррогатный ключ в качестве первичного ключа в своем хранилище данных, хотя таблица уже имеет первичный ключ.
В телекоммуникационной системе в качестве первичного ключа используется gsm_no или account_id. Почему разработчики в информационном доме, которые берут эти таблицы из другой системы, добавляют новый первичный ключ для своей системы, создавая суррогатный ключ (такой как customer_sk)?
2 ответа
Вторая, но не менее важная причина заключается в том, что очень часто первичные ключи не являются целыми числами. Трудно обнаружить, что ERP или CRM не имеют значимых PK в типе varchar. Производительность делает метры!
В-третьих, если вы внедряете SCD типа 1, вы можете хранить исторические значения измерения (т. Е. Отдел, изменяемый сотрудником). И, как говорит наш друг, несколько источников.
Это общепринятая "хорошая практика"; хранилища данных должны быть изолированы от производственных систем с точки зрения зависимостей, и это включает в себя изоляцию от существующих первичных ключей. Вероятно, лучшая причина для этого - повторное использование ключа в различных исходных системах; если хранилище данных извлекается из нескольких источников или исходный источник заменяется другим источником, вы явно определяете отношения отображения между источниками на уровне DW, а не полагаетесь только на ключ.