Что такое нормализация в СУБД (SQL)? Пример 1НФ, 2НФ, 3НФ

Что такое нормализация базы данных?

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

Изобретатель реляционная модель Эдгар Кодд предложил теорию нормализации данных с введением первой нормальной формы и продолжил расширять теорию с помощью второй и третьей нормальных форм. Later он присоединился к Рэймонду Ф. Бойсу для разработки теории нормальной формы Бойса-Кодда.

Нормальные формы базы данных

Вот список нормальных форм в SQL:

  • 1NF (первая нормальная форма)
  • 2НФ (вторая нормальная форма)
  • 3NF (Третья нормальная форма)
  • BCNF (нормальная форма Бойса-Кодда)
  • 4НФ (Четвертая нормальная форма)
  • 5NF (пятая нормальная форма)
  • 6NF (шестая нормальная форма)

Теория нормализации данных на сервере MySQL все еще находится в стадии разработки. Например, есть дискуссии даже на 6th Нормальная форма. Однако в большинстве практических приложений нормализация достигает наилучшего результата за 3rd Нормальная форма. Эволюция нормализации в теориях SQL проиллюстрирована ниже:

Нормальные формы базы данных
Нормальные формы базы данных

Нормализация базы данных с примерами

База данных Пример нормализации можно легко понять с помощью тематического исследования. Предположим, видеотека ведет базу данных фильмов, сдаваемых в прокат. Без какой-либо нормализации в базе данных вся информация хранится в одной таблице, как показано ниже. Давайте разберемся с базой данных нормализации на примере нормализации с решением:

Нормализация базы данных на примере

Вот видишь Столбец «Прокат фильмов» имеет несколько значений. Теперь перейдем к первой нормальной форме:

Правила 1NF (первой нормальной формы)

  • Каждая ячейка таблицы должна содержать одно значение.
  • Каждая запись должна быть уникальной.

Приведенная выше таблица в 1NF-

Пример 1НФ

Правила 1НФ

Пример 1NF в СУБД

Прежде чем мы продолжим, давайте поймем несколько вещей —

Что такое KEY в SQL

A КЛЮЧ в SQL — это значение, используемое для уникальной идентификации записей в таблице. SQL KEY — это один столбец или комбинация нескольких столбцов, используемых для уникальной идентификации строк или кортежей в таблице. Ключ SQL используется для выявления повторяющейся информации, а также помогает установить связь между несколькими таблицами в базе данных.

Примечание. Столбцы таблицы, которые НЕ используются для однозначной идентификации записи, называются неключевыми столбцами.

Что такое первичный ключ?

Основной ключ

Первичный ключ в СУБД

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

Это имеет следующееwing Атрибуты

  • A первичный ключ не может быть NULL
  • Значение первичного ключа должно быть уникальным
  • Значения первичного ключа следует редко менять.
  • Первичному ключу должно быть присвоено значение при вставке новой записи.

Что такое составной ключ?

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

В нашей базе данных есть два человека с одинаковым именем Роберт Фил, но они живут в разных местах.

Составной ключ в базе данных

Составной ключ в базе данных

Следовательно, нам требуются как полное имя, так и адрес, чтобы однозначно идентифицировать запись. Это составной ключ.

Перейдем ко второй нормальной форме 2НФ.

Правила 2NF (второй нормальной формы)

  • Правило 1 – Быть в 1NF
  • Правило 2. Первичный ключ с одним столбцом, который функционально не зависит ни от какого подмножества потенциального ключевого отношения.

Понятно, что мы не можем продвинуться вперед и сделать нашу простую базу данных за 2nd Форма нормализации, если мы не разделим приведенную выше таблицу.

Правила 2НФ

Правила 2НФ

Мы разделили нашу таблицу 1NF на две таблицы. viz. Таблица 1 и Таблица 2. Таблица 1 содержит информацию об участниках. В таблице 2 представлена ​​информация о взятых напрокат фильмах.

Мы ввели новый столбец Membership_id, который является первичным ключом для таблицы 1. Записи можно однозначно идентифицировать в таблице 1, используя идентификатор членства.

База данных — внешний ключ

В таблице 2 Membership_ID является внешним ключом.

База данных — внешний ключ

База данных — внешний ключ

Внешний ключ в СУБД

Внешний ключ ссылается на первичный ключ другой таблицы! Это помогает соединить ваши таблицы

  • Внешний ключ может иметь имя, отличное от имени первичного ключа.
  • Это гарантирует, что строки в одной таблице будут иметь соответствующие строки в другой.
  • В отличие от первичного ключа, они не обязательно должны быть уникальными. Чаще всего их нет
  • Внешние ключи могут иметь значение NULL, хотя первичные ключи не могут быть такими.

База данных — внешний ключ

Зачем вам внешний ключ?

Предположим, новичок вставляет в таблицу B запись, например:

Зачем вам нужен внешний ключ

Вы сможете вставлять во внешний ключ только те значения, которые существуют в уникальном ключе родительской таблицы. Это помогает обеспечить ссылочную целостность.

Вышеупомянутую проблему можно решить, объявив идентификатор членства из Таблицы 2 в качестве внешнего ключа идентификатора членства из Таблицы 1.

Теперь, если кто-то попытается вставить в поле идентификатора членства значение, которого нет в родительской таблице, будет отображена ошибка!

Что такое транзитивные функциональные зависимости?

Переходный функциональная зависимость при изменении неключевого столбца может произойти изменение любого другого неключевого столбца

Рассмотрим таблицу 1. При изменении неключевого столбца «Полное имя» может измениться «Обращение».

Транзитивные функциональные зависимости

Перейдем в 3NF

Правила 3NF (третьей нормальной формы)

  • Правило 1 – Быть в 2NF
  • Правило 2. Не имеет транзитивных функциональных зависимостей.

Чтобы переместить нашу таблицу 2НФ в 3НФ, нам снова нужно снова разделить нашу таблицу.

Пример 3НФ

Ниже приведен пример 3NF в базе данных SQL:

Пример 3НФ

Пример 3НФ

Пример 3НФ

Мы снова разделили наши таблицы и создали новую таблицу, в которой хранятся приветствия.

Транзитивных функциональных зависимостей нет, следовательно, наша таблица находится в 3НФ.

В таблице 3 идентификатор приветствия является первичным ключом, а в таблице 1 идентификатор приветствия является внешним по отношению к первичному ключу в таблице 3.

Теперь наш маленький пример находится на уровне, который невозможно далее разложить для достижения типов нормализации более высоких нормальных форм в СУБД. Фактически, оно уже находится в формах более высокой нормализации. Обычно необходимы отдельные усилия для перехода на следующие уровни нормализации данных.plex базы данных. Однако ниже мы кратко обсудим следующие уровни нормализации в СУБД.wing.

BCNF (нормальная форма Бойса-Кодда)

Даже если база данных находится в 3rd Нормальная форма, тем не менее, если бы у нее было более одного, возникали бы аномалии. Кандидат Ключ.

Иногда BCNF также называют 3.5 Нормальная форма.

Правила 4NF (четвертой нормальной формы)

Если ни один экземпляр таблицы базы данных не содержит два или более независимых и многозначных данных, описывающих соответствующий объект, то он находится в 4th Нормальная форма.

Правила 5NF (пятой нормальной формы)

Стол находится в 5th Нормальная форма только в том случае, если она находится в 4NF и ее нельзя разложить на любое количество меньших таблиц без потери данных.

Предложена 6NF (шестая нормальная форма)

6th Нормальная форма не стандартизирована, однако она уже некоторое время обсуждается экспертами по базам данных. Будем надеяться, что у нас будет четкое и стандартизированное определение для 6.th Нормальная форма в ближайшем будущем…

Вот и все, что касается нормализации SQL!!!

Итоги

  • Проектирование базы данных имеет решающее значение для успешного внедрения системы управления базами данных, которая отвечает требованиям к данным корпоративной системы.
  • Нормализация в СУБД — это процесс, который помогает создавать системы баз данных, которые являются экономически эффективными и имеют лучшие модели безопасности.
  • Функциональные зависимости являются очень важным компонентом процесса нормализации данных.
  • Большинство систем баз данных представляют собой нормализованные базы данных до третьей нормальной формы в СУБД.
  • Первичный ключ однозначно идентифицирует запись в таблице и не может быть нулевым.
  • Внешний ключ помогает соединить таблицу и ссылается на первичный ключ.