Материал: Lecture08-09R-RelationalCalculus

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Произвольное альфа-выражение определяется рекурсивно следующим образом:

Каждое простое альфа-выражение является альфа-выражением.

Пусть t = (t1, t2,…, tk). Если t : W1 и t : W2 – фльфа-выражения, то выражения t : W1  W2, t : W1 & W2 и t : W1 & W2 являются альфа-выражениями.

На этом завершается определение реляционного исчисления с переменными – кортежами.

Теорема. Реляционное исчисление с переменными – кортежами обладает полнотой реляционной алгебры.

5.2.3.Примеры использования

Используем реляционную схему из раздела 4.6.3 и те же примеры запросов. В приводимой далее таблице справа указываются имена предикатов, которые соответствуют отношениям.

FACULTY (#F, Name, Dean, Building, Fund ) - Fac

DEPARTMENT (#D, #F, Name, Head, Building, Fund ) - Dep

TEACHER (#T, #D, Name, Post, Tel) - Tch

GROUP (#G, #D, Course, Num, Quantity, #Curator) - Grp

SUBJECT (#S, Name) - Sbj

ROOM (#R, Num, Building, Seats) - Rom

LECTURE (#T, #G, #S, #R, Type, Day, Week) - Lec

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

Запрос1. Выдать список всех преподавателей вуза с их телефонами.

( r[3], r[5] ) : Tch.r

Запрос2. Выдать список всех деканов факультетов

( r[2], r[3] ) : Fac.r

Запрос 3. Кто декан факультета информатики

( r[3] ) : Fac.r & ( r[2] = 'IT' )

Запрос 4. Выдать список всех профессоров ВУЗа

( r[3] ) : Tch.r & ( r[4] = 'Professor' )

Запрос 5. Выдать список факультетов с кафедрами

( f[2], d[3] ) : Fac.f & Dep.d & ( f[1] = d[2] )

Запрос 6. Выдать список всех кафедр факультета информатики

( d[3] ) : Fac.f & Dep.d & ( f[1] = d[2] & f[2] = 'IT' )

Запрос 7. Выдать список всех преподавателей с их телефонами кафедры вычислительной техники

( t[3], t[5] ) : Dep.d & Tch.t ( d[1] = t[2] & d[3] = 'CS' )

Запрос 8. Выдать список всех преподавателей с их телефонами факультета информатики

( t[3], t[5] ) : Fac.f & Dep.d & Tch.t & ( f[1] = d[2] & d[1] = t[2] & f[2] = 'IT' )

Запрос 9. Выдать список номеров всех групп первого курса кафедры вычислительной техники.

( g[4] ) : Grp.g & Dep.d & ( g[2] = d[1] & d[3] = 'CS' & g[3] = 1 )

Запрос 10. Уточнение. Выдать список номеров всех групп первого курса кафедры вычислительной техники вместе с кураторами этих групп.

( g[4], t[3] ) : Grp.g & Dep.d & Tch.t & ( g[2] = d[1] & [g[6] = t[1] & d[3] = 'CS' & g[3] = 1 )

Запрос 11. Привести список лекций, на которых количество студентов в группе превышает количество мест в аудитории. В списке указать номер аудитории, номер группы, читаемую дисциплину, неделю, день недели.

(r[2], g[4], s[2], l[7], l[6]) : Lec.l & Grp.g & Sbj.s & Rom.r & (l[2]=g[1] & l[s]=s[1] & l[4]=r[1]& g[5] > r[4])

Запрос 12. Выдать список всех корпусов, в которых располагаются кафедры факультета информатики с учетом расположения самого деканата.

( f[4] ) : ( Fac.f & ( f[2] = 'IT'] ) ) 

( d[6] ) : ( Fac.f & Dep.d & ( f[1] = d[2] & f[2] = 'IT' ) )

Запрос 14. Кто из преподавателей кафедры вычислительной техники не читает лекций.

( t[3] ) : ( ( Dep.d & Tch.t & ( d[1] = t[2] & d[3] = 'CS' ) ) &

( Dep.d & Tch.t & Lec.l ( l[1] = t[1] & d[1] = t[2] & d[3] = 'CS' )

Запрос 15. Выдать #T тех преподавателей, которые преподают во всех группах

( l[1] ) : ( ( Lec.l & Grp.gLec.x( g[1] = x[2] & x[1] = l[1] )

5.3.Реляционное исчисление с переменными на доменах

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

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

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

В Р-исчислении используется понятие ограниченных кванторов общности и существования.

Задания для самостоятельной работы

1) В чем суть безопасной формулы?

2) Каковы основные отличия реляционного исчисления с переменными-кортежами от исчисления предикатов?

3) Дайте определения следующим основным понятиям реляционного исчисления с переменными-кортежами:

а )терм значения; терм соединения;

б) формула, правильно определенная над строковой переменной;

в) формула, правильно определенная на кванторах;

г) формула с областью определения;

д) альфа-выражение

4) Напишите следующие запросы в реляционном исчислении с переменными кортежами:

а) На каком факультете работает Иванов?

б) Кто куратор группы 407 (выдать его имя)?

в) Кто возглавляет кафедру, на которой преподает Петров?

г) Выдать список имен всех преподавателей, читающих лекции по дисциплине "БД".

д) Кто читает лекции в аудитории 205 и какие именно дисциплины ими читаются?

Литература

    1. Дрибас В.П. Реляционные модели баз данных. Минск: Изд-во БГУ им. В.И.Ленина, 1982. – 192 с.

    2. Цаленко М.Ш. Реляционные модели базы данных. Алгоритмы и организация решения экономических здач. Сборник статей. Вып. 10. М.: Статистика, 1977ю – с. 16 – 29.

    3. Pirotte A. Explicite description of entities and their manipulation in languages for the relational data base model. – Universite Libre de Bruxelles, Report R336, 1976.

Базы данных и знаний 48