Должен ли я создать таблицу безосновательных фактов или денормализовать свою таблицу

Я создаю хранилище данных из базы данных магазина, и у меня есть вопрос относительно дизайна моих измерений и фактов.

В базе данных магазина существует таблица для Person, Person_Address и Person_Address_Type. Они связаны другим табличным именем Entity_Address_ID, которое связывает три таблицы по их первичным ключам, чтобы предоставить подробную информацию о том, что такое адрес человека и какой это тип адреса.

Мой вопрос: следует ли мне создать измерение для всех трех таблиц и таблицу фактов, не содержащую фактов, чтобы связать их вместе, или мне следует денормализовать свои измерения и добавить к каждому измерению внешний ключ для адреса и типа адреса, с которым они связаны. слишком?

Вот очень быстрый UML-код того, как выглядит текущая база данных, чтобы прояснить ситуацию UML of Problem


person Community    schedule 12.11.2014    source источник


Ответы (1)


Вы должны создать измерение Person с набором атрибутов адреса (почтовый адрес, платежный адрес и т. Д.), Т.е. денормализовать все эти данные и загрузить их в единую таблицу.

person Marek Grzenkowicz    schedule 12.11.2014
comment
Могу я спросить, почему? это лучшая практика или ваше личное предпочтение? Учитывая, что эта база данных на самом деле является образцом базы данных MSDN, я думаю, что у них должна была быть причина для создания такой базы данных? - person ; 13.11.2014
comment
Да, это правильно, но поправьте меня, если я ошибаюсь, но в размерном моделировании таблицы фактов - это 3NF, а тусклые - 2NF? - person ; 14.11.2014
comment
Да, но под моделью 3NF я имел в виду только безразмерную модель. Я предположил, что человек - это только одно из многих измерений на вашем складе. Это правильно? Есть ли у вас на складе другие габариты и факты? Или вам нужна размерная модель только для четырех таблиц из вопроса? - person Marek Grzenkowicz; 14.11.2014
comment
Вы правы, есть еще много измерений и гораздо больше фактов. Так получилось, что это первая в DW. - person ; 14.11.2014
comment
Возвращаясь к вашему первому комментарию, является ли образец MSDN транзакционной базой данных или многомерной? - person Marek Grzenkowicz; 14.11.2014
comment
Транзакционный, это база данных по продажам / персоналу магазинов. ссылка - person ; 14.11.2014
comment
Я не уверен, что понимаю ваш вопрос. Образец базы данных смоделирован так, как показано на снимке экрана, поскольку нормализация снижает избыточность, а это важно в системе OLTP. Если вы хотите скопировать одни и те же данные в хранилище данных, вам не нужно беспокоиться об избыточности, и производительность становится критически важной, поэтому структура денормализована или сглажена. Вот почему я предложил одно измерение. - person Marek Grzenkowicz; 14.11.2014