Что такое нормализация отношений
Что такое нормализация отношений
В основе реляционных баз данных лежит строгий математический аппарат, хорошо формализованные принципы создания баз данных и управления ими.
Все данные в реляционной базе данных хранится в однородных таблицах. Термин «однородный» означает, что в одной таблице все строки имеют одинаковую структуру. От правильности проектирования таблиц зависит простота эксплуатации созданной базы данных, возможность её развития в дальнейшем. Для получения «правильных» таблиц используется процесс нормализации.
В процессе нормализации данные группируются в таблицы, представляющие классы объектов и их взаимодействие.
Цели, которые преследуются при построении наиболее эффективной структуры данных:
Теория нормализации отношений работает с 5 нормальными формами таблиц. Каждая последующая форма должна отвечать требованиям предыдущих плюс некоторые дополнительные требования.
Первая нормальная форма (1НФ)
Таблица, находящаяся в первой нормальной форме должна отвечать следующим требованиям :
Для приведения к 1НФ можно использовать следующий алгоритм:
Пример. Пусть дана однотабличная БД
Поскольку один клиент может в течении одного дня сделать несколько заказов, таблица может содержать одинаковые строки. На один и тот же товар может поступить несколько заказов, и наконец, фирма производитель может поставлять несколько товаров. Таблица может содержать следующие данные:
1. Добавим в таблицу поле Номер заказа, что позволит однозначно идентифицировать каждый из заказов.
2. Таблица содержит три группы повторяющихся полей:
Вынесем их в отдельную таблицу Клиенты
Вынесем их в отдельную таблицу Товары
Вынесем их в отдельную таблицу Производители
3. В таблицу Клиенты добавим новое поле Номер клиента, которое будет однозначно идентифицировать каждую запись таблицы.
4. Т.к. связь между таблицами происходит по совпадающим полям, добавим в таблицу Заказы поля Номер клиента и Номер товара, а в таблицу Товары поле Номер производителя для организации связи.
Что такое нормализация базы данных простыми словами?
Простой 4 комментария
Есть вероятность, что авторы тоже не до конца понимают, о чём говорят.
Есть и такие.
Я тоже не исключение.
Вы ответили себе на вопрос сами.
Вам нужно пожить с этим.
Нормализация — это процесс организации данных в базе данных, включающий создание таблиц и установление отношений между ними в соответствии с правилами, которые обеспечивают защиту данных и делают базу данных более гибкой, устраняя избыточность и несогласованные зависимости.
Все дело в скорости. Полностью нормализованная база данных жутко неудобна для работы. К тому же она тормозит из за множества джойнов. Так что выбирают компромис, между удобством, скорость и бизнес логикой.
Вот пример каталог фотографий котиков и лайков под каждой фотографией, как вы добьетесь максимальной скорости?
В первой таблице явная денормализация, что бы лайки не агрегировать, как то так
К сожалению цель не всегда очевидна, а в начале карьеры вообще непонятно как использовать инструменты. Поэтому у вас либо есть наставник, который укажет на ошибки, либо сделаете как получится а потом с горящей задницей будете быстро переделывать, когда система встанет.
Нормализация отношений в реляционных базах данных
Отношения в реляционной базе данных представлены в виде таблиц, строки которых соответствуют записям, а столбцы – атрибутам отношений – полям. Поле, каждое значение которого однозначно определяет соответствующую запись, называется простым ключом (ключевым полем). Если записи однозначно определяются значениями нескольких полей, то такая таблица базы данных имеет составной ключ. Чтобы связать две реляционные таблицы, необходимо ключ первой ввести в состав ключа второй таблицы.
Например, рассмотрим БД, состоящую из трех связанных таблиц:
СТУДЕНТ(номер зачетной книжки, Ф., И., О., дата рождения, группа), СЕССИЯ (номер зачётной книжки, оценка1, оценка2. оценка п, результаты сдачи сессии), СТИПЕНДИЯ(результаты сдачи сессии, размер стипендии).
Отношения студент и сессия имеют совпадающие ключи (номер зачетной книжки).
Рис. 4.5. Связывание таблиц через ключи
Таблица СЕССИЯ имеет первичный КЛЮЧ (номер зачетной книжки) и содержит внешний ключ (результаты сдачи сессии), который обеспечивает ее связь с таблицей стипендия (рис. 10.5).
В реляционных базах данных определены три типа связей:
• один к одному (1:1) – любая запись в первой таблице может быть связана только с одной записью второй таблицы и наоборот;
• один ко многим (1:М) – любая запись первой таблицы связана с несколькими записями второй, но любая запись во второй таблице связана только с одной записью первой таблицы;
• многие ко многим (М:М) – каждой записи первой таблицы соответствуют несколько записей второй и наоборот. В явном виде эта связь в реляционных БД не поддерживается, но имеются способы ее косвенной организации путем создания дополнительных таблиц.
Одни и те же данные могут группироваться в таблицы различными способами, т. е. возможна организация различных наборов отношений взаимосвязанных информационных объектов. Группировка атрибутов (столбцов) в отношениях (таблицах) должна быть рациональной, их дублирование минимизировано.
В реляционных базах данных отношения (таблицы) содержат как структурную, так и семантическую информацию. Структурная информация связана с объявлением отношений. Семантическая информация выражается множеством известных функциональных зависимостей между атрибутами отношений, имеющимися в схеме.
Таким образом, в отношениях (таблицах) практически всегда присутствуют функциональные зависимости. Для устранения нежелательных функциональных зависимостей между атрибутами (столбцами) Э.Kодд предложил использовать разработанный им процесс нормализации отношений. Это процедура декомпозиции (разложения), при которой данное множество отношений заменяется другим множеством отношений (при этом число их возрастает), являющихся проекциями первых. Другими словами, нормализация – это пошаговый обратимый процесс замены данной схемы отношений другой схемой, в которой отношения имеют более простую и регулярную структуру.
Итак, нормализация отношений – формальный аппарат ограничений на формирование таблиц, который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение БД.
Различают шесть нормальных форм:
1) 1НФ — первую нормальную форму;
2) 2НФ — вторую нормальную форму;
3) 3НФ — третью нормальную форму;
4) НФБК — нормальную форму Бойса –Кодда;
5) 4НФ — четвертую нормальную форму;
6) 5НФ — пятую нормальную форму.
Каждая нормальная форма определяет ограничения на данные:
• 1НФ, 2НФ, 3НФ – ограничивают зависимость не первичных атрибутов от ключей;
• НФБК – ограничивает зависимость первичных атрибутов;
• 4НФ – формирует ограничения на виды многозначных зависимостей;
• 5НФ – вводит другие типы зависимостей: зависимости соединения.
Каждая нормальная форма более высокого уровня предполагает, что анализируемое отношение уже находится в нормальной форме на уровне ниже рассматриваемого. Для реляционных баз данных необходимо, чтобы все отношения базы данных обязательно находились в НФ, однако практически всегда стремятся довести уровень нормализации базы данных хотя бы до 3НФ.
Отношение называется нормализованным или приведенным к первой нормальной форме, если все его атрибуты простые, т.е. неделимы. В противном случае отношение считается ненормализованным и ему соответствует многоуровневая таблица (иерархия) в отличие от однородной табличной структуры нормализованного отношения.
Преобразование отношений к первой нормальной форме может привести к увеличению количества реквизитов (полей) отношения и изменению ключа. Например, отношение СТУДЕНТ (номер зачетной книжки, Ф., И., О., дата рождения, группа) находится в первой нормальной форме. Если бы поля Ф., И., О. были бы объединены в одно, то нормализация отношений состояла бы в фрагментации данного поля. Разработчики БД изначально строят так исходные отношения, чтобы они были в первой нормальной форме.
Один из распространенных подходов приведения к НФ заключается в том, что в процессе преобразований, которое называется выравниванием таблицы, повторяющиеся группы устраняются путем организации дополнительных записей по одной на каждый элемент повторяющейся группы.
Вторая нормальная форма применяется к отношениям с составным ключом, т. е. к таким отношениям, первичный ключ которых состоит из двух или более атрибутов. Отношение, у которого первичный ключ включает только один атрибут, всегда находится во 2НФ.
Для описания второй и третьей нормальных форм требуется ввести понятие о функциональной зависимости полей (атрибутов). Функциональная зависимость полей – это зависимость, при которой в экземпляре информационного объекта определенному значению ключевого поля соответствует только одно значение не ключевого поля. Таким образом, это логическая связь не ключевых полей с общим для них ключом.
В случае составного ключа вводится понятие функционально полной зависимости. Функционально полная зависимость не ключевых полей заключается в том, что каждое не ключевое поле функционально зависит от ключа, но не зависит ни от какой части составного ключа. Отношение будет находиться во второй нормальной форме, если оно находится в первой нормальной форме, и каждое не ключевое поле функционально полно зависит от составного ключа. Так отношение студент находится во второй нормальной форме, т. к. его не ключевые поля функционально зависят от ключа номер зачетной книжки. Отношение сессия, имеющее составной ключ номер зачетной книжки + результаты сдачи сессии находится в первой нормальной форме, но не находится во второй, т.к. поля оценка1, оценка2. оценка n не находятся в полной функциональной зависимости от составного ключа, а лишь от его составной части. Для перевода этого отношения во вторую нормальную форму необходимо исключить из него поля оценка1, оценка2. оценка n, т. е. исходное отношение надо разбить на два связанных отношения РЕЗУЛЬТАТЫ (номер зачетной книжки, оценка1., оценка2. оценка п) И СЕССИЯ(номер зачетной книжки, результаты сдачи сессии). Связь между ними будет осуществляться по полю номер зачетной книжки (рис. 10.6)
Рис. 10.6. Вторая нормальная форма отношений
Понятие третьей нормальной формы связано с понятием транзитивной зависимости. Транзитивная зависимость наблюдается в том случае, если одно из двух описательных полей зависит от ключа, а другое описательное поле зависит от первого поля.
Отношение будет находиться в третьей нормальной форме, если оно находится во второй нормальной форме, и каждое не ключевое поле не транзитивно (т. е. напрямую) зависит от первичного ключа. Отношение студент находится в третьей нормальной форме. Если в состав описательных полей этого информационного объекта добавить фамилию старосты группы – староста, то появится транзитивная зависимость не ключевого поля староста от ключа через не ключевое поле группа.
Для устранения транзитивной зависимости описательных полей необходимо произвести «расщепление» исходного информационного объекта. В результате такого расщепления часть полей удаляется из исходного объекта и включается в состав других, новых информационных объектов: СТУДЕНТ(номер зачетной книжки, Ф., И., О., дата рождения, группа), ГРУППА <группа, староста)(рис. 10.7).
Рис. 10.7. Исключение транзитивной зависимости
Нормализация БД
Нормальная форма — требование, предъявляемое к отношениям в теории реляционных баз данных для устранения из базы избыточности, которая потенциально может привести к логически ошибочным результатам выборки или изменения данных.
Содержание
Нормализация баз данных
Процесс преобразования базы данных к виду, отвечающему нормальным формам, называется нормализацией. Нормализация позволяет обезопасить базу данных от логических и структурных проблем, называемых аномалиями данных. К примеру, когда существует несколько одинаковых записей в таблице, существует риск нарушения целостности данных при обновлении таблицы. Таблица, прошедшая нормализацию, менее подвержена таким проблемам, т.к. ее структура предполагает определение связей между данными, что исключает необходимость в существовании записей с повторяющейся информацией.
Происхождение и назначение нормальных форм
Понятие нормальной формы было введено Эдгаром Коддом при создании реляционной модели БД. Основное назначение нормальных форм — приведение структуры базы данных к виду, обеспечивающему минимальную избыточность. Устранение избыточности производится за счёт декомпозиции отношений (таблиц) таким образом, чтобы в каждом отношении хранились только первичные факты (то есть факты, не выводимые из других хранимых фактов). Таким образом, нормализация не имеет целью уменьшение или увеличение производительности работы или же уменьшение или увеличение объёма БД. Конечной целью нормализации является уменьшение потенциальной противоречивости хранимой в БД информации.
Типы нормальных форм
Нормализация может применяться к таблице, которая представляет собой правильное отношение.
Первая нормальная форма (1NF)
Таблица находится в первой нормальной форме, если каждый её атрибут атомарен. Под выражением «атрибут атомарен» понимается, что атрибут может содержать только одно значение. Таким образом, не существует 1NF таблицы, в полях которых могут храниться списки значений. Для приведения таблицы к 1NF обычно требуется разбить таблицу на несколько отдельных таблиц.
Замечание: в реляционной модели отношение всегда находится в 1 (или более высокой) нормальной форме в том смысле, что иные отношения не рассматриваются в реляционной модели. То есть само определение понятия отношение заведомо подразумевает наличие 1NF.
Вторая нормальная форма (2NF)
Таблица находится во второй нормальной форме, если она находится в первой нормальной форме, и при этом любой её атрибут, не входящий в состав первичного ключа, функционально полно зависит от первичного ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего первичного составного ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него атрибутов(частей). Или другими словами: в 2NF нет неключевых атрибутов, зависящих от части составного ключа (+ выполняются условия 1NF).
Третья нормальная форма (3NF)
Таблица находится в третьей нормальной форме (3NF), если она находится во второй нормальной форме 2NF и при этом любой ее неключевой атрибут зависит только от первичного ключа (Primary key, PK) (иначе говоря, один факт хранится в одном месте).
При решении практических задач в большинстве случаев третья нормальная форма является достаточной. Процесс проектирования реляционной базы данных, как правило, заканчивается приведением к 3NF.
Нормальная форма Бойса — Кодда (BCNF)
Это модификация третьей нормальной формы (в некоторых источниках именно 3NF называется формой Бойса — Кодда).
Таблица находится в BCNF, если она находится в 3NF, и при этом отсутствуют функциональные зависимости атрибутов первичного ключа от неключевых атрибутов. Таблица может находиться в 3NF, но не в BCNF, только в одном случае: если она имеет, помимо первичного ключа, ещё по крайней мере один возможный ключ. Все зависимые от первичного ключа атрибуты должны быть потенциальными ключами отношения. Если это условие не выполняется, для них создаётся отдельное отношение. Чтобы сущность соответствовала BCNF, она должна находиться в третьей нормальной форме. Любая сущность с единственным возможным ключом, соответствующая требованиям третьей нормальной формы, автоматически находится в BCNF.
Четвёртая нормальная форма (4NF)
Таблица находится в 4NF, если она находится в BCNF и не содержит нетривиальных многозначных зависимостей. Многозначная зависимость не является функциональной, она существует в том случае, когда из факта, что в таблице содержится некоторая строка X, следует, что в таблице обязательно существует некоторая определённая строка Y. То есть, таблица находится в 4NF, если все ее многозначные зависимости являются функциональными.
Пятая нормальная форма (5NF)
Таблица находится в 5NF, если она находится в 4NF и любая многозначная зависимость соединения в ней является тривиальной. Пятая нормальная форма в большей степени является теоретическим исследованием и практически не применяется при реальном проектировании баз данных. Это связано со сложностью определения самого наличия зависимостей «проекции — соединения», поскольку утверждение о наличии такой зависимости должно быть сделано для всех возможных состояний БД.
Доменно-ключевая нормальная форма (DKNF)
Отношение в ДКНФ не имеет аномалий модификации. Другими словами, что бы ни менялось — ничего не потеряется, если соблюдены все ограничения относительно ключей и доменов. Формулировка слишком общая, но суть ее заключается в том, что если выполнять некоторые правила, то при любых действиях с таблицей ее целостность не пострадает и вся необходимая информация сохранится. Если рассматривать на примере, то правила действуют примерно так: нельзя просто удалить категорию из таблицы категорий, если с этой категорией связаны, например, продукты из таблицы продуктов. Прежде чем удалять категорию, необходимо выполнить предварительные действия в таблице продуктов (например, поле отвечающее за id категории этого товара нужно сделать
Шестая нормальная форма (6NF)
Таблица находится в 6NF, если она находится в 5NF и удовлетворяет требованию отсутствия нетривиальных зависимостей. Зачастую 6NF отождествляют с DKNF.
См. также
Ссылки
DDL, SELECT | INSERT | UPDATE | MERGE | DELETE | JOIN | UNION | CREATE | ALTER | DROP
Сравнение синтаксиса
Типы реализаций
Flat file | Deductive | Dimensional | Иерархическая | Объектно-ориентированная | Temporal
Полезное
Смотреть что такое «Нормализация БД» в других словарях:
Нормализация — У этого термина существуют и другие значения, см. Нормализация (значения). Нормализация (в звукозаписи) это процесс выравнивания частотных характеристик при студийной звукозаписи на магнитный носитель. Коррекция необходима, поскольку… … Википедия
нормализация — стандартизация; упорядочение, утрясание, улаживание, налаживание Словарь русских синонимов. нормализация см. налаживание Словарь синонимов русского языка. Практический справочник. М.: Русский язык. З. Е. Алекса … Словарь синонимов
НОРМАЛИЗАЦИЯ — (франц. normalisation упорядочение от normal правильный, положенный), вид термической обработки стали, заключающийся в нагреве (выше верхней критической точки), выдержке и охлаждении на воздухе. Цель придание металлу однородной мелкозернистой… … Большой Энциклопедический словарь
Нормализация — определение доходов и расходов, характерных для нормально действующего бизнеса; исключает единовременные доходы и расходы, превышающие среднеотраслевые значения … Словарь терминов антикризисного управления
НОРМАЛИЗАЦИЯ — НОРМАЛИЗАЦИЯ, нормализации, мн. нет, жен. (книжн.). Действие по гл. нормализовать. Толковый словарь Ушакова. Д.Н. Ушаков. 1935 1940 … Толковый словарь Ушакова
нормализация — НОРМАЛИЗОВАТЬ, зую, зуешь; ованный; сов. и несов., что. Подчинить ( нять) норме. Н. орфографию. Н. отношения. Толковый словарь Ожегова. С.И. Ожегов, Н.Ю. Шведова. 1949 1992 … Толковый словарь Ожегова
НОРМАЛИЗАЦИЯ — (от лат. norma упорядоченный, правильный, урегулированный) англ. normalization; нем. Normalisierung. 1. Установление нормы, образца. 2. Приведение в нормальное состояние, в соответствие с принятой нормой; урегулирование. 3. В статистике… … Энциклопедия социологии
нормализация — и, ж. normalisation f. 1. Упорядочение, приведение в норму. Ож. 1936. Беру любой газетный лист и читаю: в целях нормализации партстроительства комячейка призывает к интенсификации партработы. 1922. Горнфельд Новые словечки 4. Торможение процессов … Исторический словарь галлицизмов русского языка
нормализация — 1. Установление нормы, образца. 2. Урегулирование, приведение к норме, нормальному состоянию. 3. То же, что стандартизация. Словарь практического психолога. М.: АСТ, Харвест. С. Ю. Головин. 1998 … Большая психологическая энциклопедия
нормализация — Метод группирования данных, позволяющий не хранить повторяющиеся группы данных и избежать их избыточности. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN normalisation … Справочник технического переводчика
НОРМАЛИЗАЦИЯ — вид термической обработки стали, заключающийся в нагревании до закалочных температур с последующим охлаждением на воздухе. Н. приводит к получению мелкозернистой стали с однородной структурой, повышению прочности, пластичности и ударной вязкости … Большая политехническая энциклопедия
Нормализация
Нормализация представляет процесс разделения данных по отдельным связанным таблицам. Нормализация устраняет избыточность данных (data redundancy) и тем самым избежать нарушения целостности данных при их изменении, то есть избежать аномалий изменения (update anomaly).
Как правило, нормализация преимущественно применяется при восходящем подходе проектировании базы данных, то есть когда мы все атрибуты, которые надо сохранить в бд, группируем по сущностям, для которых затем создаются таблицы. Однако при нисходящем подходе, когда вначале выявляются сущности, а затем их атрибуты и связи между ними, нормализация также может применяться, например, для проверки корректности спроектированных таблиц.
В ненормализованной форме таблица может хранить информацию о двух и более сущностях. Также она может содержать повторяющиеся столбцы. Также столбцы могут хранить повторяющиеся значения. В нормализованной же форме каждая таблица хранит информацию только об одной сущности.
Нормализация предполагает применение нормальных форм к структуре данных. Существуют 7 нормальных форм. Каждая нормальная форма (за исключением первой) подразумевает, что к данным уже была применена предыдущая нормальная форма. Например, прежде чем применить третью нормальную форму к данным должна быть применена вторая нормальная форма. И строго говоря, база данных считается нормализованной, если к ней применяется третья нормальная форма и выше.
Первая нормальная форма (1NF) предполагает, что сохраняемые данные на пересечении строк и столбцов должны представлять скалярное значение, а таблицы не должны содержать повторяющихся строк.
Вторая нормальная форма (2NF) предполагает, что каждый столбец, не являющийся ключом, должен зависеть от первичного ключа.
Третья нормальная форма (3NF) предполагает, что каждый столбец, не являющийся ключом, должен зависеть только от первичного ключа.
Нормальная форма Бойса-Кодда (BCNF) является немного более строгой версией третьей нормальной формы.
Пятая нормальная форма (5NF) разделяет таблицы на более малые таблицы для устранения избыточности данных. Разбиение идет до тех пор, пока нельзя будет воссоздать оригинальную таблицу путем объединения малых таблиц.
Шестая нормальная форма (domain key normal form / 6NF). Каждое ограничение в связях между таблицами должно зависеть только от ограничений ключа и ограничений домена, где домен представляет набор допустимых значений для столбца. Эта форма предотвращает добавление недопустимых данных путем установки ограничения на уровне отношений между таблицами, но не на уровне таблиц или столбцов. Данная форма, как правило, не применима на уровне СУБД, в том числе и в SQL Server.
Функциональная зависимость
Например, возьмем следующую таблицу, которая представляет университетские курсы:
Course | Teacher | Position |
Математика | Смит | Профессор |
Алгориты | Адамс | Ассистент |
JavaScript | Адамс | Ассистент |
Здесь атрибут Teacher функционально зависит от атрибута Course (Course → Teacher). То есть зная название курса, мы можем определить его преподавателя. И в этом случае можно говорить, что между атрибутами Course и Teacher есть связь 1:1, а между Teacher и Course связь 1:N, так как есть несколько курсов, которые может вести один преподаватель. При этом атрибут Course функционально не зависит от атрибута Teacher.
Кроме того, здесь можно проследить еще две функциональных зависимости. В частности, атрибут Position зависит от атрибута Teacher (Teacher → Position). Зная имя преподавателя, мы можем определить его должность.
В таблице в нормализованной базе данных единственным детерминантом должен быть атрибут, который является первичным ключом. А все остальные атрибуты должны функционально зависеть от первичного ключа.