Введение в модель данных SQL

       

Объектная модель SQL


Объектные расширения SQL:1999 базируются на некоторой объектной модели, хотя эта модель в явном виде в стандарте не специфицируется. Объектная модель SQL1) не является тождественной объектным моделям какого-либо объектно-ориентированного языка программирования или какой-либо объектно-ориентрованной системы баз данных. Однако при определении объектной модели SQL участники процесса стандартизации тщательно проанализировали ряд других языков и систем с целью выяснения достоинств и недостатков их объектных моделей. По мнению авторов стандарта SQL:1999, выработанная ими объектная модель похожа на объектную модель языка Java2), но при этом адаптирована к природе языка SQL как языка СУБД с наличием стабильно хранимых метаданных и данных.

Объектная модель SQL:1999 включает два основных отличительных компонента – структурные, определяемые пользователями типы данных (User Defined Type – UDT) и типизированные таблицы (Typed Table). Первый компонент позволяет определять новые типы данных, которые могут быть гораздо более сложными, чем встроенные типы данных языка SQL. При определении структурного UDT требуется специфицировать не только содержащиеся в нем элементы данных, но и семантику типа данных, т. е. его поведение на основе интерфейса вызовов методов. Второй компонент – типизированные таблицы – позволяет определять таблицы, строки которых являются экземплярами (или значениями) UDT, с которым явно ассоциируется таблица. Во многих отношениях строка типизированной таблицы похожа на объект класса в объектно-ориентированной системе.

В стандарте SQL:1999 определены два пакета объектных свойств – минимальный (PKG006) и полный (PKG007), которым должны удовлетворять SQL-ориентированные ОРСУБД, претендующие на соответствие стандарту. Ниже будут перечислены свойства, включенные в каждый из пакетов, но смысл этих свойств будет понятен только после прочтения остальных разделов.

Пакет PKG006 включает всего пять свойств:

  • свойство S023 ("Basic structured types") – возможность определять UDT и их методы с ограниченными возможностями;
  • свойство S041 ("Basic reference types") – возможность определять и использовать ссылки на экземпляры UDT, входящие в типизированные таблицы;
  • свойство S051 ("Create table of type") – возможность создания типизированных таблиц;
  • свойство S151 ("Type predicate") – возможность определения точного типа (в иерархии типов) экземпляра UDT;
  • свойство Т041 ("Basic LOB data type support") – возможность определения LOB-типов в смысле SQL (с необязательной поддержкой операций, кроме операций сохранения и полной выборки).


Пакет PKG007 содержит девять дополнительных свойств:

  • свойство S024 ("Enhanced structured types") добавляет к свойству S023 ряд развитых возможностей, в число которых входят возможности кодирования методов на языках, отличных от SQL, сравнения экземпляров UDT и передача экземпляров UDT в качестве параметров различных процедур;
  • свойство S043 ("Enhanced reference types") расширяет свойство S041 возможностями определения ссылок с областью действия, автоматической проверки законности ссылок и т. д.;
  • свойство S071 ("SQL-paths in function and type name resolution") позволяет использовать путевые выражения SQL (SQL-path) в алгоритме разрешения типа;
  • свойство S081 ("Subtables") расширяет возможности свойства S051, допуская организацию иерархии таблиц, аналогичной иерархии типов соответствующих UDT;
  • свойство S111 ("ONLY in query expressions") обеспечивает возможность выборки только экземпляров указанного типа, без экземпляров любого из его подтипов;
  • свойство S161 ("Subtype treatment") позволяет информировать среду SQL о том, что некоторый экземпляр UDT в действительности является экземпляром указанного подтипа;
  • свойство S211 ("User-defined cast functions") разрешает определять подпрограммы, преобразующие экземпляры UDT к другим типам;
  • свойство S231 ("Structured type locators") способствует доступу к экземплярам UDT из прикладных программ;
  • свойство S023 ("Transform functions") позволяет определять подпрограммы, преобразующие значения UDT в значения предопределенных типов данных, и наоборот.



Содержание раздела