Эта статья является приложением к Восемь распространенных плохих практик в проектировании баз данных, в котором я хотел бы рассказать об 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 г.