- •Недоразумения относительно термина «ключ»
- •Индексы
- •Реализация реляционной базы данных
- •Описание структуры базы данных для субд
- •Распределение пространства на физических носителях
- •Интерфейс языка запросов и обновлений
- •Хранимые процедуры
- •Интерфейс прикладных программ
- •Реляционная алгебра
- •Реляционные операторы
- •Объединение
- •Проектирование
- •Выборка
- •Соединение
- •Внешнее соединение
- •Выражение запросов в терминах реляционной алгебры
- •1. Вывести имена всех студентов. Студент [Имя]
- •Гласс рассел рай
- •Глава 8. Основы построения реляционных баз данных
- •6. Вывести названия предметов, на которые записан студент Парке, и расписание занятий по этим предметам.
Реляционная алгебра
Реляционная алгебра похожа на алгебру, которую вы учили в старших классах школы, но с одним важным отличием. В школьной алгебре переменные представляли числа, и операторы +, - хи / оперировали численными величинами. В реляционной алгебре переменные — это отношения: операторы действуют на отношения, и результатом их действия являются новые отношения. Например, операция объединения комбинирует кортежи одного отношения с кортежами другого отношения, в результате чего получается третье отношение. Реляционная алгебра является замкнутой, то есть результаты одной или более реляционных операций всегда представляют собой отношение.
Отношения — это множества. Кортежи отношения можно рассматривать как элементы множества, следовательно, те операции, которые определены для множеств, могут выполняться и над отношениями. Сначала мы продемонстрируем четыре таких оператора из теории множеств, а затем обсудим другие операторы, специфичные для реляционной алгебры. Но прежде мы рассмотрим примеры отношений, которые будут использоваться нами на протяжении этой и следующей глав.
Реляционные операторы
На рис. 8.8 показано шесть отношений и определения их атрибутов и доменов. Обратите внимание, что атрибут НазваниеПредмета фигурирует в нескольких отношениях. В связи с этим атрибут НазваниеПредмета в отношении ЗАНЯТИЯ иногда обозначается как ЗАНЯТИЯ.НазваниеПредмета.
В ходе дальнейшего изложения символьные значения приводятся в одинарных кавычках, а те символы, которые не заключены в кавычки, относятся к именам. Так, 'АУДИТОРИЯ' и Аудитория отличаются тем, что 'АУДИТОРИЯ' — это значение, а Аудитория — это, например, имя домена. Что касается числовых данных, то числа, не заключенные в кавычки, представляют собой числовые данные, а числа н кавычках — строки. То есть 123 — это число, а '123' — это строка, составленная из символов Т, '2' и '3'.
Объединение
Объединение (union) двух отношений — это комбинирование кортежей одного отношения с кортежами другого отношения, в результате чего получается третье отношение. Порядок, в котором кортежи следуют в результирующем отношении, несуществен, но повторяющиеся строки должны быть удалены. Объединение отношений А и В обозначается А + В.
Чтобы данная операция имела смысл, отношения должны быть совместимы по объединению (union compatible), то есть оба отношения должны иметь одинаковое количество атрибутов, и атрибуты в соответствующих столбцах должны принадлежать одному и тому же домену. Если, например, третий атрибут одного из отношений принадлежит домену Аудитории, то третий атрибут второго отношения также должен принадлежать этому домену.
На рис. 8.8 отношения ТРЕТЬЕКУРСНИК и ПОЧЕТНЫЙ_СТУДЕНТ совместимы по объединению, поскольку оба они имеют по три атрибута, и соответствующие атрибуты принадлежат одному и тому же домену. Атрибуты ТРЕТЬЕКУРСНИК.СтНомер и ПОЧЕТНЫЙ_СТУДЕНТ.Номер принадлежат домену ИдентификаторыЛюдей; атрибуты ТРЕТЬЕКУРСНИК.Имя и ПОЧЕТНЫЙ_СТУДЕНТ.Имя принадлежат домену ИменаЛюдей; атрибуты ТРЕТЬЕКУРСНИК.Специальность и ПОЧЕТНЫЙ_СТУДЕНТ.Интересы принадлежат домену НазванияПредметов. Отношения ТРЕТЬЕКУРСНИК и ЗАНЯТИЯ имеют по три атрибута, но они несовместимы по объединению (union incompatible), поскольку их атрибуты происходят из разных доменов.
На рис. 8.9 показано объединение отношений ТРЕТЬЕКУРСНИК и ПОЧЕТНЫЙ. СТУДЕНТ. Обратите внимание, что кортеж [123, ДЖОНС, ИСТОРИЯ], который фигурирует в обоих отношениях, не дублируется в объединении.
Разность
Разность (difference) двух отношений — это отношение, содержащее все кортежи, которые присутствуют в первом отношении, но не присутствуют во втором. Отношения должны быть совместимы по объединению. Разность отношений ТРЕТЬЕКУРСНИК и ПОЧЕТНЫЙ_СТУДЕНТ показана на рис. 8.10. Как и в арифметике, при вычитании порядок следования аргументов имеет значение, так что А - В не равняется В - А.
Пересечение
Пересечение (intersection) двух отношений — это отношение, содержащее кортежи, которые присутствуют и в первом, и во втором отношении. Отношения должны быть совместимы по объединению. На рис. 8.11 пересечение отношений ТРЕТЬЕКУРСНИК и ПОЧЕТНЫЙ_СТУДЕНТ содержит всего один кортеж [123, ДЖОНС, ИСТОРИЯ], поскольку это единственный кортеж, который присутствует в обоих отношениях.
Произведение
Произведение (product) двух отношений (иногда его называют декартовым произведением (Cartesian product)) — это попарная конкатенация всех строк одного отношения со всеми строками другого. Произведение отношения А, имеющего m кортежей, и отношения В, имеющего п кортежей, имеет m х п кортежей. Произведение обозначается А х В. На рис. 8.12 отношение СТУДЕНТ имеет четыре кортежа, а отношение
ЗАПИСЬ — три кортежа. Отношение СТУДЕНТ х ЗАПИСЬ имеет, таким образом, двенадцать кортежей (рис. 8.13). (Некоторые кортежи результирующего отношения па рис. 8.13 не имеют смысла. Чтобы извлечь из этого отношения осмысленную информацию, потребуются дополнительные операции, которые будут описаны позднее. Рисунок является не более чем иллюстрацией действия оператора.)