Тема 2 - Международный банковский институт

advertisement
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Тема 2. Реляционная модель данных,
реляционная алгебра
Цель: познакомиться с основными понятиями реляционной модели данных, освоить
реляционную алгебру как первый язык запросов в реляционной модели.
Оглавление
2.1. Основные понятия и определения ......................................................................... 1
2.2. Реляционная алгебра ............................................................................................ 6
2.2.1. Теоретико-множественные операции реляционной алгебры ............................. 7
2.2.2. Специальные операции реляционной алгебры ................................................ 12
Вопросы для самопроверки ........................................................................................ 17
2.1. Основные понятия и определения
Реляционная модель данных (от английского relation — отношение) базируется
на математическом аппарате теории множеств и математической логики. Это
чрезвычайно мощная и, в отличие от рассмотренных ранее теоретико-графовых
моделей, повсеместно применяемая на практике модель данных. Эта модель, где база
данных представлена набором n-арных отношений, была предложена Коддом
в 1970 г. и за разработку этой модели автор был удостоен премии Тьюринга.
Напомним основные понятия и определения, которыми мы будем оперировать
в дальнейшем.
n-арным отношением R называют произвольное подмножество декартова
произведения D1 x D2 x ... x Dn множеств D1 x D2 x ... x Dn (n≥1). При этом
D1 x D2 x ... x Dn
называют
доменами,
а элемент
отношения —
кортежем.
С математической точки зрения отношение может быть бесконечным множеством,
однако в реляционных моделях его предполагают конечным.
Домены Di и Dj, которые служат основой для задания одного отношения, могут быть
одним и тем же множеством. Чтобы различать эти множества Di, им присваиваются
имена и называют их именами атрибутов или просто атрибутами. Количество
атрибутов в отношении называется степенью или арностью отношения.
Рассмотрим простейший пример отношения. Пусть даны 3 домена D1 — домен,
который содержит перечень возможных должностей на конкретном предприятии.
Домен — это множество, поэтому задать множество можно перечислением его
элементов,
например
D1={директор,
системный
администратор,
менеджер,
бухгалтер}. Здесь фигурные скобки используются для задания множества. Внутри
фигурных скобок содержится список элементов множества. Элементы отделены друг
от друга запятой, которая здесь играет роль стандартного разделителя. Домен
D2 содержит список фамилий сотрудников нашей организации. Допустим, что данный
домен состоит из пяти элементов, что может быть представлено следующим образом:
D2={Архипов А. А., Бушков В. А., Логинова Н. А., Михайлов А. П., Смирнова Т. В.}.
И, наконец, третий домен D3 содержит перечень окладов. Пусть содержание этого
домена будет D3={20 000, 25 000, 30 000}.
Декартово произведение доменов — это тоже множество, поэтому мы для его
представления также можем использовать фигурные скобки. Однако следует
отметить, что элементами являются уже не отдельные значения, а так называемые nки, т. е. элементы, каждый из которых состоит из n компонент. Для изображения
1
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
таких элементов в математике широко используются угловые скобки, внутри которых
перечисляются отдельные компоненты. А почему угловые скобки? Ведь угловые
скобки чаще всего используются для изображения векторов. А почему нам
не использовать круглые скобки? Круглые скобки в математике чаще используются
для изображения составных элементов, которые включают в себя совокупность
однородных объектов, в то время как угловые скобки используются для изображения
объектов, которые состоят из разнородных объектов. И в нашем случае каждый
составной объект включает в себя элементарные значения, принадлежащие разным
доменам.
Итак имеем 3 исходных домена:
D1={директор, системный администратор, менеджер, бухгалтер};
D2={Архипов
А. А.,
Смирнова Т. В.};
Бушков
В. А.,
Логинова
Н. А.,
Михайлов
А. П.,
содержать
следующие
тройки
D3={20000, 25000, 30000}.
Тогда полное
элементов:
декартово
произведение
будет
D1 x D2 x D3 ={< Архипов А. А., директор, 20 000>,< Бушков В. А., директор,
20 000 > <Логинова Н.А., директор, 20 000 >,< Михайлов
А. П., директор,
20 000 >,< Смирнова
Т. В., директор, 20 000 >,< Архипов А. А., директор,
25 000>,< Архипов
А. А., директор, 30 000>,< Архипов
А. А., системный
администратор, 20 000>,< Архипов А. А., системный администратор, 25 000>,
< Архипов А. А., системный администратор, 30 000>,< Бушков В. А., системный
администратор, 20 000 >, >,< Бушков В. А., системный администратор, 25 000 >,
...}. Всего таких троек будет 60. Это число получается как произведение мощностей
всех исходных множеств-доменов: 4×5х3=60. Но на самом деле мы знаем, что
достоверными будут только 5 записей из всех 60, потому что для 5 сотрудников будут
заданы реальные должности и оклады. Вот именно эти реальные 5 записей и составят
содержание отношения. В этом случае отношение может быть представлено в виде
следующего множества:
R={<Логинова Н.А., директор, 30 000 >, < Архипов
А. А., системный
администратор, 30 000>, < Бушков В. А., менеджер,20 000>, < Михайлов А. П.,
менеджер, 20 000>, < Смирнова Т. В., бухгалтер, 25 000 >}.
Любое отношение имеет простую графическую интерпретацию: оно может быть
изображено с помощью таблицы: столбцами таблицы являются атрибуты, а строками
таблицы являются наши n-ки, которые в реляционной модели называются кортежами
(рис. 2.1).
2
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 2.1. Графическое изображение отношения R
Количество атрибутов в отношении называется степенью или арностью отношения.
Отношения со степенью 2 и 3 имеют специальные названия: бинарные и тернарные
соответственно. Все остальные отношения просто характеризуются как «отношение
R1 степени 5». Например, наше отношение R имеет степень 3, поэтому может быть
названо тернарным отношением.
Таблица, которая соответствует отношению, имеет ряд особенностей:
1. В таблице не может быть двух одинаковых строк.
2. Таблица имеет столбцы, соответствующие атрибутам отношения.
3. Каждый атрибут в отношении имеет уникальное имя.
4. Порядок строк в таблице произвольный.
В общем случае можно сказать, что и порядок столбцов в таблице произвольный,
потому что для каждого столбца-атрибута задается домен, из которого этот атрибут
принимает значения и это соответствие закрепляется понятием схемы отношения.
Схемой отношения R называется перечень имен атрибутов данного отношения
с указанием домена, к которому они относятся. Например, схему нашего отношения
можно задать следующим образом:
SR   ФИО, Должность, Оклад ; ФИО  D1; Должность  D2; Оклад  D3.
Атрибуты, которые принимают значения из одного и того же домена, называются Θсравнимыми.
Здесь
Θ — одна
из допустимых
операций
сравнения
Θ = {=, <>,>=,<=,<,>}.
Если
мы имеем
дело
с символьными
данными,
то мы можем использовать только операции «равно», «не равно» в качестве операций
сравнения. Однако если в домене, который содержит, например, список фамилий,
допустимо лексико-графическое упорядочение, то тогда мы можем использовать
полный спектр операций сравнения.
В общем случае в определении отношения не установлено ограничение на то, что
все домены в исходном множестве должны быть различные. Атрибуты в отношении
все должны иметь уникальные имена, но при этом в одном отношении могут быть и Θсравнимые атрибуты. Приведем пример такого отношения (рис. 2.2).
3
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
S R1   ФИО, Должность, Оклад, Премия ;
ФИО  D1; Должность  D2; Оклад  D3; Премия  D4.
R1
ФИО
Логинова Н.А.
Архипов А.А.
Бушков В.А.
Михайлов А.П.
Смирнова Т.В.
Должность
Директор
Системный
администратор
Менеджер
Менеджер
Бухгалтер
Оклад
30 000
Премия
20 000
30 000
25 000
20 000
20 000
25 000
20 000
20 000
20 000
Рис. 2.2. Схема отношения R1
Здесь атрибуты «Оклад» и «Премия» являются Θ-сравнимыми.
Два отношения R1 и R2 называются отношениями с эквивалентными схемами тогда
и только тогда, когда они имеют одинаковую степень (арность) и существует такая
перестановка атрибутов в схеме отношения R2, что на одинаковых местах в схемах
отношений будут стоять Θ-сравнимые атрибуты. Рассмотрим пример (рис. 2.3). Пусть
даны 3 отношения: R1,R2,R3.. В первом отношении пусть содержится список
абитуриентов и год их рождения, во втором так же список абитуриентов и номер
школы, которую они закончили. В третьем отношении находится список абитуриентов
с указанием года окончания школы.
R1
Год
рождения
Сидоров А.Б. 1987
Петрова Т.Н. 1986
Бурков В.А.
1988
Чесноков Г.У. 1985
Щукин И.И.
1987
ФИО
ФИО
R2
Школа
Сидоров А.Б.
Петрова Т.Н.
Бурков В.А.
Чесноков Г.У.
Щукин И.И.
262
158
99
262
158
R3
Год
окончания
Сидоров А.Б. 2005
Петрова Т.Н. 2004
Бурков В.А.
2005
Чесноков Г.У. 2004
Щукин И.И.
2005
ФИО
Рис. 2.3. Отношения, моделирующие поступление в институт набора абитуриентов
В нашем примере все три отношения имеют одинаковый ранг — они являются
бинарными, в каждом из них первый атрибут принимает значения из домена,
содержащего фамилии абитуриентов, а второй атрибут принимает значения
из множества целых чисел. Однако следует отметить, что отношение R2 содержит
список школ и этот столбец по смыслу не принимает значения из домена, в котором
содержатся годы. На основании проведенного анализа можно сказать, что отношения
R1 и R2 являются
отношениями
с эквивалентными
схемами,
а отношение
R3 не является таковым по отношению к R1 и R2.
Как уже говорилось ранее, реляционная модель представляет базу данных в виде
множества взаимосвязанных отношений.
Мы уже отметили, что каждое отношение имеет только различные кортежи. Это
свойство означает, что в отношении обязательно присутствует некоторый набор
атрибутов, однозначно определяющий кортеж отношения. В крайнем случае это будет
полный набор атрибутов. А в общем случае это может быть и один какой-то атрибут.
Этот набор атрибутов называется возможным ключом отношения. У нас в отношении
R1 таким набором является атрибут «Фамилия». Если мы рассмотрим отношение,
4
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
которое моделирует сессию, при этом будем считать, что студент может делать
несколько попыток сдачи экзаменов, и при этом фиксируется каждая произведенная
попытка, то структура отношения Session будет иметь следующий вид (рис. 2.4).
Session
Дисциплина
Теория автоматов
Теория автоматов
Теория автоматов
Теория автоматов
Базы данных
Базы данных
Фамилия
Крылов
Степанов
Иванов
Иванов
Иванов
Степанов
Оценка
5
5
2
4
3
4
Дата сдачи
20.01.05
20.01.05
20.01.05
30.01.05
10.01.05
10.01.05
Рис. 2.4. Отношение Session
Для данного отношения атрибут «Фамилия» не является возможным ключом
отношения, каждый студент может сдавать несколько дисциплин в сессию, и он даже
может одну и ту же дисциплину сдавать несколько раз, пока не получит
положительную оценку. В данном отношении возможным ключом является набор
из трех атрибутов («Фамилия», «Дисциплина», «Дата сдачи»).
В отношении может быть несколько возможных ключей. Среди всех возможных
ключей выбирается один, который называется первичным ключом отношения
(PRIMARY
KEY).
Задание
первичного
ключа —
процесс
очень
важный,
он в дальнейшем позволит СУБД обеспечить максимально быстрый доступ именно
по данному набору атрибутов. Поэтому к выбору первичного ключа необходимо
подходить очень внимательно.
Как уже говорилось ранее, реляционная модель представляет базу данных в виде
множества взаимосвязанных отношений. В отличие от теоретико-графовых моделей
в реляционной модели связи между отношениями поддерживаются неявным образом.
В этой модели так же, как и в остальных, поддерживаются иерархические связи
между отношениями. В каждой связи одно отношение может выступать как основное,
а другое отношение — в роли подчиненного. Это означает, что один кортеж основного
отношения может быть связан с несколькими кортежами подчиненного отношения.
Для поддержки этих связей оба отношения должны содержать наборы атрибутов,
по которым они связаны. В основном отношении это первичный ключ отношения
(PRIMARY KEY), который однозначно определяет кортеж основного отношения.
В подчиненном отношении для моделирования связи должен присутствовать набор
атрибутов, соответствующий первичному ключу основного отношения. Однако здесь
этот набор атрибутов уже является вторичным ключом, т. е. он определяет множество
кортежей подчиненного отношения, которые связаны с единственным кортежем
основного отношения. Данный набор атрибутов в подчиненном отношении принято
называть внешним ключом (FOREIGN KEY).
Например, рассмотрим ситуацию, когда надо описать карьеру некоторого
индивидуума. Каждый человек в своей трудовой деятельности сменяет несколько
мест работы в разных организациях, где он работает в разных должностях. Тогда
мы должны создать два отношения: одно для моделирования всех работающих
людей, а другое для моделирования записей в их трудовых книжках, если для нас
важно не только отследить переход работника из одной организации в другую,
но и прохождение его по служебной лестнице в рамках одной организации (рис. 2.5).
5
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 2.5. Связь основного отношения и подчиненного
В отношении «Сотрудник» атрибут «Таб. номер» является первичным ключом
(PRIMARY KEY). В отношении «Карьера» атрибут «Таб. номер» является внешним
ключом (FOREIGN KEY), а первичным ключом отношения «Карьера» будет набор
атрибутов «Номер записи в трудовой книжке», «Таб. номер». В общем случае
отношение может выступать в роли основного по отношению к другому и в роли
подчиненного к некоторому третьему отношению. Следует отметить, что одно
отношение может быть подчинено сразу нескольким основным отношениям, в этом
случае в нем присутствуют сразу несколько внешних ключей, а вот первичный ключ
отношения всегда только один.
2.2. Реляционная алгебра
Напомним, что алгеброй называется множество с заданной на нем совокупностью
операций, замкнутых относительно этого множества, называемого основным
множеством.
Свойство
замкнутости
интерпретируется
как
принадлежность
результатов выполнения операций основному множеству.
Основным множеством в реляционной алгебре является множество отношений.
Следовательно, результатом выполнения любой алгебраической операции является
также отношение.
Автор реляционной модели Э. Ф. Кодд при описании реляционной алгебры
ограничил набор операций в ней семью основными и одной дополнительной
операциями. Эти семь операций можно разделить на две группы: теоретико6
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
множественные операции и специальные операции. В первую группу входят
4 бинарные операции, т. е. операции, которые применяются к двум операндам
(исходным отношениям). Первые 3 теоретико-множественные операции применяются
только к отношениям с эквивалентными схемами.
2.2.1. Теоретико-множественные операции реляционной алгебры
Пусть заданы два отношения R1 = { r1 }, R2 = { r2 }, где r1 и r2 — соответственно
кортежи отношений R1 и R2. Мы рассматриваем каждое отношение как множество
кортежей, а маленькие буквы r1 и r2 мы использовали для обозначения элемента
каждого множества. Соответственно схемы отношений SR1 и SR2. При этом отношения
R1 и R2 имеют эквивалентные схемы, т. е. SR1∞SR2. Тогда для них допустимы
следующие операции: объединение, пересечение и разность.
Объединением двух отношений называется отношение, содержащее множество
кортежей, принадлежащих либо первому, либо второму исходным отношениям, либо
обоим отношениям одновременно.
Для отношений R1 и R2 отношение R3 — это множество всех кортежей, содержащее
кортежи из R 1 и R 2:
R3  R1  R2  r | r  R1  r  R2.
Так как отношение не может содержать одинаковых кортежей, то все дубликаты
кортежей, уничтожаются, они присутствуют в результирующем отношении только
один раз. В фигурных скобках так же находится множество, но в данном случае для
задания множества принят не простой способ перечисления элементов множества,
а задание некоторого правила, которое определяет принадлежность элементов
к заданному множеству. В нашем случае правило представлено в виде записи,
разделенной вертикальной чертой на две части: до четы дано обобщенное имя
элемента множества, а после черты дается правило, позволяющее определить
условия принадлежности конкретного элемента к множеству. Наше правило может
быть изложено в виде некоторого повествовательного предложения следующего
содержания: «В множество входят элементы r, которые принадлежат либо исходному
множеству R1, либо исходному множеству R2». Знак ν соответствует логической
операции «ИЛИ».
Рассмотрим
номенклатуру
фирмы (R2).
номенклатуру
R3 (рис. 2.6).
следующий пример. Пусть заданы отношения, которые моделируют
изделий, изготавливаемых в первом филиале (R1) и во втором филиале
Тогда объединение данных отношений позволяет получить общую
изделий, которые производятся в данной фирме. Это будет отношение
Шифр детали
00011073
00011075
00011076
00011003
00011006
00013063
00013066
R1
Название детали
Гайка M1
Гайка М2
Гайка М3
Болт М1
Болт М3
Шайба М1
Шайба М3
Шифр детали
00011073
00011076
00011077
00011004
00011006
7
R2
Название детали
Гайка M1
Гайка М3
Гайка М4
Болт М2
Болт М3
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
R3
Шифр детали
00011073
00011075
00011076
00011003
00011006
00013063
00013066
00011077
00011004
Название детали
Гайка M1
Гайка М2
Гайка М3
Болт М1
Болт М3
Шайба М1
Шайба М3
Гайка М4
Болт М2
Рис. 2.6. Результат операции объединения отношений
Пересечением отношений R1 и R2 называется отношение, которое содержит
множество кортежей, принадлежащих одновременно и первому и второму отношениям
R1 и R2:
R3  R1  R2  r | r  R1  r  R2.
Здесь знак Λ соответствует логической операции «И» и требует одновременного
выполнения исходных условий, которые он соединяет. Если мы вернемся к нашему
примеру, то по смыслу операция пересечения позволит определить те изделия,
которые производятся в обоих филиалах фирмы (рис. 2.7). Что нам это дает? Если
таких изделий много, значит, мы можем утверждать, что наши филиалы
не специализированны, т. е. в каждом филиале выпускаются почти все изделия.
В противном случае, когда пересечение либо пусто, либо содержит всего пару строк,
мы имеем дело с узкоспециализированными филиалами. Если нам надо просто
разнести территориально наше производство чтобы удовлетворить потребности
разных районов города или региона в наших изделиях, то хорошо иметь первый
случай, т. е. почти полное повторение номенклатуры в обоих филиалах.
Оцените самостоятельно качественные результаты пересечения отношений для
нашего примера.
Шифр детали
00011073
00011076
00011006
Название детали
Гайка M1
Гайка М3
Болт М3
Рис. 2.7. Результат пересечения отношений
Операции объединения и пересечения являются коммутативными, т. е. результат
выполнения не зависит от порядка исходных отношений.
R1  R2  R2  R1; R1  R2  R2  R1 .
Разность отношений R1 и R2 представляет собой множество
содержащее кортежи из R1 и не содержащее кортежи из R2:
R1 \ R2  r | r  R1  r  R2.
8
всех
кортежей,
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Операции объединения, пересечения и разности применимы только к отношениям
с эквивалентными схемами.
ВНИМАНИЕ!
При
выполнении
теоретико-множественного
автоматически удаляются дубликаты кортежей!
объединения
Операция же разности является принципиально несимметричной операцией,
т. е. результаты операции будут различными для разного порядка аргументов, что
и видно из сравнения отношений R5 и R6.
R5  R1 \ R2  r | r  R1 & r   R2.
Отношение
R5 содержит
перечень
деталей,
изготавливаемых
только
на участке 1, отношение R6 содержит перечень деталей, изготавливаемых только
на участке 2 (рис. 2.8).
R6  R2 \ R1  r | r  R2 & r   R1.
Шифр детали
00011075
00011003
00013063
00013066
R5
Название детали
Гайка М2
Болт М1
Шайба М1
Шайба М3
Шифр детали
00011077
00011004
R6
Название детали
Гайка М4
Болт М2
Рис. 2.8. Результаты выполнения операций разности
Оцените самостоятельно специализацию каждого участка.
В отличие от навигационных средств манипулирования данными в теоретикографовых моделях операции реляционной алгебры позволяют получить сразу иной
качественный результат, который является семантически гораздо более ценным
и понятным пользователям. Например, сравнение результатов объединения
и разности номенклатуры двух участков позволит оценить специфику производства
(насколько оно уникально на каждом участке) и при необходимости принять
соответствующее решение по изменению номенклатуры.
Для демонстрации возможностей трех первых операций реляционной алгебры
рассмотрим еще один пример — уже из другой предметной области. Исходными
являются три отношения R1, R2 и R3. Все они имеют эквивалентные схемы.
R1= (ФИО, Паспорт, Школа);
R2= (ФИО, Паспорт, Школа);
R3= (ФИО, Паспорт, Школа).
Рассмотрим ситуацию поступления в высшие учебные заведения, которая была
характерна для периода, когда были разрешены так называемые репетиционные
вступительные экзамены, которые сдавались раньше основных вступительных
экзаменов в вуз. Отношение R1 содержит список абитуриентов, сдававших
репетиционные экзамены. Отношение R2 содержит список абитуриентов, сдававших
экзамены на общих условиях. И, наконец, отношение R3 содержит список
абитуриентов, принятых в институт. Будем считать, что при неудачной сдаче
репетиционных экзаменов абитуриент мог делать вторую попытку и сдавать экзамены
в общем потоке, поэтому некоторые абитуриенты могут присутствовать как в первом,
так и во втором отношении.
Список абитуриентов, которые поступали два раза и не поступили в вуз:
9
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
R  R1  R2 \ R3 .
Список абитуриентов, которые поступили в вуз с первого раза, т. е. они сдавали
экзамены только один раз и сдали их так хорошо, что сразу были зачислены в вуз:
R  (R1 \ R2  R3)  (R2 \ R1  R 3) .
Список абитуриентов, которые поступили в вуз только со второго раза. Прежде
всего это те абитуриенты, которые присутствуют в отношениях R1 и R2, потому что
они поступали два раза, и присутствуют в отношении R3, потому что они поступили:
R  R1  R2  R3 .
Список абитуриентов, которые поступали только один раз и не поступили. Это
прежде всего те абитуриенты, которые присутствуют в R1 и не присутствуют
в R2, и те, кто присутствуют в R2 и не присутствуют в R1. И, разумеется, никто из них
не присутствует в R3:
R  (R1 \ R2)  (R2 \ R1) \ R3 .
В отсутствие скобок порядок выполнения операций реляционной алгебры
естественный, поэтому сначала будут выполнены операции в скобках, а затем будет
выполнена последняя операция вычитания отношения R3.
Операции объединения, пересечения и разности применимы только к отношениям
с эквивалентными схемами.
Кроме
перечисленных
трех
теоретико-множественных
операций
в рамках
реляционной алгебры определена еще одна теоретико-множественная операция —
расширенное декартово произведение. Эта операция не накладывает никаких
дополнительных условий на схемы исходных отношений, поэтому операция
расширенного декартова произведения, обозначаемая R1 R2 , допустима для любых
двух отношений. Но прежде чем определить саму операцию, введем дополнительно
понятие конкатенации, или сцепления, кортежей.
Сцеплением, или конкатенацией, кортежей c = <c1, c2, ..., cn> и q = <q1, q2, ...,
qm> называется кортеж, полученный добавлением значений второго в конец первого.
Сцепление кортежей c и q обозначается как (c, q).
(c, q) = <c1, c2, ... , cn, q1, q2, ..., qm>.
Здесь n — число элементов в первом кортеже с, m — число элементов во втором
кортеже q.
Все предыдущие операции не меняли степени или арности отношений — это следует
из определения эквивалентности схем отношений. Операция декартова произведения
меняет степень результирующего отношения.
Расширенным декартовым произведением отношения R1 степени n со схемой
S
R1
= (A1, A2, ... , An)
и отношения R2 степени m со схемой
S
R2
= (B1, B2, ... , Bm)
называется отношение R3 степени n+m со схемой
S
R3
= (A1, A2, ... , An, B1, B2, ..., Bm),
10
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
содержащее кортежи, полученные сцеплением каждого кортежа
R1 с каждым кортежем q отношения R2, т. е. если R1 = { r }, R2 = { q }
r отношения
R1  R2  (r, q) | r R1  q R2.
Операцию декартова произведения с учетом возможности перестановки атрибутов
в отношении можно считать симметричной. Очень часто операция расширенного
декартова произведения используется для получения некоторого универсума,
т. е. отношения, которое моделирует все возможные комбинации между элементами
отдельных множеств. Однако самостоятельного значения результат выполнения
операции обычно не имеет, он участвует в дальнейшей обработке.
Например, на производстве в отношении R7 задана обязательная номенклатура
деталей для всех цехов, а в отношении R8 дан перечень всех цехов.
Шифр детали
00011073
00011075
00011076
00011003
00011006
00013063
00013066
R7
Название детали
Гайка M1
Гайка М2
Гайка М3
Болт М1
Болт М3
Шайба М1
Шайба М3
R8
Цех
1
2
3
Тогда отношение R9, которое соответствует ситуации, когда каждый
изготавливает все требуемые детали, будет выглядеть следующим образом:
Шифр детали
00011073
00011075
00011076
00011003
00011006
00013063
00013066
00011073
00011075
00011076
00011003
00011006
00013063
00013066
00011073
00011075
00011076
00011003
00011006
00013063
00013066
Название детали
Гайка M1
Гайка М2
Гайка М3
Болт М1
Болт М3
Шайба М1
Шайба М3
Гайка M1
Гайка М2
Гайка М3
Болт М1
Болт М3
Шайба М1
Шайба М3
Гайка M1
Гайка М2
Гайка М3
Болт М1
Болт М3
Шайба М1
Шайба М3
R9
Цех
Цех 1
Цех 1
Цех 1
Цех 1
Цех 1
Цех 1
Цех 1
Цех 2
Цех 2
Цех 2
Цех 2
Цех 2
Цех 2
Цех 2
Цех 3
Цех 3
Цех 3
Цех 3
Цех 3
Цех 3
Цех 3
Шифр детали
00011073
00011075
00011076
00011003
00011006
00013063
00013066
00011073
00011004
00011003
00011006
00013063
00011003
00011006
00013066
11
Название детали
Гайка M1
Гайка М2
Гайка М3
Болт М1
Болт М3
Шайба М1
Шайба М3
Гайка М 1
Болт М2
Болт М1
Болт М3
Шайба М1
Болт М1
Болт М3
Шайба М3
цех
R10
Цех
Цех 1
Цех 1
Цех 1
Цех 1
Цех 1
Цех 1
Цех 1
Цех 2
Цех 2
Цех 2
Цех 2
Цех 2
Цех 3
Цех 3
Цех 3
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
В каких запросах нужно использовать расширенное декартово произведение? Эта
операция моделирует некоторую ситуацию, которая характеризуется словом «все».
Поэтому если нам надо узнать, какие детали в каких цехах из общей обязательной
номенклатуры не выпускаются, то мы можем вычесть из полученного отношения
R9 отношение R10, характеризующее реальный выпуск деталей в каждом цехе.
Отношение R11, которое является результатом выполнения этой операции, имеет
вид:
R11 = R9 \ R10
R11
Шифр детали
00011075
00011076
00011075
00011076
00013063
00011073
Название детали
Гайка М2
Гайка М3
Гайка М2
Гайка М3
Шайба М1
Гайка M1
Цех
Цех
Цех
Цех
Цех
Цех
Цех
2
2
3
3
3
3
Группа теоретико-множественных операций избыточна. Например, операцию можно
заменить сочетанием операций объединения и пересечения:
(R1  R2) \ (R1 \ R2) \ (R2 \ R1) .
Однако это достаточно сложная формула, и именно поэтому все три теоретикомножественные операции вошли в базовый набор операций реляционной алгебры.
Далее мы переходим к группе операций, названных специальными операциями
реляционной алгебры.
2.2.2. Специальные операции реляционной алгебры
Первой специальной операцией реляционной алгебры является горизонтальный
выбор, или операция фильтрации, или операция ограничения отношений. Для
определения этой операции нам необходимо ввести дополнительные обозначения.
Пусть α — булевское выражение, составленное из термов сравнения с помощью
связок И (&), ИЛИ (V), НЕ (-) и, возможно, скобок. В качестве термов сравнения
допускаются:
а) терм А oc а, где А — имя некоторого атрибута, принимающего значения из домена
D; a — константа, взятая из того же домена D, aЄD; oc — одна из допустимых для
данного домена D операций сравнения;
б) терм А oc В, где А, В — имена некоторых Θ-сравнимых атрибутов, т. е. атрибутов,
принимающих значения из одного и того же домена D.
Тогда результатом операции выбора, или фильтрации, заданной на отношении
R в виде
булевского
выражения,
определенного
на атрибутах
отношения
R, называется отношение R[?], включающее те кортежи из исходного отношения, для
которых истинно условие выбора или фильтрации:
R[ (r)]  {r | r  R &  (r)  " Истина"}
12
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Операция фильтрации является одной из основных при работе с реляционной
моделью данных. Условие ? может быть сколь угодно сложным.
Например, выбрать из R10 детали с шифром 0011003.
R12 = R10 [ Шифр детали = 0011003]
R12
Шифр детали
00011003
00011003
Название детали
Болт М1
Болт М1
Цех
Цех 1
Цех 3
Следующей специальной операцией является операция проектирования.
Пусть R — отношение, SR = (A1, ... , An) — схема отношения R.
Обозначим через B подмножество [ Ai ]; B ? { Ai }.
При этом пусть B1 — множество атрибутов из { Ai }, не вошедших в B.
Если B = , B1 = и r = , i, то r [B], s = < a1j, a2j, ... , amj >; amj ? Amj.
Проекцией отношения R на набор атрибутов В, обозначаемой R[B], называется
отношение со схемой, соответствующей набору атрибутов
В SR[B]
= B, содержащему кортежи, получаемые из кортежей исходного отношения R путем
удаления из них значений, не принадлежащих атрибутам из набора В.
R[B] = { r[B] }
По
определению
отношений
из результирующего отношения.
все
дублирующие
кортежи
удаляются
Операция проектирования, называемая иногда также операцией вертикального
выбора, позволяет получить только требуемые характеристики моделируемого
объекта. Чаще всего операция проектирования используется как промежуточный шаг
в операциях горизонтального выбора, или фильтрации. Кроме того, она используется
самостоятельно на заключительном этапе получения ответа на запрос.
Например, выберем все цеха, которые изготавливают деталь «Болт М1».
Для этого нам необходимо из отношения R10 выбрать детали с заданным названием,
а потом полученное отношение спроектировать на столбец «Цех». Результатом
выполнения этих операций будет отношение R14:
R13 = R10 [ Название детали = «Болт М1» ]
R14 = R13 [ Цех ]
Шифр детали Название детали
00011003
Болт М1
00011003
Болт М1
R13
Цех
Цех 1
Цех 3
R14
Цех
Цех 1
Цех 3
Следующей специальной операцией реляционной алгебры является операция
условного соединения.
В отличие от рассмотренных специальных операций реляционной алгебры:
фильтрации и проектирования, которые являются унарными, т. е. производятся над
одним
отношением,
операция
условного
соединения
является
бинарной,
т. е. исходными для нее являются два отношения, а результатом — одно.
Пусть R = { r }, Q = { q } — исходные отношения,
13
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
SR, SQ — схемы отношений R и Q соответственно.
SR = (A1, A2, ... , Ak); SQ = (B1, B2, ... , Bm),
где Ai, Bj — имена атрибутов в схемах отношений R и Q соответственно.
При этом полагаем, что заданы наборы атрибутов А и В
А Є { Ai } i=1,k; B Є { Bj } j=1,m
и эти наборы состоят из Θ-сравнимых атрибутов.
Тогда соединением отношений R и Q при условии β будет подмножество декартова
произведения отношений R и Q, кортежи которого удовлетворяют условию β,
рассматриваемому как одновременное выполнение условий:
r.Ai Θi Bi: i=1,k, где k — число
конкретная операция сравнения.
атрибутов,
входящих
в наборы
А и В, а
Θi-
Ai Θi Bi D; Θi — i-й предикат сравнения, определяемый из множества допустимых
на домене Di операций сравнения.
R [ ?] Q = { (r,q) | (r, q) | r.A Θi q.Bi = «Истина», i=1,k}.
Например, рассмотрим следующий запрос. Пусть отношение R15 содержит перечень
деталей с указанием материалов, из которых эти детали изготавливаются, и оно
имеет вид:
Шифр детали
00011073
00011075
00011076
00011003
00011006
00013063
00013066
00011077
00011004
00011005
00013062
Название детали
Гайка M1
Гайка М2
Гайка М3
Болт М1
Болт М3
Шайба М1
Шайба М3
Гайка М4
Болт М2
Болт М5
Шайба М2
R15
Материал
сталь-ст1
сталь-ст2
сталь-ст1
сталь-ст3
сталь-ст3
сталь-ст1
сталь-ст1
сталь-ст2
сталь-ст3
сталь-ст3
сталь-ст1
R16
Название детали
Гайка M1
Гайка М3
Шайба М1
Шайба М3
Шайба М2
Получим перечень деталей, которые изготавливаются в цехе 1 из материала «стальст1»
R16 = (R15[(R15.Шифр детали =R10.Шифр детали)
15.Материал =«сталь-ст1»] R10)[Название детали].
Последней операцией, включаемой
является операция деления.
в набор
? R10.Цех = «Цех1» &
операций
реляционной
алгебры,
Для определения операции деления рассмотрим сначала понятие множества
образов.
Пусть R — отношение со схемой SR = (A1, A2 ,..., Ak).
Пусть A — некоторый набор атрибутов А Є { Ai } i=1,k , A1 — набор атрибутов,
не входящих в множество A.
Пересечение множеств A и A1 пусто: A  A1  , объединение множеств равно
множеству всех атрибутов исходного отношения:
14
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
A  A1  SR.
Тогда множеством образов элемента y проекции R[A] называется множество таких
элементов y проекции R[A1], для которых сцепление (x, y) является кортежами
отношения R, т. е.
QA(x)  {y | y  R [A1] & (x, y)  R} — множество образов.
Например, множеством образов отношения R15 по материалу «сталь-ст2» будет
множество кортежей
R15.Материал = {< 00011075, Гайка М2, «сталь-ст2»>,
< 00011077, Гайка М4, «сталь-ст2»>}.
Дадим теперь определение операции деления.
Пусть даны два отношения R и T соответственно со схемами:
SR = (A1, A2, ... , Ak); ST = (B1, B2, ... , Bm);
A и B — наборы атрибутов этих отношений одинаковой длины (без повторений);
A Є SR; B Є ST.
Атрибуты A1 — это атрибуты из R, не вошедшие в множество A.
Пересечение множеств A  A1   — пусто и A  A1  SR. Проекции R[A] и T[B]
совместимы по объединению, т. е. имеют эквивалентные схемы: SR[A] ~ ST[B].
Тогда операция деления ставит в соответствие отношениям R и T отношение Q =
R[A:B]T, кортежи которого являются теми элементами проекции R[A1], для которых
T[B] входит в построенные для них множество образов:
R[A : B] T  {r | r  R [A1] T [B] {y | y R [A] & (r, y)  R}} .
Операция деления удобна тогда, когда требуется сравнить некоторое множество
характеристик отдельных атрибутов. Например, пусть у нас есть отношение
R7, которое содержит номенклатуру всех выпускаемых деталей на нашем
предприятии, а в отношении R10 хранятся сведения о том, что и в каких цехах
действительно выпускается. Поставим задачу определить перечень цехов, в которых
выпускается вся номенклатура деталей.
Тогда решением этой задачи будет операция деления отношения R10 на отношение
R7 по набору атрибутов (Шифр детали, Наименование детали).
R17 = R10[Шифр
детали,
Наименование детали]R7
Наименование
детали:
Шифр
детали,
R17
Цех
Цех1
Операция деления достаточно сложна для абстрактного представления. Она может
быть заменена последовательностью других операций. Действительно, выполним
тот же запрос с использованием других операций. Для этого определим
последовательность промежуточных запросов, которая приведет нас к конечному
результату.
15
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Построим отношение, которое моделирует ситуацию, когда в каждом цехе
изготавливается вся номенклатура, это уже построенное нами ранее расширенное
декартово произведение отношений R7 и R8. Это отношение R9:
R9 = R7?R8.
Теперь найдем перечень того, что из обязательной номенклатуры не выпускается
в некоторых цехах:
R11= R9\R10.
Далее найдем те цеха, в которых не все детали выпускаются, для этого нам надо
отношение R11 спроектировать на столбец «Цех»:
R18 = R11[Цех]
R18
Цех
Цех 2
Цех 3
А теперь из перечня всех цехов вычтем те, которые выпускают не все детали,
и получим ответ на запрос, и это будет тот же результат, что и в отношении R17.
Посмотрим, как работают операции реляционной алгебры в другом примере.
Возьмем набор отношений, которые моделируют сдачу сессии студентами некоего
учебного заведения. Тема весьма понятная и привычная.
R1 = <ФИО, Дисциплина, Оценка>; R2 = <ФИО, Группа>;
R3 = < Группы, Дисциплина>,
где R1 — информация о попытках (как успешных, так и неуспешных) сдачи экзаменов
студентами; R2 — состав групп; R3 — список дисциплин, которые надо сдавать
каждой
группе.
Домены
для
атрибутов
формально
задавать
не будем,
но, ориентируясь на здравый смысл, будем считать, что доменом для атрибута
«Дисциплина» будет множество всех дисциплин, преподающихся в вузе, доменом для
атрибута «Группа» будет множество всех групп вуза и т. д.
Покажем, каким образом можно получить из этих таблиц интересующие нас
сведения с помощью реляционной алгебры. В каждом из приведенных примеров
путем
операций
над
исходными
отношениями
R1, R2, R3 формируются
промежуточные отношения и результирующее отношение S, содержащее требуемую
информацию.
Список студентов, которые сдали экзамен по БД на «отлично». Результат может
быть получен применением операции фильтрации по сложному условию к отношению
R1 и последующим проектированием на атрибут «ФИО» (нам ведь требуется только
список фамилий):
S = (R1[Оценка = 5 ? Дисциплина = «БД»])[ФИО].
Список тех, кто должен был сдавать экзамен по БД, но пока еще не сдавал. Сначала
найдем всех, кто должен был сдавать экзамен по БД. В отношении R3 находится
список всех дисциплин, по которым каждая группа должна была сдавать экзамены,
ограничим перечень дисциплин только «БД». Для того чтобы получить список
студентов, нам надо соединить отношение R3 с отношением R2, в котором определен
список студентов каждой группы.
R4 = (R2[R3.НомерГруппы = R2.НомерГруппы ?
R3.Дисциплина = «БД»] R3)[ФИО];
16
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Список всех, кто сдавал экзамен по «БД» (нас пока не интересует результат сдачи,
а интересует сам факт попытки сдачи, т. е. присутствие в отношении R1):
R5 = (R1[Дисциплина = «БД»])[ФИО].
И, наконец, результат — все, кто есть в первом множестве, но не во втором:
S = R4 \ R5.
Список несчастных, имеющих несколько двоек:
S = (R1[R1.ФИО = R’1.ФИО & R1.Дисциплина <> R’1.Дисциплина &
R1.Оценка = 2 & R’1.Оценка = 2] R’1)[ФИО].
При решении задачи мы как бы
взяли копию отношения
R1 и назвали
ее R’1. И теперь соединяем два экземпляра одного и того же отношения между собой.
Список круглых отличников. Строим список всех пар <студент-дисциплина>,
которые в принципе должны быть сданы:
R4 = (R2[R2.Группа = R3.Группа] R3)[ФИО, Дисциплина].
Строим список пар <студент-дисциплина>, где получена оценка «отлично»:
R5 = (R1[Оценка = 5])[ФИО, Дисциплина].
Строим список студентов, что-либо не сдавших на «отлично»:
R6 = (R4 \ R5)[ФИО].
Наконец, исключив последнее отношение из общего списка студентов, получаем
результат:
R2[ФИО] \ R6.
Обратите внимание, что для получения множества студентов, что-либо не сдавших
на «отлично» (R6), мы осуществили «инверсию» множества всех отлично сданных пар
<студент-дисциплина> (R5) путем вычитания его из предварительно построенного
универсального множества (R4). Рекомендуем очень внимательно разобрать этот
пример и вникнуть в смысл каждого действия — это очень пригодится для понимания
реляционной алгебры.
Вопросы для самопроверки
1. Дайте математическое определение понятия «отношение».
2. Какова графическая интерпретация отношения?
3. Что такое степень отношения?
4. Чем отличаются понятия «степень» и «арность» отношения?
5. Что такое кортеж в отношении?
6. Сколько может быть кортежей в отношении?
7. Как называются отношения, имеющие два кортежа?
8. Что такое атрибут отношения?
9. Какие атрибуты называются Θ-сравнимыми?
10. Как называется отношение, состоящее из одного столбца?
11. Что такое реляционная алгебра, чем она отличается от булевой алгебры?
12. Какие операции входят в реляционную алгебру?
13. Что является результатом выполнения любой операции реляционной алгебры?
14. Что такое свойство коммутативности и какие операции реляционной алгебры
им обладают?
15. Что такое схема отношения?
16. Какие отношения называются отношениями с эквивалентными схемами?
17
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
17. Какие операции реляционной алгебры не требуют эквивалентности
отношений?
18. Могут ли иметь отношения с эквивалентными схемами различную арность?
19. Какие операции реляционной алгебры не меняют схемы отношений?
18
схем
Download