Что такое нормализация?
НОРМАЛИЗАЦИЯ — это метод проектирования базы данных, который организует таблицы таким образом, чтобы уменьшить избыточность и зависимость данных. Нормализация делит большие таблицы на меньшие таблицы и связывает их, используя отношения. Целью нормализации является устранение избыточных (бесполезных) данных и обеспечение логического хранения данных.
Изобретатель реляционной модели Эдгар Кодд предложил теорию нормализации с введением первой нормальной формы, и он продолжил расширять теорию второй и третьей нормальной формой. Позже он присоединился к Раймонду Ф. Бойсу для разработки теории нормальной формы Бойса-Кодда.
В этом уроке вы узнаете
Нормальные формы базы данных
Теория нормализации данных в SQL все еще развивается. Например, есть обсуждения даже на 6- й нормальной форме. Однако в большинстве практических применений нормализация достигает своего наилучшего значения в 3- й нормальной форме . Эволюция теорий нормализации проиллюстрирована ниже:
Пример нормализации базы данных:
Мы будем изучать нормализацию с помощью тематического исследования. Предположим, видео библиотека поддерживает базу данных фильмов, сдаваемых в аренду. Без какой-либо нормализации вся информация хранится в одной таблице, как показано ниже.
Здесь вы видите, что Movies Rented column имеет несколько значений. Теперь давайте перейдем к 1-м нормальным формам:
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. Изменение неключевого столбца Полное имя может изменить приветствие.
Давайте перейдем в 3NF
3NF (третья нормальная форма) правила
- Правило 1 — быть в 2NF
- Правило 2 — не имеет транзитивных функциональных зависимостей
Чтобы переместить нашу таблицу 2NF в 3NF, нам снова нужно снова разделить нашу таблицу.
Пример 3NF
Мы снова разделили наши таблицы и создали новую таблицу, в которой хранятся приветствия.
Там нет транзитивных функциональных зависимостей, и, следовательно, наша таблица в 3NF
В таблице 3 идентификатор приветствия является первичным ключом, а в таблице 1 идентификатор приветствия является внешним по отношению к первичному ключу в таблице 3.
Теперь наш маленький пример находится на уровне, который не может быть далее разложен для достижения более высоких форм нормализации. На самом деле, это уже в высших формах нормализации. Отдельные усилия для перехода к следующим уровням нормализации данных обычно требуются в сложных базах данных. Тем не менее, мы будем кратко обсуждать следующие уровни нормализации в следующем.
BCNF (нормальная форма Бойса-Кодда)
Даже если база данных находится в 3- й нормальной форме, все равно могут возникнуть аномалии, если она имеет более одного ключа- кандидата .
Иногда BCNF также называют 3.5 нормальной формой.
4NF (Четвертая Нормальная Форма) Правила
Если ни один экземпляр таблицы базы данных не содержит двух или более независимых и многозначных данных, описывающих соответствующий объект, он находится в 4- й нормальной форме.
5NF (Пятая нормальная форма) Правила
Таблица находится в 5- й нормальной форме, только если она находится в 4NF и не может быть разложена на любое количество таблиц меньшего размера без потери данных.
6NF (Шестая Нормальная Форма) Предложено
6- я нормальная форма не стандартизирована, однако, в течение некоторого времени она обсуждается экспертами по базам данных. Надеюсь, у нас будет четкое и стандартизированное определение для 6- й нормальной формы в ближайшем будущем …
Это все для нормализации !!!
Резюме
- Проектирование базы данных имеет решающее значение для успешного внедрения системы управления базами данных, которая отвечает требованиям к данным корпоративной системы.
- Нормализация помогает создавать системы баз данных, которые являются экономически эффективными и имеют лучшие модели безопасности.
- Функциональные зависимости являются очень важным компонентом процесса нормализации данных.
- Большинство систем баз данных являются нормализованными базами данных вплоть до третьих нормальных форм.
- Первичный ключ однозначно идентифицирует запись в таблице и не может быть нулевым
- Внешний ключ помогает соединить таблицу и ссылается на первичный ключ