Назначение суррогатного ключа

Интересно, почему разработчик создает свой собственный суррогатный ключ в качестве первичного ключа в своем хранилище данных, хотя таблица уже имеет первичный ключ.

В телекоммуникационной системе в качестве первичного ключа используется gsm_no или account_id. Почему разработчики в информационном доме, которые берут эти таблицы из другой системы, добавляют новый первичный ключ для своей системы, создавая суррогатный ключ (такой как customer_sk)?

2 ответа

Решение

Вторая, но не менее важная причина заключается в том, что очень часто первичные ключи не являются целыми числами. Трудно обнаружить, что ERP или CRM не имеют значимых PK в типе varchar. Производительность делает метры!

В-третьих, если вы внедряете SCD типа 1, вы можете хранить исторические значения измерения (т. Е. Отдел, изменяемый сотрудником). И, как говорит наш друг, несколько источников.

Это общепринятая "хорошая практика"; хранилища данных должны быть изолированы от производственных систем с точки зрения зависимостей, и это включает в себя изоляцию от существующих первичных ключей. Вероятно, лучшая причина для этого - повторное использование ключа в различных исходных системах; если хранилище данных извлекается из нескольких источников или исходный источник заменяется другим источником, вы явно определяете отношения отображения между источниками на уровне DW, а не полагаетесь только на ключ.

http://christianvdheever.wordpress.com/2012/11/01/surrogate-keys-and-foreign-keys-in-a-dimensional-data-model/

Другие вопросы по тегам