Объектная модель SQL
Объектная модель SQL 69 не является тождественной объектным моделям какого-либо объектно-ориентированного языка программирования или какой-либо объектно-ориентрованной системы баз данных (включая модель ODMG – см. разд. 2). Однако при определении объектной модели SQL участники процесса стандартизации тщательно проанализировали ряд других языков и систем с целью выяснения достоинств и недостатков их объектных моделей70.
По мнению авторов стандарта SQL :1999, выработанная ими объектная модель похожа на объектную модель языка Java , но при этом адаптирована к природе языка SQL как языка СУБД с наличием стабильно хранимых метаданных и данных 71.
Объектная модель SQL :1999 включает два основных отличительных компонента – структурные, определяемые пользователями типы данных (User Defined Type – UDT )и типизированные таблицы (Typed Table ). Первый компонент позволяет определять новые типы данных, которые могут быть гораздо более сложными, чем встроенные типы данных языка SQL . При определении структурного UDT требуется специфицировать не только содержащиеся в нем элементы данных, но и семантику типа данных, т.е. его поведение на основе интерфейса вызовов методов. Второй компонент – типизированные таблицы – позволяет определять таблицы, строки которых являются экземплярами (или значениями) UDT , с которым явно ассоциируется таблица.
В стандарте SQL :1999 определены два пакета объектных свойств – минимальный (PKG 006) и полный (PKG 007), которым должны удовлетворять SQL -ориентированные ОРСУБД, претендующие на соответствие стандарту. Ниже мы перечислим свойства, включенные в каждый из пакетов, но смысл этих свойств будет понятен только на основе последующих подразделов.
Пакет PKG 006 включает всего пять свойств:
свойство S 023 (“Basic structured types ”) – возможность определять UDT и их методы с ограниченными возможностями;
свойство S 041 (“Basic reference types ”) – возможность определять и использовать ссылки на экземпляры UDT , входящие в типизированные таблицы;
свойство S 051 (“Create table of type ”) – возможность создания типизированных таблиц;
свойство S 151 (“Type predicate ”) – возможность определения точного типа ( в иерархии типов) экземпляра UDT ;
свойство Т041 (“Basic LOB data type support ”)– возможность определения LOB -типов в смысле SQL (с необязательной поддержкой операций, кроме операций сохранения и полной выборки).
Пакет PKG 007 содержит девять дополнительных свойств:
свойство S 024 (“Enhanced structured types ”) – добавляет к свойству S 023 ряд развитых возможностей, в число которых входят возможности кодирования методов на языках, отличных от SQL , сравнения экземпляров UDT и передача экземпляров UDT в качестве параметров различных процедур;
свойство S 043 (“Enhanced reference types ”) – расширяет свойство S 041 возможностями определения ссылок с областью действия, автоматической проверки законности ссылок и т.д.;
свойство S071 (“SQL-paths in function and type name resolution”) – позволяет использовать путевые выражения SQL (SQL-path) в алгоритме разрешения типа;
свойство S 081 (“Subtables ”) – расширяет возможности свойства S 051, допуская организацию иерархии таблиц, аналогичной иерархии типов соответствующих UDT ;
свойство S 111 (“ONLY in query expressions ”) –обеспечивает возможность выборки только экземпляров указанного типа, без экземпляров любого из его подтипов;
свойство S 161 (“Subtype treatment ”) – дает возможность информировать среду SQL о том, что некоторый экземпляр UDT в действительности является экземпляром указанного подтипа;
свойство S 211 (“User -defined cast functions ”) – разрешает определять подпрограммы, преобразующие экземпляры UDT к другим типам;
свойство S 231 (“Structured type locators ”) – способствует доступу к экземплярам UDT из прикладных программ;
свойство S 023 (“Transform functions ”) – позволяет определять подпрограммы, преобразующие значения UDT в значения предопределенных типов данных и наоборот.