В 1970-1971 годах Е.Ф. Кодд опубликовал две статьи, в которых ввел реляционную модель данных и реляционные языки обработки данных - реляционную алгебру и реляционное исчисление.
· Реляционная алгебра - Процедурный язык обработки реляционных таблиц.
· Реляционное исчисление - Непроцедурный язык создания запросов.
Все существующие к тому времени подходы к связыванию записей из разных файлов использовали физические указатели или адреса на диске. В своей работе Кодд продемонстрировал, что такие базы данных существенно ограничивают число типов манипуляций данными. Более того, они очень чувствительны к изменениям в физическом окружении. Когда в компьютерной системе устанавливался новый накопитель или изменялись адреса хранения данных, требовалось дополнительное преобразование файлов. Если к формату записи в файле добавлялись новые поля, то физические адреса всех записей файла изменялись. То есть такие базы данных не позволяли манипулировать данными так, как это позволяла бы логическая структура. Все эти проблемы преодолела реляционная модель, основанная на логических отношениях данных.
Существует два подхода к проектированию реляционной базы данных.
· Первый подход заключается в том, что на этапе концептуального проектирования создается не концептуальная модель данных, а непосредственно реляционная схема базы данных, состоящая из определений реляционных таблиц, подвергающихся нормализации.
· Второй подход основан на механическом преобразовании функциональной модели, созданной ранее, в нормализованную реляционную модель. Этот подход чаще всего используется при проектировании больших, сложных схем баз данных, необходимых для корпоративных информационных систем.
Табл.1. Основные определения реляционных СУБД
Термин | Определение |
Реляционная модель данных | Организует и представляет данные в виде таблиц или реляций. |
Реляционная база данных (РБД, RDBMS). | База данных, построенная на реляционной модели. |
Реляция (таблица-элементарная информационная единица) | Двумерная таблица, содержащая строки и столбцы данных. |
Степень реляции. | Количество атрибутов реляции. При том необходимо помнить, что никакие два атрибута реляции не могут иметь одинаковых имен. |
Кортежи | Строки реляции (таблицы), соответствуют объекта, конкретному событию или явлению. |
Атрибуты | Столбцы таблицы, характеризующие признаки, параметры объекта, события, явления. |
Область атрибута | Набор всех возможных значений, которые могут принимать атрибуты. Если в процессе работы возникает ситуация, что атрибут неприменим или значения одного или нескольких атрибутовстроки пока неизвестны, то строка запишется в базуданных с пустыми значениямиэтих атрибутов (NULL строка). |
Пустое значение | Значение, приписываемое атрибуту в кортеже, если атрибут неприменим или его значение неизвестно |
Ключ | Любой набор атрибутов, однозначно определяющий каждый кортеж реляционной таблицы. |
Ключ реляции | Ключ также можно описать как минимальное множество атрибутов, однозначно определяющих (или функционально определяющих)каждое значение атрибута в кортеже. |
Составной ключ | Ключ содержащий два или более атрибута. |
Потенциальный ключ | В любой данной реляционной таблице может оказаться более одного набора атрибутов. Обычно в качестве первичного ключа выбирают потенциальный ключ, которым проще всего пользоваться при повседневной работе по вводу данных. |
Первичный ключ. | Поле или набор полей, однозначно идентифицирующий запись. |
Внешний ключ. | Набор атрибутов одной таблицы, являющийся ключом другой (или той же самой) таблицы; используется для определения логических связей между таблицами. Атрибуты внешнего ключа не обязательно должны иметь те же имена, что и атрибуты ключа, которым они соответствуют. |
Рекурсивный внешний ключ. | Внешний ключ, ссылающийся на свою собственную реляционную таблицу. |
Родительская реляция (таблица) | Таблица, поля которой входят в другую таблицу. |
Дочерняя реляция (таблица) | Таблица, поля которой используют информацию из полей другой таблицы, являющейся по отношению к данной родительской. |
Отношение один-к-одному | Когда одной записи в родительской таблицы соответствует одна запись в дочерней таблице |
Отношение один-ко-многим | Когда одной записи в родительской таблицы соответствует несколько записей в дочерней таблице |
Отношение многие-ко-многим | Когда многим записям в родительской таблицы соответствуют несколько записей в дочерней таблице |
Рекурсивное отношение. | Отношение, связывающее объектное множество с ним самим. |
View (Представления) | Информационная единица РБД (по структуре аналогичная таблице), записи которой сформированы в результате выполнения запросов к другим таблицам. |
Ссылочная целлостность | Адекватное воспроизведение записей в ссылочных полях таблиц. |
Триггер | Средство обеспечения ссылочной целостности на основе механизма каскадных изменений. |
Индекс | Механизмы быстрого доступа к хранящимся в таблицах данных путем их предварительной сортировки. |
Транзакция | Такое воздействие на СУБД, которое переводит ее из одного целостного состояния в другое. |
Как следует из определения ссылочной целостности при наличии в ссылочных полях двух таблиц различного представления данных происходит нарушение ссылочной целостности, такое нарушение делает информацию в базе данных недостоверной. Чтобы предотвратить потерю ссылочной целостности, используется механизм каскадных изменений (который чаще всего реализуется специальными объектами СУБД - триггерами). Данный механизм состоит в следующей последовательности действий:
· при изменении поля связи в записи родительской таблицы следует синхронно изменить значения полей связи в соответствующих записях дочерней таблицы;
· при удалении записи в родительской таблицы следует удалить соответствующие записи и в дочерней таблице.
Нормализация - процесс приведения реляционных таблиц к стандартному виду. В базе данных могут присутствовать такие проблемы как:
· Избыточность данных. Повторение данных в базе данных.
· Аномалия обновления. Противоречивость данных, вызванная их избыточностью и частичным обновлением.
· Аномалия удаления. Непреднамеренная потеря данных, вызванная удалением других данных.
· Аномалия ввода. Невозможность ввести данные в таблицу, вызванная отсутствием других данных.
Для решения этих проблем применяют разбиение таблиц - разделение таблицы на несколько таблиц. Для того чтобы это сделать пользуются нормальными формами или правилами структурирования таблиц.
Первая нормальная форма
Реляционная таблица находится в первой нормальной форме (1НФ), если значения в таблице являются атомарными для каждого атрибута таблицы, т.е. такими значениями, которые не являются множеством значений или повторяющейся группой. В определении Кодда реляционной модели уже заложено, что реляционные таблицы находились в 1НФ,
Вторая нормальная форма.
Реляционная таблица находится во второй нормальной форме (2НФ), если никакие неключевые атрибуты не являются функционально зависимыми лишь от части ключа. Таким образом, 2НФ может оказаться нарушена только в том случае, когда ключ составной.
Функциональная зависимость. Значение атрибута в кортеже однозначно определяет значение другого атрибута в кортеже.
Более формально можно определить функциональную зависимость следующим образом: если А и В - атрибуты в таблице В, то запись ФЗ (функциональную зависимость): А - " В обозначает, что если два кортежа в таблице В имеют одно и то же значение атрибута А, то они имеют одно и то же значение атрибута В. Это определение такжеприменимо,если А и В - множества столбцов, а не просто отдельные столбцы.
Атрибут в левой части ФЗ называется детерминантом, так как его значение определяет значение атрибута в правой части. Ключ таблицы является детерминантом, так как его значение однозначно определяет значение каждого атрибута таблицы.
Процесс разбиения на две 2НФ-таблицы состоит из следующих шагов:
1. Создается новая таблица, атрибутами которой будут атрибуты исходной таблицы, входящие в противоречащую правилу ФЗ. Детерминант ФЗ становится ключом новой таблицы.
2. Атрибут, стоящий в правой части ФЗ, исключается из исходной таблицы.
3. Если более одной ФЗ нарушают 2НФ, то шаги 1 и 2 повторяются для каждой такой ФЗ.
4. Если один и тот же детерминант входит в несколько ФЗ, то все функционально зависящие от него атрибуты помещаются в качестве неключевых атрибутов в таблицу, ключом которой будет детерминант.
Третья нормальная форма
Реляционная таблица имеет третью нормальную форму (ЗНФ), если для любой ФЗ: Х - У - Х является ключом. Заметим, что любая таблица, удовлетворяющая ЗНФ, также удовлетворяет и 2НФ. Однако обратное неверно.
Критерий нормальной формы Бойса-Кодда (НФБК) утверждает, что таблица удовлетворяет ЗНФ, если в ней нет транзитивных зависимостей. Транзитивная зависимость возникает, если неключевой атрибут функционально зависит от одного или более неключевых атрибутов. То есть этот критерий учитывает следующие два случая: