Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2. Рел_модель.doc
Скачиваний:
4
Добавлен:
04.06.2015
Размер:
220.67 Кб
Скачать

4.3.4 Операция деления

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

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

Рассмотрим ранее введенную таблицу Сдавали_экзамены и выполним ее проекцию на атрибуты Nз и Курс. Получим:

Таблица Сд_экзамены

Nз

Курс

121

Физика

121

Математика

121

Геометрия

123

Математика

125

Физика

125

Математика

127

Физика

127

Математика

129

Математика

Пусть нам требуется найти студентов (по Nз), которые сдавали физику и математику.

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

Решение поставленной задачи выполняется с помощью операции деления отношений:

Выбранные_Ст(Nз) = Сд_экзамены(Nз,Курс)[Курс÷Курс]Список(Курс).

Очевидно, что в данном случае поставленному условию удовлетворяют студенты, имеющие зачетные книжки с номерами 121, 125, 127.

Представление этой операции через ранее введенные гораздо менее очевидно, чем в случае с соединением отношений, поэтому рассмотрим весь процесс представления на нашем примере.

Прежде всего, выделим Nз студентов, которые вообще что-то сдавали:

Сд_экзамены(Nз,Курс)[ Nз]

Nз

121

123

125

127

129

Допустим, что каждый из них сдавал экзамены по всем курсам, включенным в список:

Сд_экзамены(Nз,Курс)[ Nз]* Список(Курс)

Nз

Курс

121

Физика

121

Математика

123

Физика

123

Математика

125

Физика

125

Математика

127

Физика

127

Математика

129

Физика

129

Математика

Вычтем из полученного произведения реальное отношение

Сд_экзамены(Nз,Курс)[ Nз]* Список(Курс ) \ Сд_экзамены(Nз,Курс)

Nз

Курс

123

Физика

129

Физика

Спроектировав результат на Nз получим список зачеток студентов, которые не сдавали все экзамены, включенные в список:

(Сд_экзамены(Nз,Курс)[Nз]* Список(Курс ) \ Сд_экзамены(Nз,Курс))[Nз]

Nз

123

129

Вычтя этот список из списка всех сдававших, получим то, что требуется:

Сд_экзамены(Nз,Курс)[ Nз] \ (Сд_экзамены(Nз,Курс)[ Nз]* Список(Курс ) \ Сд_экзамены(Nз,Курс))[Nз]

Nз

121

125

127

Этот процесс дает представление о сложности операции деления отношений.

Эту операцию можно рассматривать как обратную декартову произведению. Действительно, при любых R1 (A1, A2, … , Am) и R2 (B1, B2, … , Bn) :

(R1 * R2 ) ÷ R2 = R1

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