Что такое нормализация?
Нормализация - это метод проектирования базы данных, который уменьшает избыточность данных и устраняет нежелательные характеристики, такие как аномалии вставки, обновления и удаления. Правила нормализации делят большие таблицы на более мелкие и связывают их с помощью отношений. Целью нормализации в SQL является устранение избыточных (повторяющихся) данных и обеспечение логического хранения данных.
Изобретатель реляционной модели Эдгар Кодд предложил теорию нормализации данных с введением первой нормальной формы и продолжил расширять теорию с помощью второй и третьей нормальных форм. Позже он присоединился к Раймонду Ф. Бойсу, чтобы разработать теорию нормальной формы Бойса-Кодда.
Нормальные формы базы данных
Вот список нормальных форм
- 1NF (первая нормальная форма)
- 2NF (вторая нормальная форма)
- 3NF (Третья нормальная форма)
- BCNF (нормальная форма Бойса-Кодда)
- 4NF (четвертая нормальная форма)
- 5NF (пятая нормальная форма)
- 6NF (Шестая нормальная форма)
Теория нормализации данных в SQL-сервере продолжает развиваться. Например, есть обсуждения даже по 6- й нормальной форме. Однако в большинстве практических приложений нормализация наиболее эффективна в 3- й нормальной форме . Эволюция теорий нормализации SQL проиллюстрирована ниже:
Нормализация базы данных с примерами
Пример нормализации базы данных можно легко понять с помощью тематического исследования. Предположим, видеотека ведет базу данных фильмов, взятых напрокат. Без какой-либо нормализации в базе данных вся информация хранится в одной таблице, как показано ниже. Давайте разберемся с нормализацией в базе данных на примере таблиц:
Здесь вы видите, что столбец «Фильмы взяты напрокат» имеет несколько значений. Теперь перейдем к первой нормальной форме:
Правила 1NF (Первая нормальная форма)
- Каждая ячейка таблицы должна содержать одно значение.
- Каждая запись должна быть уникальной.
Приведенная выше таблица в 1NF-
Пример 1NF
Прежде чем мы продолжим, давайте разберемся в нескольких вещах -
Что такое КЛЮЧ?
KEY - это значение, используемое для однозначной идентификации записи в таблице. КЛЮЧ может быть одним столбцом или комбинацией нескольких столбцов.
Примечание. Столбцы в таблице, которые НЕ используются для однозначной идентификации записи, называются неключевыми столбцами.
Что такое первичный ключ?
Первичный элемент - это значение одного столбца, используемое для однозначной идентификации записи базы данных.
Он имеет следующие атрибуты
- Первичный ключ не может быть NULL
- Значение первичного ключа должно быть уникальным.
- Значения первичного ключа следует менять редко.
- При вставке новой записи первичному ключу должно быть присвоено значение.
Что такое составной ключ?
Составной ключ - это первичный ключ, состоящий из нескольких столбцов, используемый для однозначной идентификации записи.
В нашей базе данных есть два человека с одинаковым именем Роберт Фил, но они живут в разных местах.
Следовательно, нам требуется как полное имя, так и адрес, чтобы однозначно идентифицировать запись. Это составной ключ.
Перейдем ко второй нормальной форме 2NF
Правила 2NF (вторая нормальная форма)
- Правило 1 - Быть в 1НФ
- Правило 2 - Первичный ключ с одним столбцом
Ясно, что мы не сможем перейти к преобразованию нашей простой базы данных во 2- ю форму нормализации, если не разделим приведенную выше таблицу.
Мы разделили нашу таблицу 1NF на две таблицы, а именно. Таблица 1 и Таблица 2. Таблица 1 содержит информацию об участниках. Таблица 2 содержит информацию о взятых напрокат фильмах.
Мы ввели новый столбец под названием Membership_id, который является первичным ключом для таблицы 1. Записи могут быть однозначно идентифицированы в таблице 1 с помощью идентификатора членства.
База данных - Внешний ключ
В таблице 2 Membership_ID - это внешний ключ.
Внешний ключ ссылается на первичный ключ другой таблицы! Это помогает соединить ваши столы
- Внешний ключ может иметь имя, отличное от его первичного ключа.
- Это гарантирует, что строки в одной таблице имеют соответствующие строки в другой.
- В отличие от первичного ключа они не обязательно должны быть уникальными. Чаще всего они не
- Внешние ключи могут быть нулевыми, даже если первичные ключи не могут
Зачем вам внешний ключ?
Предположим, новичок вставляет запись в Таблицу B, например
Вы сможете вставлять в свой внешний ключ только те значения, которые существуют в уникальном ключе родительской таблицы. Это помогает в ссылочной целостности.
Вышеупомянутую проблему можно решить, объявив идентификатор членства из таблицы 2 как внешний ключ идентификатора членства из таблицы 1.
Теперь, если кто-то попытается вставить значение в поле идентификатора членства, которого нет в родительской таблице, будет показана ошибка!
Что такое транзитивные функциональные зависимости?
Переходная функциональная зависимость - это когда изменение неключевого столбца может привести к изменению любого из других неключевых столбцов.
Рассмотрим таблицу 1. Изменение имени в неключевом столбце Полное имя может изменить приветствие.
Переходим в 3НФ
Правила 3NF (Третья нормальная форма)
- Правило 1 - Быть в 2НФ
- Правило 2 - Не имеет транзитивных функциональных зависимостей
Чтобы переместить нашу таблицу 2NF в 3NF, нам снова нужно снова разделить нашу таблицу.
Пример 3NF
Ниже приведен пример 3NF в базе данных SQL:
Мы снова разделили наши таблицы и создали новую таблицу, в которой хранятся приветствия.
Нет транзитивных функциональных зависимостей, поэтому наша таблица находится в 3NF
В таблице 3 ID приветствия является первичным ключом, а в таблице 1 ID приветствия является чужим по отношению к первичному ключу в таблице 3.
Теперь наш небольшой пример находится на уровне, который не может быть подвергнут дальнейшей декомпозиции для достижения более высоких нормальных форм нормализации. Фактически, это уже в более высоких формах нормализации. В сложных базах данных обычно требуются отдельные усилия для перехода на следующие уровни нормализации данных. Однако ниже мы кратко обсудим следующие уровни нормализации.
BCNF (нормальная форма Бойса-Кодда)
Даже когда база данных находится в 3- й нормальной форме, все равно будут возникать аномалии, если у нее будет более одного ключа- кандидата .
Иногда BCNF также называют нормальной формой 3.5.
Правила 4NF (четвертая нормальная форма)
Если ни один экземпляр таблицы базы данных не содержит двух или более независимых и многозначных данных, описывающих соответствующий объект, то он находится в 4- й нормальной форме.
Правила 5NF (Пятая нормальная форма)
Таблица находится в 5- й нормальной форме, только если она находится в 4NF и не может быть разложена на любое количество меньших таблиц без потери данных.
Предлагается 6NF (шестая нормальная форма)
6- я нормальная форма не стандартизирована, но, тем не менее, уже некоторое время обсуждается экспертами по базам данных. Надеюсь, в ближайшем будущем у нас будет четкое и стандартизованное определение 6- й нормальной формы ...
Это все, что касается нормализации SQL !!!
Резюме
- Проектирование базы данных имеет решающее значение для успешного внедрения системы управления базами данных, которая отвечает требованиям к данным корпоративной системы.
- Процесс нормализации в СУБД помогает создавать рентабельные системы баз данных с лучшими моделями безопасности.
- Функциональные зависимости - очень важный компонент процесса нормализации данных.
- Большинство систем баз данных являются нормализованными базами данных до третьей нормальной формы.
- Первичный ключ однозначно идентифицирует запись в таблице и не может быть нулевым.
- Внешний ключ помогает соединить таблицу и ссылается на первичный ключ