Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Teor_BD_Lek.doc
Скачиваний:
2
Добавлен:
01.01.2020
Размер:
1.54 Mб
Скачать

Операции над отношениями

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

Операции реляционной алгебры можно разделить на две группы.

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

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

Теоретико-множественные операции

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

Пусть имеются два идентичных бинарных отношения с именами R и S, состоящие из атрибутов А1 и А2.

Объединением отношений R и S (R  S) называется новое отношение, состоящее из кортежей <x, y>, принадлежащих либо отношению R, либо отношению S.

R

S

RS

RS

R\ S

A 1

A 2

A 1

A 2

A 1

A 2

A 1

A 2

A 1

A 2

a

b

p

q

a

b

a

b

l

k

c

d

c

d

c

d

c

d

m

p

l

k

a

b

l

k

m

p

l

n

m

p

p

q

l

n


Пересечением отношений R и S (RS ) называется новое отношение, состоящее из кортежей <x, y>, принадлежащих одновременно отношениям R и S.

Разностью отношений R и S (R\ S) называется отношение, кортежи которого принадлежат R но не принадлежат S.

Операция декартова произведения рассматривалась нами выше.

Специальные операции над отношениями

Пусть имеются два бинарных отношения с именами R и S. Отношение R состоит из атрибутов А1 и А2, отношение S - из атрибутов А2 и А3.

Сцепление отношений

Можно выполнить операцию сцепления двух отношений по одинаковым значениям одноименных атрибутов Ai. Атрибуты, по которым выполняется сцепление, должны быть определены на одном и том же домене. Операцию сцепления обозначим символом *.

Сцеплением бинарных отношений R и S называется новое отношение R*S, состоящее из кортежей <x, y, z>, для которых кортеж <x, y> принадлежит R, а <y, z> принадлежит S.

Пример

Определим результат выполнения операции сцепления отношений R и S, атрибуты которого А2 определены на одном и том же домене. Это значит, что если в столбце с именем А2 таблицы R содержатся, например, названия городов, то и в столбце А2 таблицы S также содержатся названия городов.

R S R*S R*M

А1

А2

А2

А3

А1

А2

А3

А1

А2

a

b

b

k

a

b

k

a

b

c

b

d

f

c

b

k

c

b

c

d

d

p

c

d

f

e

q

c

d

p

В результате сцепления двух бинарных отношений получено новое тернарное отношение, кортежи которого оказались "сцеплены" по одинаковым значениям атрибута А2

Иными словами, в результате сцепления двух таблиц, состоящих из двух столбцов, получена новая таблица, состоящая из трех столбцов. Строки результирующей таблицы "сцеплены" по одинаковым значениям, находящимся в столбцах с именем А2.Таким образом, информация из одной таблицы оказалась "привязанной" к информации из другой таблицы.

В общем случае, если отношение R имеет арность m, а отношение S - арность n , то R*S будет иметь арность m+n-1.

Эта операция называется еще операцией соединения или естественного соединения.

Можно выполнить сцепление отношения с множеством.

Пусть множество М является одноэлементным и содержит одно значение {b} из того же домена, на котором задан атрибут А2 отношения R. Тогда результатом операции сцепления будет отношение R*M, состоящее из тех кортежей отношения R, у которых значение атрибута А2 равно b.

Иными словами, в результате сцепления таблицы R с константой b из таблицы R оказались выбранными стоки, содержащие в столбце А2 значение b. Если в столбце А2 содержались, например, названия городов, то из таблицы отберутся строки с заданным названием города. Эта операция называется еще выборкой.

Проекция отношения на его компоненты

Проекцией отношения R на его i-ю компоненту (атрибут Аi ) называется множество, состоящее из различных значений этого атрибута. Операция проекции обозначается R [Аi].

Пример

Найдем проекцию отношения R на его атрибут А2. В результате получим множество {b, d, q}. Иными словами, результатом проекции является множество различных значений, образующих столбец А2 таблицы R.

Можно выполнять операцию проекции на несколько компонент.

Использование реляционной алгебры для составления

запросов к БД

Для полученной ранее модели данных, состоящей из трех нормализованных отношений ПОСТАВЩИК, ПОСТАВКИ, ДОСТАВКА составим запросы, запишем их в виде формул реляционной алгебры и получим результаты для каждого из запросов.

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

Запрос 1

Сообщить название фирмы-поставщика П1.

Мы получим ответ на этот запрос, если из таблицы ПОСТАВЩИК выделим строку, содержащую сведения о поставщике П1. Это можно сделать, выполнив операцию сцепления отношения ПОСТАВЩИК с известной из запроса константой П1 (т.е. выполнив операцию сцепления отношения с одноэлементным множеством {П1}).

ПОСТАВЩИК * {П1}

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

П1

Восход

Тула

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

ПОСТАВЩИК * {П1} [Имя поставщика]

В результате будет выделен один столбец. Это и будет ответом на запрос.

Восход

Запрос 2

В каком количестве поставляются изделия И2?

Искомые сведения находятся в таблице ПОСТАВКИ. Аналогично Запросу 1 применим к отношению ПОСТАВКИ операцию сцепления с известной константой И2, а затем спроектируем полученное отношение на атрибут Кол.

ПОСТАВКИ * {И2} [Кол]

Результаты выполнения операций.

П1

П2

И2

И2

200

500

200

500

Запрос 3

Сколько изделий И2 поставляет фирма Заря?

В этом запросе известными являются значения двух атрибутов: Имя поставщика = Заря и номер изделия - И2. Известные и искомые данные находятся в двух таблицах: ПОСТАВЩИК и ПОСТАВКИ, поэтому для ответа на запрос необходимо "привязать" сведения из одной таблицы к сведениям из другой таблицы. Это можно сделать, выполнив операцию сцепления отношений по атрибуту П#.

Для выработки ответа на запрос выполним следующие действия:

- узнаем значение атрибута П#, выполнив операцию сцепления отношения ПОСТАВЩИК с одноэлементным множеством Заря;

- выполним операцию сцепления полученного результата с отношением ПОСТАВКИ по атрибуту П#;

- выполнив операцию сцепление отношения с одноэлементным множеством, выделим кортежи, содержащие сведения об изделии И2;

- и, наконец, выполним проекцию на атрибут Кол.

Запишем формулу запроса.

ПОСТАВЩИК * {Заря} * ПОСТАВКИ * {И2} [Кол]

Определим результаты выполнения каждой из операций.

1. В результате выполнения операции сцепления отношения ПОСТАВЩИК с одноэлементным множеством {Заря} получим новое отношение, содержащее единственный кортеж (т.е. новую таблицу, состоящую из одной строки).

П2

Заря

Самара

2. Вторая операция выполняет сцепление полученного отношения, имеющего арность 3, с отношением ПОСТАВКИ, имеющим также арность 3, по одинаковому значению атрибута П#. В результате получим новое отношение арностью 5. В него войдут все кортежи сцепляемых отношений, у которых значение атрибута П# = П2.

П2

Заря

Самара

И1

200

П2

Заря

Самара

И2

500

3. В результате выполнения третьей операции из полученного отношения выберутся строки, в которых значение атрибута И# равно И2.

4. С помощью операции проекции уточним ответ, выделив столбец Кол.

П2

Заря

Самара

И2

500

500

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]