lab1_2012_93 (Методические указания по выполнению лабораторной работы №1)
Описание файла
Файл "lab1_2012_93" внутри архива находится в папке "Методические указания по выполнению лабораторной работы №1". Документ из архива "Методические указания по выполнению лабораторной работы №1", который расположен в категории "". Всё это находится в предмете "постреляционные базы данных" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "постреляционные базы данных" в общих файлах.
Онлайн просмотр документа "lab1_2012_93"
Текст из документа "lab1_2012_93"
ЛР1 Постреляционные базы данных, 2012 г. ИУ5-93 8
Лабораторная работа «Модели представления данных в СУБД Cache`»
по дисциплине «Постреляционные базы данных»
Цель работы:
-
Изучить различные модели представления данных в среде Cache`.
-
Освоить методы работы с данными используя прямой доступ к глобалам, объектный подход и реляционное представление.
-
Получить навыки работы с инструментальными средствами среды Cache` Studio и среды Cache` Портал, а также функциями Cache` Object Script для обращения к различным представлениям данных.
Время выполнения:
Время выполнения лабораторной работы 4 часа.
Пункты задания для выполнения:
Задание 1. Освоить методы работы с объектами используя прямой доступ к глобалам, объектный подход и реляционное представление.
1.1. Определить в среде Cache` Studio класс "Scls"(Класс) - хранимый класс. Содержит свойства:
-
num – номер (например, 10) - целое,
-
chr - буква (например, А) - символ,
-
dir – ФИО классного руководителя – строковое.
-
индекс типа 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 для просмотра списка 10-х Классов.
В среде 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 класс «specCls » ( углубленный Класс - СпецКласс), производный от класса «Класс», добавив свойство:
-
dop — направление углубленного обучения – строковое.
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 для просмотра списка всех 11-х Классов и СпецКлассов по математике.
В среде Cache` Terminal на языке Cache` Object Script открыть объект класса «СпецКласс» (метод %OpenId()), просмотреть и изменить значения его полей (используя точечную нотацию) и сохранить в базе данных (метод %Save()).
Задание 3. Освоить методы работы со связанными объектами в различных представлениях
3.1. Создать Класс "Fuculty" (ученик) - хранимый. Содержит свойства:
-
FIO - ФИО – строковое (обязательное),
-
inCls — его Класс — ссылка (отношение) на объект класса "Класс" (обязательное), создается как свойство типа «отношение» (при задании связанного поля в другом классе следует указать новое поле «students »-«ученики» вместо выбора из списка существующих).
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 для просмотра списка учеников и их Классов c сортировкой по номеру класса, используя ссылочный синтаксис вместо соединения таблиц.
В среде Cache` Портал (раздел SQL, пакет USER) продемонстрировать выполнение SQL оператора UPDATE для перевода учеников из 10А в 11А.
В среде 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` Студия создать процедуру InYear(номер), которая выдает список учеников, имеющихся в указанных классах, и информацию об их Классах. Входной параметр — номер. Процедура создает и выполняет динамический запрос SQL, который возвращает ID учеников, Классы которых имеют указанный номер, с сортировкой по букве Класса. На основе ID открываются объекты учеников (метод %OpenId()), и на экран выводятся их ФИО и результат выполнения функции Inf() для Классов ученика.
Пример процедуры:
Proc(параметры) Public
{
код процедуры