Нормализация СУБД: пример базы данных 1NF, 2NF, 3NF
Что такое нормализация базы данных?
Нормализация — это метод проектирования базы данных, который уменьшает избыточность данных и устраняет нежелательные характеристики, такие как аномалии вставки, обновления и удаления. Правила нормализации делят большие таблицы на меньшие и связывают их с помощью отношений. Целью нормализации в SQL является устранение избыточных (повторяющихся) данных и обеспечение логического хранения данных.
Изобретатель реляционная модель Эдгар Кодд предложил теорию нормализации данных с введением первой нормальной формы и продолжил расширять теорию с помощью второй и третьей нормальных форм. Later он присоединился к Рэймонду Ф. Бойсу для разработки теории нормальной формы Бойса-Кодда.
Виды нормальных форм в СУБД
Вот список нормальных форм в SQL:
- 1NF (первая нормальная форма): Гарантирует, что таблица базы данных организована таким образом, что каждый столбец содержит атомарные (неделимые) значения, а каждая запись уникальна. Это исключает повторяющиеся группы, тем самым структурируя данные в таблицы и столбцы.
- 2NF (вторая нормальная форма): Создано на основе 1NF. Нам нужно удалить избыточные данные из таблицы, которая применяется к нескольким строкам. и разместить их в отдельных таблицах. Он требует, чтобы все неключевые атрибуты были полностью функциональными в первичном ключе.
- 3NF (Третья нормальная форма): Расширяет 2NF, гарантируя, что все неключевые атрибуты не только полностью функциональны в первичном ключе, но и независимы друг от друга. Это устраняет транзитивную зависимость.
- BCNF (нормальная форма Бойса-Кодда): Усовершенствование 3NF, устраняющее аномалии, не обрабатываемые 3NF. Он требует, чтобы каждый определитель был потенциальным ключом, обеспечивая еще более строгое соблюдение правил нормализации.
- 4NF (Четвертая нормальная форма): Устраняет многозначные зависимости. Это гарантирует отсутствие в записи нескольких независимых многозначных фактов об объекте.
- 5NF (пятая нормальная форма): Также известная как «нормальная форма соединения проекций» (PJNF). Она относится к реконструкции информации из более мелких, по-разному организованных фрагментов данных.
- 6NF (шестая нормальная форма): Теоретически и не получило широкого применения. Он имеет дело с временными данными (обработкой изменений с течением времени) путем дальнейшей декомпозиции таблиц для устранения всей нетемпоральной избыточности.
Теория нормализации данных в MySQL сервер все еще находится в стадии разработки. Например, есть дискуссии даже на 6th Нормальная форма. Однако в большинстве практических приложений нормализация достигает наилучшего результата за 3rd Нормальная форма. Эволюция нормализации в теориях SQL проиллюстрирована ниже:
Нормализация базы данных с примерами
База данных Пример нормализации можно легко понять с помощью тематического исследования. Предположим, видеотека ведет базу данных фильмов, сдаваемых в прокат. Без какой-либо нормализации в базе данных вся информация хранится в одной таблице, как показано ниже. Давайте разберемся с базой данных нормализации на примере нормализации с решением:
Вот видишь Столбец «Прокат фильмов» имеет несколько значений. Теперь перейдем к первой нормальной форме:
Первая нормальная форма (1NF)
- Каждая ячейка таблицы должна содержать одно значение.
- Каждая запись должна быть уникальной.
Приведенная выше таблица в 1NF-
Пример 1НФ
Прежде чем мы продолжим, давайте поймем несколько вещей —
Что такое KEY в SQL
A КЛЮЧ в SQL — это значение, используемое для уникальной идентификации записей в таблице. SQL KEY — это один столбец или комбинация нескольких столбцов, используемых для уникальной идентификации строк или кортежей в таблице. Ключ SQL используется для выявления повторяющейся информации, а также помогает установить связь между несколькими таблицами в базе данных.
Примечание. Столбцы таблицы, которые НЕ используются для однозначной идентификации записи, называются неключевыми столбцами.
Что такое первичный ключ?
Первичное значение — это одно значение столбца, используемое для уникальной идентификации записи базы данных.
Он имеет следующие атрибуты
- A первичный ключ не может быть NULL
- Значение первичного ключа должно быть уникальным
- Значения первичного ключа следует редко менять.
- Первичному ключу должно быть присвоено значение при вставке новой записи.
Что такое составной ключ?
Составной ключ — это первичный ключ, состоящий из нескольких столбцов, используемый для уникальной идентификации записи.
В нашей базе данных есть два человека с одинаковым именем Роберт Фил, но они живут в разных местах.
Следовательно, нам требуются как полное имя, так и адрес, чтобы однозначно идентифицировать запись. Это составной ключ.
Перейдем ко второй нормальной форме 2НФ.
Вторая нормальная форма (2NF)
- Правило 1 – Быть в 1NF
- Правило 2. Первичный ключ из одного столбца, который функционально не зависит ни от одного подмножества отношений потенциального ключа.
Понятно, что мы не можем продвинуться вперед и сделать нашу простую базу данных за 2nd Форма нормализации, если мы не разделим приведенную выше таблицу.
Мы разделили нашу таблицу 1NF на две таблицы, а именно. Таблица 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 идентификатор приветствия является первичным ключом, а в таблице 1 идентификатор приветствия является внешним по отношению к первичному ключу в таблице 3.
Теперь наш маленький пример находится на уровне, который невозможно далее разложить для достижения типов нормализации более высоких нормальных форм в СУБД. Фактически, оно уже находится в формах более высокой нормализации. В сложных базах данных обычно требуются отдельные усилия для перехода на следующие уровни нормализации данных. Однако ниже мы кратко обсудим следующие уровни нормализации в СУБД.
Нормальная форма Бойса-Кодда (BCNF)
Даже если база данных находится в 3rd Нормальная форма, тем не менее, если бы у нее было более одного, возникали бы аномалии. Кандидат Ключ.
Иногда BCNF также называют 3.5 Нормальная форма.
Четвертая нормальная форма (4NF)
Если ни один экземпляр таблицы базы данных не содержит два или более независимых и многозначных данных, описывающих соответствующий объект, то он находится в 4th Нормальная форма.
Пятая нормальная форма (5NF)
Стол находится в 5th Нормальная форма только в том случае, если она находится в 4NF и ее нельзя разложить на любое количество меньших таблиц без потери данных.
Предлагаемая шестая нормальная форма (6NF)
6th Нормальная форма не стандартизирована, однако она уже некоторое время обсуждается экспертами по базам данных. Будем надеяться, что у нас будет четкое и стандартизированное определение для 6.th Нормальная форма в ближайшем будущем…
Преимущества нормальной формы
- Улучшение согласованности данных: Нормализация гарантирует, что каждая часть данных хранится только в одном месте, что снижает вероятность противоречивых данных. Когда данные обновляются, их необходимо обновлять только в одном месте, чтобы обеспечить согласованность.
- Уменьшите избыточность данных: Нормализация помогает устранить дублирование данных путем разделения их на несколько связанных таблиц. Это может сэкономить место для хранения, а также сделать базу данных более эффективной.
- Улучшение производительности запросов: Нормализованные базы данных часто легче запрашивать. Поскольку данные организованы логически, запросы можно оптимизировать для более быстрого выполнения.
- Сделайте данные более значимыми: Нормализация предполагает группировку данных таким образом, чтобы это имело смысл и было интуитивно понятным. Это может облегчить понимание и использование базы данных, особенно для людей, которые не проектировали базу данных.
- Уменьшите вероятность аномалий: Аномалии — это проблемы, которые могут возникнуть при добавлении, обновлении или удалении данных. Нормализация может снизить вероятность возникновения этих аномалий, гарантируя, что данные логически организованы.
Недостатки нормализации
- Повышенная сложность: Нормализация может привести к сложным отношениям. Большое количество таблиц с внешними ключами может быть сложным в управлении, что приводит к путанице.
- Снижение гибкости: Из-за строгих правил нормализации гибкость при хранении данных, не соответствующих этим правилам, может быть меньшей.
- Повышенные требования к хранению: Хотя нормализация уменьшает избыточность, может потребоваться выделить больше места для хранения дополнительных таблиц и индексов.
- Накладные расходы на производительность: Объединение нескольких таблиц может оказаться дорогостоящим с точки зрения производительности. Чем более нормализованы данные, тем больше соединений требуется, что может замедлить время получения данных.
- Потеря контекста данных: Нормализация разбивает данные на отдельные таблицы, что может привести к потере бизнес-контекста. Изучение связанных таблиц необходимо для понимания контекста части данных.
- Потребность в экспертных знаниях: Реализация нормализованной базы данных требует глубокого понимания данных, взаимосвязей между данными и правил нормализации. Это требует экспертных знаний и может занять много времени.
Вот и все, что касается нормализации SQL!!!
Заключение
- Проектирование базы данных имеет решающее значение для успешного внедрения системы управления базами данных, которая отвечает требованиям к данным корпоративной системы.
- Нормализация в СУБД — это процесс, который помогает создавать системы баз данных, которые являются экономически эффективными и имеют лучшие модели безопасности.
- Функциональные зависимости являются очень важным компонентом процесса нормализации данных.
- Большинство систем баз данных представляют собой нормализованные базы данных до третьей нормальной формы в СУБД.
- Первичный ключ однозначно идентифицирует запись в таблице и не может быть нулевым.
- Внешний ключ помогает соединить таблицу и ссылается на первичный ключ.