Я собираюсь предположить, что когда интервьюер спрашивал о первичном ключе для таблицы фактов, он спрашивал, нужен ли ему суррогатный первичный ключ (т. Е. Уникальный номер, обычно генерируемый последовательностью или автоинкрементом).
В методологии Kimball суррогатные первичные ключи используются в таблицах измерений.За редким исключением таблица фактов не нуждается в суррогатном первичном ключе.Таблица фактов имеет первичный ключ, но это составной ключ, состоящий из подмножества столбцов внешнего ключа, указывающих назад на измерения, и это делает уникальный идентификатор пригодным в качестве первичного ключа.Этот ключ является физическим в том смысле, что вы определяете его при создании таблицы, а базы данных обычно создают индекс для определенного первичного ключа.
Исключениями из этого обобщения являются:
- Иногда бизнес-правилаучитывать одинаковые строки фактов.В этом случае вам нужен суррогатный ключ для однозначной идентификации записи факта.
- Некоторые инструменты ETL работают лучше, если у вас есть суррогатный первичный ключ, особенно когда вы сталкиваетесь с необходимостью ETL для обновления / вставки строки.и затем удалите предыдущую запись факта.
В этих случаях предпочтительным является суррогатный первичный ключ.Однако это не то, что вы предоставляете конечному пользователю, а просто удобство для удовлетворения технических потребностей.