lab1_2012_91 (Методические указания по выполнению лабораторной работы №1)
Описание файла
Файл "lab1_2012_91" внутри архива находится в папке "Методические указания по выполнению лабораторной работы №1". Документ из архива "Методические указания по выполнению лабораторной работы №1", который расположен в категории "". Всё это находится в предмете "постреляционные базы данных" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "постреляционные базы данных" в общих файлах.
Онлайн просмотр документа "lab1_2012_91"
Текст из документа "lab1_2012_91"
ЛР1 Постреляционные базы данных, 2012 г. ИУ5-91 8
Лабораторная работа «Модели представления данных в СУБД Cache`»
по дисциплине «Постреляционные базы данных»
Цель работы:
-
Изучить различные модели представления данных в среде Cache`.
-
Освоить методы работы с данными используя прямой доступ к глобалам, объектный подход и реляционное представление.
-
Получить навыки работы с инструментальными средствами среды Cache` Studio и среды Cache` Портал, а также функциями Cache` Object Script для обращения к различным представлениям данных.
Время выполнения:
Время выполнения лабораторной работы 4 часа.
Пункты задания для выполнения:
Задание 1. Освоить методы работы с объектами используя прямой доступ к глобалам, объектный подход и реляционное представление.
1.1. Определить в среде Cache` Studio класс "Vuz"(Вуз) - хранимый класс. Содержит свойства:
-
abbr - название - строковое,
-
city - город - строковое,
-
year – год основания – целое.
-
индекс типа IDKEY на поле название (создается отдельно через мастер индексов).
Для создания классов используется среда Cache` Studio. Для определения свойств и методов классов используются соответствующие мастера. Откомпилировать класс.
Для просмотра созданных классов используется среда Cache` Портал (раздел System Explorer → Classes, пакет USER) .
1.2. Освоить создание объектов различными методами.
Существующие объекты и их свойства можно просмотреть в среде Cache` Портал в виде таблиц (раздел System Explorer → Просмотр SQL схем, пакет USER, раздел таблицы) и в виде глобалов (раздел System Explorer → Глобалы, пакет USER).
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «Вуз» (метод %New()), определить значения его полей (используя точечную нотацию и команду set) и сохранить в базе данных (метод %Save()):
set o==##class(название класса).%New()
set o.поле=значение
do o.%Save()
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора INSERT для добавления объекта классов «Вуз» (с параметрами название, город, тип):
insert into таблица(поле1,поле2) values(значение1,значени2)
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «Вуз», используя обращение к глобалам и функции работы со списками ($lb):
set ^глобал(индекс)=$lb(“”,поле1,поле2)
1.3. Освоить работу с объектами различными методами.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов SELECT для просмотра списка вузов по условию, например, расположенных в Москве.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора UPDATE для изменения города вуза:
update таблица set поле1=значение1, поле2=значение2 where условие
В среде Cache` Terminal на языке Cache` Object Script открыть объект класса «Вуз» (метод %OpenId()), просмотреть и изменить значения его полей (используя точечную нотацию) и сохранить в базе данных (метод %Save()):
set o=##class(название).%OpenId(индекс)
set o.поле=значение
do o.%Save()
1.4. Освоить удаление объектов различными методами.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора DELETE для удаления объектов:
delete таблица where условие
В среде Cache` Терминал продемонстрировать удаление объектов класса используя вызовы методов %DeleteId (для объектов) и Kill (для глобалов):
do ##class(название).%DeleteId(индекс)
kill ^глобал(индекс)
Задание 2. Освоить методы работы с производными классами в различных представлениях
2.1. Определить в среде Cache` Studio класс «ComVyz » (коммерческий вуз - КомВуз), производный от класса «Вуз», добавив свойство:
-
price — стоимость обучения – целое.
2.2. Освоить создание объектов производного класса.
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «КомВуз» (метод %New()), определить значения его полей (используя точечную нотацию и команду set) и сохранить в базе данных (метод %Save()).
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора INSERT для добавления объекта классов «КомВуз» (с параметрами название, город, год, стоимость).
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «КомВуз», используя обращение к глобалам и функции работы со списками ($lb).
2.3. Освоить работу с объектами производного класса различными методами.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов SELECT для просмотра списка всех вузов и комвузов по условию, например, расположенных в Москве или с низкой стоимостью.
В среде Cache` Terminal на языке Cache` Object Script открыть объект класса «КомВуз» (метод %OpenId()), просмотреть и изменить значения его полей (используя точечную нотацию) и сохранить в базе данных (метод %Save()).
Задание 3. Освоить методы работы со связанными объектами в различных представлениях
3.1. Создать Класс "Fuculty" (факультет) - хранимый. Содержит свойства:
-
fname - название – строковое (обязательное),
-
ofvuz — его вуз — ссылка (отношение) на объект класса "Вуз" (обязательное), создается как свойство типа «отношение» (при задании связанного поля в другом классе следует указать новое поле «fclts»-«факультеты» вместо выбора из списка существующих).
3.2. Освоить создание связанных объектов различными методами.
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «Факультет» (метод %New()), определить значения его полей (используя точечную нотацию и команду set) и сохранить в базе данных (метод %Save()).
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора INSERT для добавления объекта классов «Факультет».
В среде Cache` Terminal на языке Cache` Object Script создать объект класса «Факультет», используя обращение к глобалам и функции работы со списками ($lb).
3.3. Освоить работу со связанными объектами различными методами.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов SELECT для просмотра списка Факультетов, названий и адресов их вузов, используя ссылочный синтаксис вместо соединения таблиц.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора UPDATE для изменения названий факультетов в городе Тверь.
В среде Cache` Terminal на языке Cache` Object Script открыть объект класса «Факультет» (метод %OpenId()), просмотреть и изменить значения его вуза и/или атрибутов вуза (используя точечную нотацию) и сохранить в базе данных (метод %Save()).
Задание 4. Освоить способы определения, переопределения и вызова методов экземпляров.
4.1. Создание и вызов методов класса. Объектный синтаксис и встроенный SQL.
Добавить к классу Вуз метод экземпляра Inf(), который возвращает строку вида:
«Название — город — год — количество_факультетов»
для текущего вуза. Метод без параметров. Обращение к полям объекта через «..поле» или «##this.поле». Количество факультетов определяется через поле «факультеты» (метод коллекции Count() ). Конкатенация строк через подчеркивание: «строка1_строка2». Команда возврата из функции: «quit значение».
Пример метода экземпляра:
Method Summa() As %Integer
{
set var=..поле1 + ..поле2 // присваивание
quit var // вернуть значение
}
Создать объект класса Вуз, используя Портал и SQL команду INSERT или используя Терминал и команды работы с объектами или обращаясь глобалам.
Открыть в терминале объект класса Вуз и вызвать его метод с отображением результата (команда write вывода на экран):
set oref=##class(название).%OpenId(индекс)
write oref.Inf()
Переопределить в классе КомВуз метод Inf() для возврата строки вида:
«Название — город — год — количество_факультетов - стоимость»
для текущего комвуза. Количество_факультетов определяется через встроенный SQL с передачей параметров, например:
set a=«NNN»
&sql(select поле into :b from таблица where поле=:a)
write b
,где a и b — переменные программы, а :a и :b - те же переменные, переданные во встроенный SQL.
Создать объект класса КомВуз, открыть его в Терминале и вызвать метод Inf() с отображением результата.
Задание 5. Освоить способы определения, переопределения и вызова методов класса
5.1. Создание и вызов метода класса. Объектный синтаксис
Добавить к классу Вуз метод класса create(название,город,год), который проверяет существование объекта вуза с названием (метод %ExistsId(индекс)), и, если он существует, то открывает его (метод %OpenId(индекс)), иначе создает новый объект (метод %New()) и устанавливает поле названия. Затем устанавливает значения полей город и год, сохраняет объект (метод %Save()). Метод имеет входные параметры: название, город и год вуза со значениями по умолчанию; и выходной параметр — созданный объект.
При создании метода через мастер следует указать, что он является и хранимой процедурой.
Пример метода класса и хранимой процедуры с параметрами по умолчанию:
ClassMethod create(t As %String = "ХХХ") As org [ SqlProc ]
{
код метода
}
Пример условной конструкции:
if x>10 { a=20 }
else { a=200 }
Вызвать метод класса из Терминала для нового объекта:
do ##class(название).метод(параметры)
или метод экземмпляра для существующего объекта:
set o=##class(название).метод(параметры)
write o.Inf()
Проверить в Портале (раздел Таблицы) добавление и изменение объектов.
В Портале (раздел Хранимые процедуры) вызвать хранимую процедуру, соответствующую методу класса, для добавления нового и изменения существующего объектов.
5.2. Создание и вызов метода класса. Встроенный SQL
Добавить к классу Факультет метод класса create(название,вуз), который проверяет существование объекта вуза с указагным названием (метод %ExistsId(индекс)), и, если его не существует, то создает его, используя встроенный SQL (параметры передаются как «:переменная»):
&sql(insert into таблица(поля) values(:значения))
, затем создает Факультет, используя встроенный SQL (аналогично командой INSERT), для создания факультета вуза.
Метод имеет входные параметры: название факультета и название вуза. Выходных параметров у метода нет. При создании метода указать, что он является и хранимой процедурой.
Вызвать метод класса из Терминала для создания Факультета нового вуза и создания Факультета существующего вуза:
do ##class(название).метод(параметры)
Проверить в Портале (раздел Таблицы) добавление объектов. В Портале (раздел Хранимые процедуры) вызвать хранимую процедуру, соответствующую методу класса и проверить результат ее выполнения.
Задание 6. Освоить методы работы с объектом %ResultSet
6.1. Создание процедур. Виртуальные вызова и полиморфизм. Динамический SQL
В среде Cache` Студия создать процедуру InCity(город), которая выдает список Факультетов, имеющихся в указанном городе, и информацию об их Вузах. Входной параметр — название города. Процедура создает и выполняет динамический запрос SQL, который возвращает ID Факультетов, вузы которых расположены в указанном городе, с сортировкой по Вузам. На основе ID открываются объекты Факультетов (метод %OpenId()), и на экран выводятся их названия и результат выполнения функции Inf() для вузов Факультета.
Пример процедуры:
Proc(параметры) Public
{
код процедуры
quit
}
Пример работы с динамическим запросом:
set o=##class(%ResultSet).%New("%DynamicQuery:SQL")
do o.Prepare("select поля from таблица where условие" )
do o.Execute()
while o.Next()
{
set a=o.Data("поле")
write !,a
}
В среде Cache` Terminal вызвать процедуру:
do процедура^программа(параметр)
Преобразовать процедуру в метод класса Факультета и продемонстрировать ее выполнение в Терминале как метод класса и в Портале как хранимую процедуру.
6.2. Освоить работу с запросами
В среде Cache` Студия создать запрос InPrice(стоимость), который возвращает список Факультетов, имеющихся в коммерческих вузах (со стоимостью обучения ниже указанной) , а также название, год и город вуза с сортировкой по городам и Вузам.
Определить запрос как хранимую процедуру и продемонстрировать ее выполнение в Портале.
Дополнительное задание:
Задание 7.1. Работа с коллекциями.
В класс "Факультет" - добавить свойство:
-
Dir - специальности — список (массив) строковых.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL операторов для выполнения запросов, например:
-
Просмотр списка всех Факультетов, имеющих некоторую специальность.
-
Добавление/удаление специальности Факультету.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру) для добавления/удаления специальностей, используя объектный синтаксис.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру) для добавления/удаления специальностей, используя глобалы.
Задание 7.2. Преобразование классов объектов.
В среде Cache` Terminal продемонстрировать (или написать соответствующую процедуру на языке Cache` Object Script в среде Cache` Studio и вызвать ее из среды Cache` Terminal) преобразование объекта класса «Вуз» в объект класса «КомВуз» и наоборот с указанием стоимости. Реализуется через обращение к глобалам.