Эта статья является приложением к Восемь распространенных плохих практик в проектировании баз данных, в котором я хотел бы рассказать об database normalization этапе проектирования баз данных.

Что такое database normalization?

Нормализация базы данных или просто нормализация — это процесс организации столбцов (атрибутов) и таблиц (отношений) реляционной базы данных для уменьшения избыточности данных и улучшения целостности данных. Нормализация — это также процесс упрощения структуры базы данных с целью достижения оптимальной структуры, состоящей из атомарных элементов. Впервые он был предложен Эдгаром Ф. Коддом как неотъемлемая часть реляционной модели. Нормализация включает в себя упорядочивание атрибутов в отношениях на основе зависимостей между атрибутами, гарантируя, что зависимости должным образом соблюдаются ограничениями целостности базы данных. Нормализация достигается путем применения некоторых формальных правил в процессе синтеза или декомпозиции. Synthesis создает нормализованную структуру базы данных на основе известного набора зависимостей. Декомпозиция берет существующую (недостаточно нормализованную) структуру базы данных и улучшает ее на основе известного набора зависимостей.

(Источник Википедия)

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

Почему это так важно?

Давайте посмотрим на следующую таблицу

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(32) NOT NULL DEFAULT '',
  `firstname` varchar(100) DEFAULT NULL,
  `lastname` varchar(100) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `language` varchar(2) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Теперь подумаем, как часто мы показываем информацию о профиле пользователя, например, телефон и пол. Видно было, что редко их будут показывать. Однако нам нужно проверять каждый раз, когда он входит в нашу систему, поэтому обычно используются id, email, password. Поэтому требуется реструктурировать вашу таблицу на 2 меньшие таблицы. Это действие является одним из database normalization методов.

Существует множество способов архивирования database normalization:

  • UNF — Ненормализованная форма
  • 1NF — Первая нормальная форма
  • 2NF — Вторая нормальная форма
  • 3NF — Третья нормальная форма
  • EKNF — Нормальная форма элементарного ключа
  • BCNF — нормальная форма Бойса-Кодда
  • 4NF — Четвертая нормальная форма
  • ETNF — нормальная форма существенного кортежа
  • 5NF — Пятая нормальная форма
  • 6NF — шестая нормальная форма
  • DKNF — нормальная форма домена/ключа
    (Источник Википедия)

В этом посте я не буду подробно объяснять каждый метод. Тем не менее, я потрачу время, чтобы написать о некоторых методах, которые мне очень нравятся, в следующем посте.

Первоначально опубликовано на сайте dotronglong.com 13 октября 2017 г.