Что такое нормализация? 1NF, 2NF, 3NF, Пример базы данных BCNF

Содержание:

Anonim

Что такое нормализация?

Нормализация - это метод проектирования базы данных, который уменьшает избыточность данных и устраняет нежелательные характеристики, такие как аномалии вставки, обновления и удаления. Правила нормализации делят большие таблицы на более мелкие и связывают их с помощью отношений. Целью нормализации в 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 !!!

Резюме

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