Должно ли хранилище данных соответствовать 2NF или другой нормальной форме?

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

Он находится в Руководстве разработчика приложений Oracle® OLAP
10g Release 1 (10.1)
Таблица измерений 3.2.1: TIME_DIM
https://docs.oracle.com/cd/B13789_01/olap.101/b10333/global.htm#CHDCGABE

Чтобы представить иерархию MONTH -> QUARTER -> YEAR, нам нужны некоторые ключи, такие как: YEAR_ID, QUARTER_ID. Но есть кое-что, чего я не понимаю:

1) Зачем нужны поля YEAR_DSC и QUARTER_DSC? Я думаю, что мы можем найти эти значения в ТАБЛИЦЕ ГОДА И КВАРТАЛА. И это ломает 2НФ.

2) Какой нормальной форме должна удовлетворять схема в хранилище данных? (1NF, 2NF, 3NF или любой другой.)


person Jame H    schedule 02.10.2017    source источник
comment
Привет. Пожалуйста, делайте вопросы автономными. Поэтому, если вы чувствуете, что есть определенные части связанной страницы, которые необходимы для вашего вопроса, пожалуйста, отредактируйте свое сообщение, чтобы указать их и / или процитировать их в соответствии с принципами добросовестного использования. (Желательно сохранить эту ссылку для получения дополнительной информации.)   -  person philipxy    schedule 02.10.2017


Ответы (1)


НФ (нормальные формы) не имеют значения для базовых таблиц хранилища данных.

Мы нормализуем, чтобы уменьшить определенные виды избыточности, чтобы при обновлении базы данных нам не приходилось говорить одно и то же в нескольких местах, и чтобы мы не могли случайно ошибочно не сказать то же самое там, где это нужно было бы сказать. несколько мест. Это не проблема с результатами запроса, потому что мы не обновляем их. То же самое верно и для базовых таблиц хранилища данных. (Это также просто запросы к базовым таблицам исходной базы данных.)

Хранилища данных обычно оптимизированы для скорости чтения, а это обычно означает некоторую денормализацию по сравнению с исходной базой данных, чтобы избежать повторных вычислений за счет места. (Обратите внимание, что иногда перечитывание чего-то большего может быть медленнее, чем чтение меньших частей и пересчет большого объекта.) Мы, вероятно, не хотим отбрасывать нормализованные таблицы при перемещении в хранилище данных, потому что они отвечают простым запросов, и мы не хотим замедляться, пересчитывая их. Помимо этих компромиссов, нет никаких причин не денормализовать. Некоторые конкретные методы проектирования склада могут иметь свои собственные правила о том, какие части и в каком количестве следует денормализовать.

(Каким бы ни был наш исходный дизайн базы данных NF, мы всегда должны сначала нормализовать до 5NF, а затем сознательно денормализовать. Нам не нужно нормализовать или знать ограничения для обновления или запроса базы данных.)

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

person philipxy    schedule 02.10.2017
comment
Я думаю, что хранилища данных больше похожи на отчеты, чем на базы данных OLTP. - person Mike Sherrill 'Cat Recall'; 04.10.2017