Нормализация в OLAP и OLTP
Несмотря на то, что я изучаю книги и статьи, я не могу найти конкретный ответ на следующие вопросы.
Какой должна быть минимальная и максимальная степень нормализации для OLAP и OLTP?
Я предполагаю, что для OLTP минимум - это 3-я нормальная форма, а для OLAP - 2-я нормальная форма.
Можем ли мы сообщить подробности, чтобы дополнить ответы?
2 ответа
Некоторые из OLAP имеют форму хранилищ данных, витрин данных или баз данных отчетов. Один дизайн принимает форму звездной схемы, представленной Ральфом Кимбаллом. В схеме типа "звезда" таблицы фактов иногда имеют значение 1NF, а таблицы измерений обычно имеют значение 2NF. Вы можете разложить таблицы измерений так, чтобы они находились в 3NF или даже BCNF, и в итоге вы получили схему снежинки.
В общем, проектирование звездной схемы является достаточно жесткой дисциплиной, так что вы на самом деле думаете не с точки зрения нормализации или денормализации, а с точки зрения хорошего звездного дизайна. Естественно, отклонения от нормализации приводят к аномалиям обновления, что усложняет жизнь для обработки ETL.
Звездные схемы - это действительно способ представления того, что Кимбалл назвал размерной моделью на платформе SQL. Они оказываются полезными для витрин данных и баз данных отчетов, а также хранилищ данных.
Уильям (Билл) Инмон, другой новатор в хранилищах данных, выступал за сохранение 3NF даже во время OLAP. И Кимбалл, и Инмон умнее меня, и я не собираюсь говорить вам, какой из них прав. Когда я сделал OLAP, я имел тенденцию следовать за Кимбаллом, с хорошими результатами.
Возможно, лучшая рекомендация здравого смысла - это 5-я нормальная форма в обоих случаях (Билл Инмон рекомендует 3NF для хранилища данных, но я считаю, что он действительно имеет в виду BCNF или 5NF, поскольку у 3NF нет особых достоинств).
Некоторые реализации хранилищ данных используют 6NF.