ПЭИС : 4.Теоретические основы реляционной модели данных. Фундаментальные свойства отношений. Нормализация схем отношений
Реляционная модель (РМ) основана на понятии «отношения» (Relationship), она наиболее распространена сегодня.
Достоинства модели:
- простота, наличие небольшого набора абстракций, которые позволяют просто моделировать предметные области и допускают точные формальные определения, являясь интуитивно понятными;
- наличие хорошо разработанного и мощного математического аппарата;
- возможность операций над данными без знания их физической организации.
Недостатками реляционной модели:
- низкую эффективность хранения данных по сравнению с другими моделями;
- недостаточное быстродействие при реализации некоторых операций;
- ограниченность представления сложных структур данных;
- невозможность адекватного отражения семантики предметной области.
Основными понятиями модели являются: тип данных, домен, атрибут, кортеж, первичный ключ и отношение.
Тип данных определяет множество значений и операций, которые могут быть применены к значениям.
Под доменом понимают множество допустимых значений простого типа. Все элементы домена относятся к 1 типу данных и отвечают логическому условию. Элемент домена — число, символьная строка, дата и т. д.
Атрибут имеет тот же смысл, что и свойство объекта в ER- модели, т. е. это элементарная единица структуры понятия, которая служит для уточнения, идентификации, классификации, числовой характеристики или выражения состояния сущности. Значения атрибута относятся к одному из доменов. Атрибут имеет имя и значение. Значения атрибутов составляют основную часть сведений, хранящихся в БД.
Схемой отношения называют именованное множество пар (Ai, Di), i=1,k, где Ai — имя атрибута, Di — имя домена, k — ранг отношения. Например: Студенты ((имя, имена людей), (возраст, числа от 17 до 59), (номер паспорта, целые числа)) ранг=3.
Схема реляционной базы данных представляет собой совокупность схем отношений и содержит следующие компоненты:
S= < A, D, R, Rel, F>, где A — множество атрибутов, D — множество доменов, R — множество имен отношений, Rel — множество схем отношений, F — множество ограничений.
Кортеж отношения — это множество пар вида «имя атрибута, значение атрибута», причем каждый атрибут отношения один и только один раз входит в кортеж. # (Саша, 19, 222222) или (Катя, 20, 353453) или (Настя, 18, 424242)
Отношение — это множество кортежей, соответствующих одной схеме отношения. Элементами отношений являются кортежи.
# R={(Саша, 19,…), (Катя, 20,…), (Настя, 18,…), …}
Фундаментальные свойства отношений:
- Отношения не содержат кортежей-дубликатов.
- Каждое отношение имеет ключ (атрибут, набор атрибутов), значения которого однозначно идентифицируют каждую строку таблицы отношения.
- Порядок кортежей в отношении не имеет значения.
- Порядок атрибутов отношения не имеет значения, так как они именованы.
- Значения всех атрибутов являются атомарными-неделимыми, т. к. домен по определению не может содержать сложных типов. В реляционных БД допускаются только нормализованные отношения.
Для связи между разными отношениями используется понятие внешнего ключа. Внешним ключом называется атрибут (совокупность атрибутов), который является ключом Ak в другом отношении R1 и его значения принадлежат домену Dk отношения R2, т.е отношение, в котором определен внешний ключ ссылается на другое отношение в котором такой же атрибут является первичным ключом.
Компоненты реляционной модели данных (согласно Дейту модель состоит из 3 частей)
- описание структуры данных,
- описание операций над данными (манипуляционная часть)
- описание ограничений целостности БД, то есть условий правильности и непротиворечивости данных.
Для описания структуры данных используются только нормализованные отношения. Для описания операций над данными используются два механизма: реляционная алгебра и реляционное исчисление. Первая базируется на теории множеств, а реляционные исчисления — на логическом аппарате исчисления предикатов 1-ого порядка.
В модели должны выполняться 2 базовых условия целостности:
- Любой кортеж любого отношения должен быть отличим от любого другого кортежа этого отношения;
- Для каждого значения внешнего ключа в отношении Х должен найтись кортеж с таким же значением первичного ключа в отношении У, на которое он ссылается.
РБД наиболее распространены в настоящее время. В РБД должна поддерживаться целостность данных. Если схема РБД неудачна, то она не обеспечивает этой целостности. Нарушение целостности называют аномалиями. Аномалии могут быть вызваны избыточностью отношений. Для устранения избыточности применяют нормализацию схем отношений.
Форма представления схемы РБД на каком-либо шаге этого процесса называется нормальной формой. Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений. В РБД выделяется последовательность нормальных форм:
- Первая нормальная форма (1NF);
- Вторая нормальная форма (2NF);
- Третья нормальная форма (3NF);
- Нормальная форма Бойса — Кодда (BCNF);
- Четвертая нормальная форма (4NF);
- Пятая нормальная форма, или форма проекции соединения (5NF или PJ/NF).
Основные свойства нормальных форм:
- Каждая следующая NF улучшает свойства предыдущей;
- При переходе к следующей NF свойства предыдущих NF сохраняются.
Дадим некоторые определения:
Функциональная зависимость. В отношении R атрибут Y функционально зависит от атрибута X — если каждому значению X соответствует в точности одно значение Y. Обозначается y:x→y (x функционально определяет y)
Полная функциональная зависимость. Функциональная зависимость y:x→y называется полной, если атрибут Y не зависит функционально от любого точного подмножества X
Транзитивная функциональная зависимость. Функциональная зависимость y:x→y называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости x →z и z→y (обратная зависимость отсутствует).
Возможный ключ. Возможным ключом отношения называется его атомарный или составной атрибут, значения которого полностью функционально определяют значения всех остальных атрибутов отношения.
Неключевой атрибут — любой атрибут отношения, не входящий в состав первичного ключа.
Взаимно независимые атрибуты. Два или более атрибута называются взаимно независимыми, если не один из них не зависит функционально от других атрибутов.
Детерминант. Детерминантом называется любой атрибут, от которого полностью функционально зависит некоторый другой атрибут.
Нормализация
Первая нормальная форма (1NF)
Таблица находится в первой нормальной форме, если каждый её атрибут атомарен. Под выражением «атрибут атомарен» понимается, что атрибут может содержать только одно значение. Таким образом, не существует 1NF таблицы, в полях которых могут храниться списки значений. Для приведения таблицы к 1NF обычно требуется разбить таблицу на несколько отдельных таблиц.
Замечание: в реляционной модели отношение всегда находится в 1 (или более высокой) нормальной форме в том смысле, что иные отношения не рассматриваются в реляционной модели. То есть само определение понятия отношение заведомо подразумевает наличие 1NF.
Вторая нормальная форма (2NF)
Таблица находится во второй нормальной форме, если она находится в первой нормальной форме, и при этом любой её атрибут, не входящий в состав первичного ключа, функционально полно зависит от первичного ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего первичного составного ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него атрибутов (частей). Или другими словами: в 2NF нет неключевых атрибутов, зависящих от части составного ключа (+ выполняются условия 1NF).
Третья нормальная форма (3NF)
Таблица находится в третьей нормальной форме (3NF), если она находится во второй нормальной форме 2NF и при этом любой ее неключевой атрибут зависит только от первичного ключа (Primary key, PK) (иначе говоря, один факт хранится в одном месте).
Таким образом, отношение находится в 3NF тогда и только тогда, когда оно находится во 2NF и отсутствуют транзитивные зависимости неключевых атрибутов от ключевых. Транзитивной зависимостью неключевых атрибутов от ключевых называется следующая: A → B и B → C, где A — набор ключевых атрибутов (ключ), B и С — различные множества неключевых атрибутов.
При решении практических задач в большинстве случаев третья нормальная форма является достаточной. Процесс проектирования реляционной базы данных, как правило, заканчивается приведением к 3NF.
Нормальная форма Бойса — Кодда (BCNF)
Это модификация третьей нормальной формы (в некоторых источниках именно 3NF называется формой Бойса — Кодда).
Таблица находится в BCNF, если она находится в 3NF, и при этом отсутствуют функциональные зависимости атрибутов первичного ключа от неключевых атрибутов. Таблица может находиться в 3NF, но не в BCNF, только в одном случае: если она имеет, помимо первичного ключа, ещё по крайней мере один возможный ключ. Все зависимые от первичного ключа атрибуты должны быть потенциальными ключами отношения. Если это условие не выполняется, для них создаётся отдельное отношение. Чтобы сущность соответствовала BCNF, она должна находиться в третьей нормальной форме. Любая сущность с единственным возможным ключом, соответствующая требованиям третьей нормальной формы, автоматически находится в BCNF.
Четвёртая нормальная форма (4NF)
Таблица находится в 4NF, если она находится в BCNF и не содержит нетривиальных многозначных зависимостей. Многозначная зависимость не является функциональной, она существует в том случае, когда из факта, что в таблице содержится некоторая строка X, следует, что в таблице обязательно существует некоторая определённая строка Y. То есть, таблица находится в 4NF, если все ее многозначные зависимости являются функциональными.
Пятая нормальная форма (5NF)
Таблица находится в 5NF, если она находится в 4NF и любая многозначная зависимость соединения в ней является тривиальной. Пятая нормальная форма в большей степени является теоретическим исследованием и практически не применяется при реальном проектировании баз данных. Это связано со сложностью определения самого наличия зависимостей «проекции — соединения», поскольку утверждение о наличии такой зависимости должно быть сделано для всех возможных состояний БД.
Доменно-ключевая нормальная форма (DKNF)
Отношение в ДКНФ не имеет аномалий модификации. Другими словами, что бы ни менялось — ничего не потеряется, если соблюдены все ограничения относительно ключей и доменов. Формулировка слишком общая, но суть ее заключается в том, что если выполнять некоторые правила, то при любых действиях с таблицей ее целостность не пострадает и вся необходимая информация сохранится. Если рассматривать на примере, то правила действуют примерно так: нельзя просто удалить категорию из таблицы категорий, если с этой категорией связаны, например, продукты из таблицы продуктов. Прежде чем удалять категорию, необходимо выполнить предварительные действия в таблице продуктов (например, поле отвечающее за id категории этого товара нужно сделать NULL).
Шестая нормальная форма (6NF)
Таблица находится в 6NF, если она находится в 5NF и удовлетворяет требованию отсутствия нетривиальных зависимостей. Зачастую 6NF отождествляют с DKNF.