Нормализация упорядочивает данные, уменьшая избыточность и повышая целостность. Цель состоит в том, чтобы хранить каждый факт только один раз. Если адрес клиента присутствует в каждой записи заказа, изменение адреса должно быть внесено в сотни мест. Пропустите хотя бы одно, и данные станут несогласованными. Нормализация перемещает адрес в таблицу клиентов. Заказы ссылаются на клиента по идентификатору. Адрес хранится только один раз. Измените его там, и каждый заказ будет отражать новое значение.
Процесс нормализации следует нормальным формам. Первая нормальная форма устраняет повторяющиеся группы. Вторая нормальная форма удаляет частичные зависимости. Третья нормальная форма удаляет транзитивные зависимости. Каждая форма добавляет ограничения, которые еще больше уменьшают избыточность. Существуют и более высокие формы, но они редко используются на практике. Большинство транзакционных баз данных стремятся к третьей нормальной форме. Нормализация имеет свои компромиссы. Большее количество таблиц означает больше соединений, что может замедлить запросы. Для транзакционных систем преимущества в плане целостности перевешивают потери производительности. Для аналитических систем часто верно обратное. Денормализованные схемы с широкими таблицами и избыточными столбцами выполняют запросы быстрее, поскольку они избегают соединений. Именно поэтому хранилища данных используют схемы «звезда» и «снежинка», которые намеренно денормализуют данные. Правильный уровень нормализации зависит от рабочей нагрузки. Транзакционные системы нормализуют данные. Аналитические системы денормализуют данные. Оба подхода правильны для своих целей.
Нормальные формы
- Первая нормальная форма — без повторяющихся групп
- Вторая нормальная форма — отсутствие частичных зависимостей
- Третья нормальная форма — отсутствие транзитивных зависимостей
- Нормальная форма Бойса-Кодда — более строгий вариант третьей ступени
Нормализация — это вопрос целостности. Если хранить каждый факт один раз, данные остаются согласованными. Если хранить их многократно, несогласованность неизбежна.
Comments
No comments yet. Be the first to share a thought.
Leave a comment