Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab1_2012_93.doc
Скачиваний:
2
Добавлен:
13.11.2019
Размер:
67.07 Кб
Скачать

ЛР1 Постреляционные базы данных, 2012 г. ИУ5-93 8

Лабораторная работа «Модели представления данных в СУБД Cache`» по дисциплине «Постреляционные базы данных»

Цель работы:

  1. Изучить различные модели представления данных в среде Cache`.

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

  3. Получить навыки работы с инструментальными средствами среды 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]