Middle
61
questionbank

Что такое нормализация?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Нормализация данных в контексте баз данных — это процесс организации данных для снижения избыточности и улучшения целостности данных. Достигается путем деления больших таблиц на более мелкие и связывания их отношений.

Основная цель:

  • Устранение дублирования данных.
  • Улучшение целостности данных (исключение аномалий вставки, обновления и удаления).
  • Повышение эффективности хранения и запросов (в некоторых случаях).

Процесс нормализации основывается на принципах нормальных форм (НФ). Наиболее распространенные:

  • Первая нормальная форма (1НФ): Атомарность данных в ячейках, отсутствие повторяющихся групп столбцов.
  • Вторая нормальная форма (2НФ): Находится в 1НФ и каждый неключевой атрибут полностью функционально зависит от всего первичного ключа.
  • Третья нормальная форма (3НФ): Находится во 2НФ и нет транзитивных функциональных зависимостей неключевых атрибутов от первичного ключа через другие неключевые атрибуты.

Пример:

Исходная таблица "Заказы_Товары":

ID ЗаказаДата ЗаказаID ТовараНазвание ТовараЦена ТовараКоличествоИмя КлиентаАдрес Клиента
12023-10-27101Телефон5001Иван ПетровУл. Пушкина, 10
12023-10-27102Наушники1002Иван ПетровУл. Пушкина, 10
22023-10-27101Телефон5001Мария ИвановаУл. Лермонтова, 5

После нормализации (до 3НФ):

Таблица "Заказы":

ID ЗаказаДата ЗаказаID Клиента
12023-10-271
22023-10-272

Таблица "Позиции Заказа":

ID ПозицииID ЗаказаID ТовараКоличество
111011
211022
321011

Таблица "Товары":

ID ТовараНазвание ТовараЦена Товара
101Телефон500
102Наушники100

Таблица "Клиенты":

ID КлиентаИмя КлиентаАдрес Клиента
1Иван ПетровУл. Пушкина, 10
2Мария ИвановаУл. Лермонтова, 5

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