В качестве примера предположим, что у меня есть таблица фактов с двумя измерениями и одной мерой.
Таблица FactMoney
ProjectKey int
PersonKey int
Денежные средстваКоличество денег
Два измерения определяются следующим образом:
DimProject (измерение типа 0, т. е. статическое)
ProjectKey int
Имя проекта varchar (50)
DimPerson (медленно меняющееся измерение типа 2)
PersonKey int
PersonNaturalKey int
PersonName varchar (50)
EffectiveStartDate datetime
EffectiveEndDate datetime
IsCurrent бит
Пока все довольно просто. Теперь я представлю концепцию категории людей.
DimCategory
CategoryKey int
CategoryName varchar (50)
И построить отношения M2M между DimPerson и DimCategory
BridgePersonCategory
PersonKey int
CategoryKey int
Итак, у людей может быть 1..n категорий.
Моя проблема в том, что поскольку человек - это медленно меняющееся измерение, при изменении имени человека мы добавляем новую строку с персоналом и обновляем наши даты вступления в силу и текущие флаги, ничего страшного.
Но что нам делать с категориями человека? Нужно ли нам добавлять больше строк в таблицу моста каждый раз, когда появляется новая версия человека?
И, как следствие, если категории человека меняются, означает ли это, что нам нужно создать новую строку в таблице людей?