Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Белобжеский_Лекции_по_ББД.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5.5 Mб
Скачать

Пересечение

R S - операция пересечения определяет отношение, которое содержит кортежи, присутствующие как в отношении R, так и в отношении S. Отношения R и S должны быть совместны по объединению.

Пересечение можно сформулировать и на основе оператора разности множеств:

Деление

Оператор деления может быть полезен в случае запросов особого типа, которые довольно часто встречаются в приложениях баз данных. Предположим, что отношение R определено на множестве атрибутов А, а отношение S — на множестве атрибу­тов В, причем В А (т.е. В является подмножеством А). Пусть С=А-В, т.е. С является множеством атрибутов отношения R, которые не являются атрибутами отношения S. Тогда определение оператора деления будет выглядеть следующим образом.

R ÷ S - результатом оператора деления является набор кортежей отношения R, определенных на множестве атрибутов С, которые соответствуют комбинации всех кортежей отношения S.

Этот оператор можно сформулировать и на основе других основных операторов:

Следует обратить внимание в определении операции деления на слово «всех». Эта операция применяется, когда надо, например, составить список ВСЕХ интересующих нас объектов (именно всех).

Пример 3.10. Операция деления отношений

Создайте список всех арендаторов, которые осматривали объекты недвижимо сти с тремя комнатами.

Для решения поставленной задачи сначала следует с помощью оператора выборки выполнить поиск всех трехкомнатных объектов недвижимости (результат этой операции представлен в табл. 3.18), а затем посредством оператора проекции по­лучить отношение, содержащее только номера объектов недвижимости и личные номера клиентов (результат этой операции представлен в табл. 3.19). После этого нужно применить приведенный ниже оператор деления и получить новое отноше­ние, представленное в табл. 3.20.

Таблица 3.18. Результат применения к отношению Property_for_Rent операции выборки Пpnorooms = 3 (Property for Rent))

Pno

PG4

PG36

Таблица 3.19. Результат применения операции проекции

П rno, pno ( Viewing) к отношению Viewing

Rno

Рпо

CR56

РА14

CR76

PG4

CR56

PG4

CR62

РА14

CR56

PG36

Таблица 3.20. Результат применения операции деления к результатам двух предыдущих операций

Rno

CR56

Другие языки

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

Языки на основе преобразований являются классом непроцедурных языков, ко­торые используют отношения для преобразования исходных данных к требуемому виду. Эти языки предоставляют простые в употреблении структуры для формулиро­вания требуемого результата имеющимися средствами. Примерами языков на основе преобразований являются язык SQUARE, язык SEQUEL и его ответвление — язык SQL.

Графические языки предоставляют пользователю рисунок или другое графическое отображение структуры отношения. Пользователь создает некий образец желаемого результата, и система возвращает затребованные данные в указанном формате. При­мером подобного языка является язык QBE (Query-By-Example). Мы с ним будем постоянно сталкиваться при выполнении лабораторных работ.

Еще одной категорией языков являются языки четвертого поколения (fourth-generation languages — 4GL), которые позволяют создавать полностью готовое и соответствующее тре­бованиям заказчика прикладное приложение с помощью ограниченного набора команд и в то же время предоставляют дружественную по отношению к пользователю среду разработ­ки, чаще всего построенную на использовании команд меню. В некоторых системах используются даже некоторые разновидности естественного языка, т.е. ограни­ченной версии обычного английского языка, который иногда называется языком пятого по­коления (fifth-generation language — 5GL). Однако разработки проектов подобных языков по большей части все еще находятся в зачаточном состоянии.