Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Представление подклассов






 

По умолчанию, любые поля, которые входят в подкласс сохраненного класса, хранятся в дополнительном узле. Имя подкласса используется в качестве дополнительный идентификатор узла.

Например, допустимо, мы определили простой сохраненный класс MyApp.Person с двумя литеральными свойствами:

 

Class MyApp.Person Extends %Persistent [ClassType = persistent]

{

Property Name As %String;

Property Age As %Integer;

}

 

Потом определили сохраненный подкласс, MyApp.Student, ктр включает два дополнительных литеральных свойства:

 

Class MyApp.Student Extends Person [ClassType = persistent]

{

Property Subject As %String;

Property Mark As %Float;

}

 

Если мы создадим и сохраним два экземпляра класса MyApp.Student, то результирующий глобал будет подобен следующему:

 

^ MyApp.Person = 2 // счетчик узлов

^MyApp.Person (1) = $LB (" Student", 19, " Иванов")

^MyApp.Person (1, " Student") = $LB (3.2, " Физика")

^MyApp.Person (2) = $LB (" Student", 20, " Петров")

^MyApp.Person (2, " Student") = $LB (3.8, " Химия")

 

Свойства, унаследованные от класса Person, хранятся в главном узле, в то время как свойства, которые входят в класс Student сохранятся в дополнительных подузлах. Эта структура гарантирует, что данные класса Student могут быть использованы равнозначно и как данные класса Person.

Например, SQL запрос, который выдает список имен всех объектов класса Person, будет корректно выбирать данные как Person, так и Student. Такая структура также облегчает работу компилятора классов по поддержке совместимости свойств, которые добавляются как из классов, так и из подклассов. Заметим, что первый элемент узла содержит строку " Student", которая указывает на то, что это данные класса Student.

6 Расширение Caché SQL

СУБД Caché является уникальной системой, поскольку наряду с реализацией в полном объеме основных принципов ОО технологии, также поддерживается язык структурированных запросов SQL. Это обеспечивает выполнение запросов согласно стандарту, который поддерживается многими инструментальными средствами.

Кроме того, с помощью единой архитектуры данных, возможно автоматическое преобразования реляционных описаний объектов в классы. При получении DDL данных, Caché автоматически преобразует DDL-описание в свою внутреннюю форму и сохраняет полученную конструкцию в словаре данных. Это позволяет работать с данными, как в виде реляционных таблиц, так и классов объектов.

Таким образом, при переходе на объектную технологию, разработка не начинается с нуля – много операций Caché делает автоматически.
Классы Caché могут быть представлены в виде реляционных таблиц, при чем отношение между различными понятиями объектного и реляционного записей представлены в табл. 1.

Таблица 1

Объектное понятие Реляционное понятие
Класс Таблица
Экземпляр Строка
Идентификатор объекта Колонка первичного ключа
Свойство-константа Колонка
Ссылку на сохраненный объект Внешний ключ
Серіалізований объект Индивидуальные столбики
Коллекция-список Колонка с полем-списком
Коллекция-массив Отдельная таблица
Индекс Индекс
Запрос Хранимая процедура или представление
Метод класса Хранимая процедура

Также в Caché есть некоторые понятия, которым нет соответствующих в реляционной модели, например параметры класса, методы объектов, и тому подобное.

Кроме того, запросы могут быть членами класса, например:

Query GetAll() As %SQLQuery(CONTAINID = 1)

{
SELECT %ID, sampleProperty FROM sample

}

Реализация SQL в Кэше предусматривает целый ряд расширений стандартного синтаксиса по сравнению с ANSI-стандартом. Это было сделано для поддержки интеграции с Caché Objects. К ним относятся:

- дополнительные операторы Caché;

- поля-списки;

- соединение;

- отношение зависимости.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.