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

3.8.2. Реляционное исчисление доменов

В реляционном исчислении доменов используются переменные, областью определения которых являются области определения атрибутов (домены), а не кортежи отношения. Любое выражение имеет общую форму:

{d1, d2,…, dn | F(d1, d2,…, dm)}; m≥n

здесь d1, d2,…,dn,…, dm – переменные домена, а F(d1,d2,…,dm) –формула. Правила построения правильных формул такие же, как в исчислении кортежей, с учетом того, что вместо переменных кортежей используются переменные домена.

Примеры формул реляционного исчисления доменов (сравните с аналогичными выражениями исчисления доменов):

{sn,fn,posn,sal | ( sn,sal) (Сотрудники(sn,fn,posn,sal) (sal > 10000)} – выбрать все атрибуты отношения «Сотрудники» для сотрудников, получающих зарплату больше 10000 руб.

{sal | ( sn,sal) (Сотрудники(sn,fn,posn,sal) (sal > 10000)} – выбрать один атрибут «Зарплата» отношения «Сотрудники» для сотрудников, получающих зарплату больше 10000 руб.

{fn | ( sn1,sty) (Сотрудники(sn,fn,posn,sal) Офис(pn,sn1,sty,typ) (sn=sn1) cty=’Екатеринбург’)} – выбрать «ФИО» из отношения «Сотрудники», которые работают в офисе, расположенном в городе Екатеринбург.

{fn | ( sn) (Сотрудники(sn,fn,posn,sal) (Ø( sn1)(ОбъектыНедвижимости(pn,cty,typ,sn1) (sn=sn1))))} - создать список всех сотрудников, которые в данный момент не работают с объектами недвижимости.

Если сравнить этот запрос с эквивалентным запросом реляционного счисления кортежей, то можно увидеть, что каждому атрибуту присвоено имя переменной. В условии Сотрудники(sn,fn,posn,sal) переменные sn,fn,posn,sal соответствуют атрибутам «Таб.№», «ФИО», «Должность», «Зарплата» отношения «Сотрудники», а переменные pn,cty,typ,sn1 – атрибутам «№п/п», «Город», «Тип», «Таб№» отношения «ОбъектыНедвижимости». Условие Сотрудники(sn,fn,posn,sal) гарантирует, что переменные домена будут ограничены атрибутами того же самого кортежа. Поэтому можно использовать формулу (sal > 10000) вместо формулы Сотрудник.Зарплата > 10000.

Существуют различия в использовании кванторов. В реляционном исчислении кортежей применение квантора к некоторой переменной posn в форме

( posn) Сотрудники (posn)

равносильно связыванию этой переменной с отношением «Сотрудники» (переменная posn содержит все атрибуты отношения). С другой стороны, в реляционном исчислении доменов перемнная posn ссылается на одно из значений в домене и на нее не налагаются ограничения до тех пор, пока она не появится в субформуле, такой как Сотрудники(sn,fn,posn,sal), которая связывает переменную posn с атрибутом «Должность» отношения «Сотрудники» (в порядке их описания в отношении). После этого значения переменной posn ограничиваются значениями соответствующего атрибута отношения «Сотрудники».

3.9. Другие языки

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

Языки манипулирования реляционными данными подразделяются на процедурные непроцедурные, трансформационные, графические, четвертого или пятого поколения.

Трансформационные языки являются классом непроцедурных языков. Они используют отношения для преобразования исходных данных к требуемому виду и предоставляют простые в работе структуры для формулирования требований к результатам. Примерами трансформационных языков являются SQUARE, SEQUEL, а также SQL.

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

В дальнейшем, мы боле подробно рассмотрим языки SQL и QBE.

Еще одной категорией языков являются языки четвертого поколения (4GL), которые позволяют создавать полностью готовое приложение с помощью ограниченного набора команд и в то же время предоставляют дружественную среду разработки (в основном на использовании специфичных меню).

В некоторых языках используются определенные разновидности естественного языка (ограниченной версии английского языка), которые иногда называют языками пятого поколения (5GL). Однако разработки проектов подобных языков находятся на ранней стадии развития.

Домашнее задание. Сдать до 10.03.2008г.

На титульном листе указать Фамилию И.О. студента и номер группы.

ВОПРОСЫ

  1. Опишите различия между отношением и реляционной схемой. Что такое схема реляционной базы данных?

  2. Укажите различия между потенциальными ключами и первичным ключом отношения.

  3. Дайте определение двух основных правил целостности реляционной модели. Почему их необходимо использовать?

  4. Что такое представление? Укажите различия между представлением и базовым отношением.

  5. В чем состоит разница между процедурным и непроцедурным языками? К каким из них относятся реляционная алгебра и реляционное исчисление?

  6. Что является первичным ключом телефонного справочника ТЕЛЕФОНЫ(ФамилияИО, Адрес, Телефон)? Можно ли выделить другие потенциальные ключи на этом отношении?

  7. Пусть даны два отношения: ГРУППЫ (КодГруппы, Факультет) и СТУДЕНТЫ (ИмяСтудента, КодГруппы). Поле КодГруппы в таблице СТУДЕНТЫ – это внешний ключ. Какие операции с данными могут повлечь нарушение ограничения внешнего ключа?

  8. Дайте определение пяти основных операций реляционной алгебры. Определите с помощью этих пяти операций операции соединения, пересечения и деления

  9. Определите структуру (правильно построенной) формулы в реляционном исчислении доменов.

УПРАЖНЕНИЯ

В следующих упражнениях используется база данных, заданная схемой:

ОТЕЛЬ(ОтельNO, НазваниеОтеля, Город)

КОМНАТЫ(КомнатаNO, ОтельNO, Тип, Цена)

БРОНИРОВАНИЕ(ОтельNO,ГостьNO,НачДата,КонДата,КомнатаNO)

ПОСТОЯЛЬЦЫ(ГостьNO,Имя,Адрес)

Здесь таблица ОТЕЛЬ содержит сведения о гостиницах, таблица КОМНАТЫ – данные о номерах всех гостиниц, таблица БРОНИРОВАНИЕ – сведения о бронировании гостиничных номеров, таблица ПОСТОЯЛЬЦЫ – сведения о постояльцах гостиниц. Первичные ключи подчеркнуты.

ВНИМАНИЕ! В упражнениях 12-16 нужно выполнить только один вариант с номером V, где V определяется формулой

V = N mod K +1

где N порядковый номер студента в списке группы; K-число вариантов

Например в задаче 12: номер студента в группе=19, число вариантов=5, тогда номер варианта студента V = 19 mod 5 +1 = 5

  1. Укажите внешние ключи в этой схеме. Например, БРОНИРОВАНИЕ.КомнатаNO

  2. Составьте примеры таблиц этого отношения, в которых соблюдаются правила ссылочной целостности.

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

1) ОТЕЛЬ.ОтельNO = КОМНАТЫ.ОтельNO (ОТЕЛЬ x КОМНАТЫ)

2) ПНазваниеОтеля(ОТЕЛЬ ОТЕЛЬ.ОтельNO=КОМНАТЫ.ОтельNO (Цена>500(КОМНАТЫ))

3) ПОСТОЯЛЬЦЫ (НачДата >=’1-Jan-2008’(БРОНИРОВАНИЕ))

4) ОТЕЛЬ ОТЕЛЬ.ОтельNO=КОМНАТЫ.ОтельNO(Цена>500(КОМНАТЫ))

5) ПИмя,ОтельNO(БРОНИРОВАНИЕ БРОНИРОВАНИЕ.ГостьNO=ПОСТОЯЛЬЦЫ.ГостьNO ПОСТОЯЛЬЦЫ)ПОтельNO(Город=’Екатеринбург’(ОТЕЛЬ))

Например, ПОтельNO,Тип (Цена<500(КОМНАТЫ)) - из таблицы КОМНАТЫ показать значения атрибутов ОтельNO и Тип кортежей, для которых Цена<500.

  1. Сформируйте эквивалентные выражения реляционного исчисления кортежей и реляционного исчисления доменов для запросов реляционной алгебры из упражнения 12.

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

1) {H.НазваниеОтеля | ОТЕЛЬ(H) H.Город=’Лондон’}

2) {H.НазваниеОтеля | ОТЕЛЬ(H) ( R) (КОМНАТЫ(R) H.ОтельNO=R.ОтельNO R.Цена>500)}

3) {H.НазваниеОтеля | ОТЕЛЬ(H) ( B) ( G)(БРОНИРОВАНИЕ(B) ПОСТОЯЛЬЦЫ(G) H.ОтельNO=B.ОтельNO B.ГостьNO=G.ГостьNO G.Name =’John Smith’)}

4) {H.НазваниеОтеля, G.Имя, B1.НачДата B2.КонДата | ОТЕЛЬ(H) ПОСТОЯЛЬЦЫ(G) БРОНИРОВАНИЕ(B1) БРОНИРОВАНИЕ (B2) H.ОтельNO=B1.ОтельNO G.ГостьNO=B1.ГостьNO B2.ОтельNO=B1.ОтельNO B2.ГостьNO=B1.ГостьNO B2.НачДата≠B1.НачДата}

  1. Приведите эквивалентные выражения реляционной алгебры для запросов, приведенных в упражнении 14.

  2. Сформулируйте выражение реляционной алгебры, реляционного исчисления кортежей и реляционного исчисления доменов для следующих запросов:

  1. Составить список всех отелей

  2. Составить список всех отдельных номеров стоимостью меньше 200 евро в сутки

  3. Составить список всех постояльцев с указанием их фамилий и городов, откуда они прибыли

  4. Составить список всех номеров в отеле ‘Виктория’ с указанием Цены и Типа

  5. Составить список всех постояльцев, которые в настоящее время проживают в отеле ‘Виктория’

  6. Составить список всех номеров отеля ‘Виктория’ с указанием всех сведений о них, включая фамилию постояльца, проживающего в настоящее время в номере, если номер занят

  7. Составить список всех постояльцев отеля ‘Виктория’ с указанием всех сведений о них, включая атрибуты ГостьNO, Имя, Адрес.

  1. С помощью реляционной алгебры создать представление, содержащее сведения обо всех номерах отеля ‘Виктория’, включая их стоимость. Каковы преимущества такого представления?