
- •4. Реляционная модель данных
- •4.1. Определение реляционной модели
- •Элементы реляционной модели
- •Индексирование и связывание таблиц
- •4.2.1. Индексирование
- •Связывание таблиц
- •Основные виды связи таблиц
- •Связь 1:1
- •Связь вида 1:м
- •Связь вида м:1
- •Связь вида м:м
- •4.4. Контроль целостности связей
- •4.5.Теоретические языки запросов
4.5.Теоретические языки запросов
Операции, выполняемые над отношениями, можно разделить на две группы. Первую группу составляют классические теоретико-множественные операции над множествами, к которым относятся операции: объединение, пересечение, разность и декартово произведение. Вторую группу составляют специальные реляционные операции: проекция, соединение, деление и выбор.
В различных СУБД реализована некоторая часть операций над отношениями, определяющая в какой-то мере возможности данной СУБД и сложность реализации запросов к БД.
В реляционных СУБД для выполнения операций над отношениями используются две группы языков, имеющие в качестве своей математической основы теоретические языки запросов, предложенные Э. Коддом:
Реляционная алгебра;
Реляционное исчисление.
Эти языки представляют минимальные возможности реальных языков манипулирования данными в соответствии с реляционной моделью данных и эквивалентны друг другу по своим выразительным возможностям. Существуют не очень сложные правила преобразования запросов между ними.
В реляционной алгебре операнды и результаты всех действий являются отношениями. Языки реляционной алгебры являются процедурными, так как отношение, являющееся результатом запроса к реляционной БД, вычисляется при выполнении последовательности реляционных операторов, применяемым к отношениям. Операторы состоят из операндов, в роли которых выступают отношения и реляционные операции. Результатом реляционной операции является отношение.
Языки исчислений, в отличие от реляционной алгебры, являются непроцедурными (описательными или декларативными) и позволяют выражать запросы с помощью предиката первого порядка (высказывания в виде функции), которому должны удовлетворять кортежи или домены отношений. Запрос к БД, выполненный с использованием подобного языка, содержит лишь информацию о желаемом результате. Для этих языков характерно наличие наборов правил для записи запросов. В частности к языкам этой группы относится язык SQL.
При рассмотрении языков реляционной алгебры и исчислений используем БД, включающую в себя следующие таблицы:
S (поставщики);
P (Детали);
SP (поставки).
Первичными ключами этих таблиц являются соответственно: П# (код поставщика), Д# (код детали) и составной ключ (П#, Д#). Содержимое таблиц приведено на рис. 4.6. Предположим, что в рассматриваемых языках запросов нет ограничений на употребление символов русского алфавита в именах атрибутов. Каждое из полей П# и Д# таблицы SP в отдельности является внешним ключом по отношению к таблицам S и P соответственно.
Предположим, что имена доменов (множеств допустимых значений) совпадают с именами атрибутов. Исключение составляют атрибуты Город_П (город, в котором находится поставщик) и Город_Д (город, в котором выпускается деталь), которые имеют общий домен: множество названий городов. Имя этого домена может быть, например, просто Город. Характеристики доменов, как типов данных следующие: Д# - строка символов длиной 5, Имя – строка символов длиной 20, Статус – целое, Город – строка символов длиной 15, Д# - строка символов длиной 6, Тип – строка символов длиной 6, Вес – целое, Количество – целое.
S
П# |
Имя |
Статус |
Город_П |
S1 |
Сергей |
20 |
Москва |
S2 |
Иван |
10 |
Иркутск |
S3 |
Борис |
30 |
Иркутск |
S4 |
Николай |
20 |
Москва |
S5 |
Андрей |
30 |
Чита |
P
Д# |
Название |
Тип |
Вес |
Город_Д |
P1 |
Гайка |
Каленый |
12 |
Москва |
P2 |
Болт |
Мягкий |
17 |
Иркутск |
P3 |
Винт |
Твердый |
17 |
Ангарск |
P4 |
Винт |
Каленый |
14 |
Москва |
P5 |
Палец |
Твердый |
12 |
Иркутск |
P6 |
шпилька |
каленый |
19 |
Москва |
SP
П# |
Д# |
Количество |
S1 |
P1 |
300 |
S1 |
P2 |
200 |
S1 |
P3 |
400 |
S1 |
P4 |
200 |
S1 |
P5 |
100 |
S1 |
P6 |
100 |
S2 |
P1 |
300 |
S2 |
P2 |
400 |
S3 |
P2 |
200 |
S4 |
P2 |
200 |
S4 |
P4 |
300 |
S4 |
P5 |
400 |
Рис. 4.6. Таблицы поставщиков, деталей и поставок