Задание №6

advertisement
З а д а н и е № 6.
По курсовому проекту:
Этот этап проекта посвящен изучению объектно-реляционных возможностей Oracle 9i
(см. Методические материалы по Oracle “Объектно-реляционные возможности Oracle”).
Этап проекта оформляется, как и три предыдущих этапа проекта. Домашнее задание
сдается в письменном виде.
1. Определите несколько типов данных, которые могли бы использоваться с данными
вашего приложения. Постарайтесь выбрать такие типы, чтобы:
 По крайней мере, один тип содержал бы метод.
 По крайней мере, один тип можно было бы использовать как тип столбца
(абстрактный тип данных).
 По крайней мере, один тип можно было бы использовать как тип строки (тип
отношения).
 По крайней мере, один тип - тип таблицы, определенный из одного из типов, которые
вы объявили.
Представьте на рассмотрение файлы, демонстрирующие ваши определения (не забудьте
представить тела методов) и успешную трансляцию (не забудьте, для выполнения
трансляции определение типа должно завершаться наклонной чертой вправо)
определений.
2. Определите несколько отношений, которые могли бы хранить данные, связанные с
вашим приложением. Постарайтесь выбрать отношения так, чтобы:
 По крайней мере, одно отношение имело бы тип столбца, определенный в (1) для
одного из атрибутов.
 По крайней мере, одно отношение имело бы тип строки, который вы определили в (1).
 По крайней мере, одно отношение имело бы тип таблицы, определенный в (1) для
одного из столбцов.
 По крайней мере, один тип ссылки (REF) должен быть включен либо в определение
отношения, либо тип из (1) непосредственно.
Обратите внимание, что все эти требования возможно выполнить, создав одно отношение,
но, сколько новых отношений вы будете создавать, решите сами. Напишите команды
INSERT, чтобы заполнить ваши новые отношения данными из первоначальных
отношений вашего приложения. Представьте на рассмотрение файлы, показывающие
создание новых отношений и выполнение команд добавления данных.
3. Напишите не меньше 4 запросов к вашим отношениям из (2). Среди этих запросов, Вы
должны продемонстрировать следующие возможности, по крайней мере, один раз:
 Использование методов.
 Доступ к данным в столбце, имеющем пользовательский тип.
 Доступ к данным внутри табличного типа.
 Использование табличного типа в опции FROM.
 Работу со ссылками REF.
 Явное разименование (использование оператора DEREF).
Представьте файлы с текстами запросов и результатами их выполнения.
Домашнее задание:
1) (4 балла)
а) (2 балл) Напишите операторы Oracle, определяющие объектный тип Apartment
(объект-квартира) с тремя атрибутами: BuildingName, ApartmentNumber и
NumberBedrooms. Сохраните этот тип как столбцовый объект в таблице Person
(человек), где объектный тип описывает место жительства. Напишите оператор
INSERT и UPDATE в таблицу Person.
b) (1 балл) Напишите операторы Oracle, создающий таблицу с Apartment как строчным
объектом.
с) (2 балл) Напишите оператор Oracle, создающий массив переменной длины, который
может содержать максимум 100 объектов типа Apartment. Написать оператор, который
создает таблицу с информацией о домах, использующий этот массив переменной
длины и оператор INSERT, чтобы вставить данные в таблицу.
2) Пусть есть база данных с отношениями:
Classes (name, type, country, numGuns, kalibr, vodoizm)
Ships (name, class, spusk)
Battles (name, date)
Outcomes (Ship, battle, result)
Эта база данных хранит информацию о кораблях, участвующих в первой мировой
войне. Корабли в «классах» построены по одному и тому же проекту, и классу обычно
приписывается название первого корабля этого класса. Отношение Classes содержит имя
корабля, тип (bb для боевого корабля bc для боевого крейсера), страну, в которой
построен корабль, число главных орудий, калибр орудий (диаметр ствола орудия в
дюймах) и водоизмещение (вес в тоннах). В отношении Ships записаны имя корабля, имя
его класса и год спуска на воду. В отношение Battles включены название и дата битвы, в
которой участвовали корабли, а в отношение Outcomes – результат участия данного
корабля в битве (потоплен, поврежден или остался невредимым).
Разработайте схему (структуру) базы данных, используя объектно-реляционный
подход: создайте и примените пользовательские типы и ссылочные атрибуты там, где
сочтете возможным и целесообразным (3 балла).
Напишите на языке SQL следующие запросы (2 балла):
1). Найти суда (Ships) водоизмещением (displacement), превышающим 35 тыс. тонн.
2). Найти классы судов (Classes), в состав которых входили суда (Ships), спущенные на
воду (launched) после 1930 года.
3) Пусть есть следующая реляционная модель (4 балла):
Маршрут (код_маршрута, пункт_отправления, пункт_прибытия, время_отправления,
время_прибытия, продолжительность)
Поезд (код_поезда, название, статус, количество_вагонов)
Билет (код_билета, номер, дата_билета)
Пассажир (код_пассажира, имя, адрес, телефон)
Идет (код_ маршрута, код_поезда, дата_отправления, дата_прибытия)
Место (код_места, вагон, номер, цена, код_поезда)
Включается (код_билета, код_места)
Заключается (код_билета, код_пассажира, номер_страховки)
(a) Разработайте структуру базы данных на языке SQL, предусмотрев следующее:
 Адрес пассажира – это тип, содержащий индекс, город, улицу и № дома.
 Пассажир – это тип, содержащий имя пассажира, его адрес и телефон.
 Описание маршрута – это тип, содержащий пункт_отправления, пункт_прибытия,
продолжительность. Этот тип должен содержать метод, позволяющий получить
информацию, упорядоченную по названию пунктов прибытия и отправления. Этот тип
должен использоваться для определения отношения Маршрут.
 Описание места – это тип, содержащий вагон, номер, цену. Этот тип должен содержать
метод, переводящий стоимость места из условных единиц в рубли по курсу, который
является входным параметром метода.
 Отношение поезд содержит вложенную таблицу с информацией о местах этого поезд.
Вложенная таблица строится на основе типа Описание места.
(b) Напишите запросы на языке SQL к разработанной базе:
 Получить список, в который включить поезд, пункт прибытия, дату отправления, дату
прибытия. Список должен быть отсортирован по названиям пунктов прибытия.
 Получить информацию о местах на поезд с названием «XXX», цена на которые
меньше или равна 1000 руб.
4)
a) (0,5 балла) Начертите диаграммы назначения привилегий после выполнения операций
4-6 из таблицы. (Предполагается, что пользователь A является владельцем отношения, к
которому относится привилегия p).
Операция
1
2
3
4
5
6
Кем выполнена
A
A
B
D
B
A
Действие
GRANT p TO B WITH GRANT OPTION
GRANT p TO C
GRANT p TO D WITH GRANT OPTION
GRANT p TO B, C, E WITH GRANT OPTION
REVOKE p FROM D CASCADE
REVOKE p FROM C CASCADE
b) (0,5 балла) Начертите итоговую диаграмму назначения привилегий после выполнения
операций из таблицы. (Предполагается, что пользователь A является владельцем
отношения, к которому относится привилегия p).
Операция
1
2
3
Кем выполнена
A
B
A
Действие
GRANT p TO B WITH GRANT OPTION
GRANT p TO B WITH GRANT OPTION
REVOKE p FROM B CASCADE
Download