Реляционная модель данных

Понятие реляционный (relation – отношение) связано с работами британского ученого Эдгара Кодда, работы которого стали основой теории реляционных баз данных. Реляционная модель ориентирована на организацию данных в виде двумерных отношений (таблиц). Каждое отношение обладает следующими свойствами:

1. Каждый элемент отношения – один элемент данных.

2. Все элементы в столбце однородные, т.е. имеют одинаковый тип (текстовый, числовой, логический и т.д.).

3. Каждый столбец имеет уникальное имя.

4. Одинаковые строки отсутствуют.

5. Порядок следования строк и столбцов может быть произвольным.

 

Например: Информации о студенте (отношение СТУДЕНТ).

№ студенческого билета Фамилия Имя Отчество Дата рождения Группа
Сергеев Петр Михайлович 01.01.76
Петрова Анна Владимировна 15.03.75
Еремин Андрей Борисович 14.04.76

Основные понятия реляционной модели данных: тип данных, домен, атрибут, кортеж, ключ.

Понятие тип данных в реляционной модели данных полностью эквивалентно соответствующему понятию в языках программирования. Набор поддерживаемых типов может отличаться, но следующие типы поддерживаются практически всегда:

· числовые (целочисленные, вещественные);

· строковые;

· денежные;

· временные (дата/время);

· типы двоичных объектов (не имеют аналогов в языках программирования).

Домен представляет собой допустимое потенциальное множество значений данного типа. Например, для столбца «Фамилия» домен «Фамилия» будет базироваться на строковом типе данных, и в него будут входить только те строки, которые могут обозначать фамилию (в частности такие строки не могут начинаться с мягкого знака). Домен «Дата рождения» для столбца «Дата рождения» определяется на базовом временном типе данных – данный домен содержит только допустимый диапазон дат рождения студентов.

В самом общем виде домен определяется заданием базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу. Если при проверке этого логического выражения получается результат «истина», то элемент данных является элементом домена.

Столбцы отношения называются атрибутами, им присваиваются имена, по которым к ним затем производится обращение. Список имен атрибутов отношения с указанием имен доменов (или типов, если домены не поддерживаются) называется схемой отношения.

Например, схема отношения СТУДЕНТ может быть представлена так:

СТУДЕНТ {№_студенческого_билета Числовой.

Фамилия Строковый.

Имя Строковый.

Отчество Строковый.

Дата_рождения Дата/Время

Группа Числовой}

Степень отношения – это число его атрибутов. Отношение степени один называют унарным, степени два – бинарным, степени три – тернарным, …, а. Степени n – n-арным. Степень отношения СТУДЕНТ равна шести. Схемой базы данных называется множество именованных схем отношений.

Кортеж (запись), соответствующий данной схеме отношений, представляет собой множество пар {имя атрибута, значение}, которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения. Значение должно принадлежать домену. Степень кортежа равна соответствующей степени отношения.

Кардинальным числом или мощностью отношения называется число его кортежей. Например, мощность отношения СТУДЕНТ равна 3.

Пустые значения. В некоторых случаях какой-либо атрибут отношения может быть неприменим. Например, если мы при помощи отношения СТУДЕНТ собираемся хранить информацию об абитуриентах, посещающих подготовительные курсы, мы не сможет определить
№ студенческого билета и Группу. Кроме того, при воде данных некоторые из них могут быть неизвестны. Для обозначения пустых значений атрибутов используется слово NULL.

Ключи отношения. Никакие два кортежа отношения не могут быть дубликатами друг друга в любой произвольно заданный момент времени. Таким образом, в отношении всегда должен присутствовать некоторый атрибут (или набор атрибутов), однозначно определяющий каждый кортеж отношения и обеспечивающий его уникальность. Такой атрибут (или набор атрибутов) называется первичным ключом отношения.

Первичный ключ отношения обладает следующими свойствами:

· Уникальность. В произвольный момент времени никакие два различных кортежа отношения не имеют одного и того же значения для атрибутов первичного ключа.

· Минимальность. Ни один из атрибутов не может быть исключен из первичного ключа без нарушения уникальности.

Для каждого отношения свойством уникальности обладает, по крайней мере, полный набор его атрибутов. Однако требуется обеспечить и условие минимальности. Поэтому, как правило, в отношении всегда имеется один атрибут, обладающий свойством уникальности и являющийся первичным ключом. В зависимости от количества атрибутов, входящих в ключ, различают простые и сложные (составные) ключи. Простой ключ – ключ, содержащий только один атрибут. В качестве типа данных лучше использовать самый простой и короткий тип данных, например целочисленный. Составной ключ состоит из нескольких атрибутов. В отношении СТУДЕНТ в первичный ключ может быть включен атрибут № студенческого билета.

Связанные отношения. В реляционной модели данные представляются в виде совокупности взаимосвязанных отношений. Рассмотрим отношение УСПЕВАЕМОСТЬ, в котором содержатся сведения об успеваемости студентов по различным предметам.

Отношение УСПЕВАЕМОСТЬ

Порядковый номер № студенческого билета Предмет Оценка
Высшая математика
Информатика Null
Высшая математика
Информатика Null
Высшая математика
Информатика Null

Атрибут «№ студенческого билета» таблицы УСПЕВАЕМОСТЬ содержит идентификатор студента. Если нужно узнать имя студента, соответствующее строкам в таблице УСПЕВАЕМОСТЬ, то следует найти это же значение идентификатора студента в поле «№ студенческого билета» таблицы СТУДЕНТЫ и в найденной строке прочесть значение поля «Имя». Таким образом, связь между таблицами СТУДЕНТЫ и УСПЕВАЕМОСТЬ устанавливается по атрибуту «№ студенческого билета».

Внешние ключи отношения. В базах данных одни и те же имена атрибутов часто используются в разных отношениях. В рассмотренных примерах атрибут «№ студенческого билета» присутствует как в отношении СТУДЕНТЫ, так и в отношении УСПЕВАЕМОСТЬ. Внешний ключ – это атрибут (или несколько атрибутов) одного отношения, являющиеся ключом другого отношения. Таким образом, атрибут «№ студенческого билета» отношения УСПЕВАЕМОСТЬ является внешним ключом. Внешние ключи используются для установления логических связей между отношениями. Связь между двумя отношениями устанавливается путем присваивания значениям внешнего ключа одного отношения значений ключа другого отношения. Внешние ключи могут быть простыми, либо составными.

Условия целостности данных. Для непротиворечивости и однозначности информации в базе данных в реляционной модели устанавливаются ограничительные условия –это правила, определяющие возможные значения данных. Ограничения позволяют свести к минимуму ошибки, возникающие при обновлении и обработке данных. Важнейшими ограничениями являются:

· категорийная целостность (никакой атрибут первичного ключа не может быть пустым);

· ссылочная целостность (если два отношения связаны между собой, то внешний ключ отношения должен содержать только те значения, которые уже имеются среди значений ключа, по которому осуществляется связь).

При обновлении ссылающегося отношения необходимо следить за тем, чтобы не появлялись некорректные значения внешнего ключа. А при удалении кортежа из отношения, на которое ведется ссылка, возможно использование одного из трех подходов:

1. Запрещается удалять кортеж, на который существуют ссылки.

2. При удалении кортежа, на который имеются ссылки, во всех ссылающихся кортежах значение внешнего ключа автоматически становятся неопределенными.

3. Каскадное удаление. При удалении кортежа из отношения, на которое ведет ссылка, из ссылающегося отношения автоматически удаляются все ссылающиеся кортежи.

Типы связей между отношениями. При установлении связи между двумя отношениями одно из них будет являться главным, а второе – подчиненным.

Различают четыре типа связей:

· Один к одному – каждому кортежу одного отношения соответствует один кортеж другого отношения;

· Один ко многим – каждому кортежу главного отношения может соответствовать несколько кортежей подчиненного отношения;

· Многие к одному – нескольким кортежам главного отношения может соответствовать один кортеж подчиненного отношения;

· Многие ко многим – один кортеж главного отношения связан с несколькими кортежами подчиненного отношения, а один кортеж подчиненного отношения связан с несколькими кортежами главного отношения.

В главном отношении всегда доступны все содержащиеся в нем кортежи. В подчиненном же отношении доступны только те кортежи, у которых значения атрибутов внешнего ключа совпадают со значением соответствующих атрибутов текущего кортежа главного отношения. Изменение кортежа главного отношения приведет к изменению множества доступных кортежей подчиненного отношения, а изменение текущего кортежа в подчиненном кортеже не вызовет никаких изменений ни в одном из отношений.

Индексы. Индекс представляет собой указатель на данные. Его можно сравнить с указателем, помещаемым в конце книги. Чтобы найти в книге страницы, относящиеся к некоторой теме, проще обратиться к указателю, в котором устанавливается соответствие между перечисленными в алфавитном порядке темами и номерами страниц, и сразу определить страницы, которые следует посмотреть. Индекс базы данных предназначен для аналогичных целей. Индекс предоставляет информацию о точном физическом расположении данных. В индексе данные хранятся в упорядоченном виде. При добавлении и удалении данных, индекс изменяется. При поиске по индексированному столбцу, поиск производится в индексе. Если поиск прошел успешно, то в индексе устанавливается точное местоположение искомых данных.

Различают несколько типов индексов:

· Простые индексы представляют собой простейший и наиболее распространенный тип индексов. Он строится на основе одного столбца отношения.

· Составные индексы строятся по двум и более столбцам. При этом последовательность столбцов, по которым создается индекс, влияет на скорость поиска данных.

Правила нормализации. Правила нормализации позволяют проверить правильность структуры таблиц. Процесс применения этих правил к структуре базы данных называется нормализацией базы данных или просто нормализацией. Нормализацию рекомендуется выполнять после внесения в базу данных всех элементов данных и создания предварительной структуры. Цель этого процесса — проверить правильность распределения элементов данных по таблицам. Однако нормализация не позволяет проверить правильность самих элементов данных. Существует пять нормальных форм. Опишем первые три формы, поскольку их применения достаточно для большинства баз данных.

Первая нормальная форма. Первая нормальная форма содержит правила:

1. Каждая ячейка на пересечении строки и столбца в таблице должна содержать неделимую информацию.

2. В таблице должны отсутствовать повторяющиеся группы столбцов.

Предположим, что таблица содержит следующие столбцы:

- Код поставщика

- Название компании

- Имя контакта

- Телефоны

Столбец Телефоны является нарушением первой нормальной формы, т.к. поставщик может указывать несколько телефонов. Этот столбец следует удалить из таблицы и включить в отдельную таблицу Телефоны, имеющую следующую структуру:

- Код поставщика

- Телефон

Причем оба поля в таблице Телефоны следует объявить ключевыми.