В заключение курса приведем краткую сводку новых возможностей, ожидаемых в новом стандарте SQL/3, работа над которым все еще продолжается.
В стандарте SQL/92 по сравнению со стандартом SQL/89 язык был расширен главным образом количественно, хотя даже этих количественных расширений оказалось достаточно для того, чтобы стандарт SQL/92 не удалось полностью реализовать до сих пор в большинстве коммерческих СУБД. Поскольку SQL/92 не удовлетворял значительной части претензий, исторически предъявляемых к языку SQL, был сформирован новый комитет, который должен выработать стандарт языка с качественными расширениями. Язык SQL/3 пока не сформирован полностью, многие аспекты продолжают обсуждаться. Поэтому к приводимой здесь сводке возможностей нужно относиться как к сугубо предварительной.
Набор встроенных типов данных предполагается расширить типами BOOLEAN и ENUMERATED. Хотя по причине поддержки неопределенных значений языку SQL свойственно применение трехзначной логики, тип BOOLEAN содержит только два возможных значения true и false. Для представления значения unknown рекомендуется использовать NULL, что, конечно, не вполне естественно. Перечисляемый тип ENUMERATED обладает свойствами, подобными свойствам перечисляемых типов в языках программирования.
Расширены возможности работы с неопределенными значениями. Появился новый оператор CREATENULLCLASS, позволяющий ввести именованный набор именованных неопределенных значений. При определении домена можно явно указать имя класса неопределенных значений, появление которых допустимо в столбцах, связанных с этим доменом. Смысл каждого неопределенного значения интерпретируется на уровне пользователей.
Предполагается включение в язык возможности использовать определенные пользователями типы данных. Видимо, будут иметься возможности определения абстрактных типов данных с произвольно сложной внутренней структурой на основе таких традиционных агрегирования и структуризации как LIST, ARRAY, SET, MULTISET и TUPLE, а также возможности определения объектных типов с соответствующими методами в стиле объектно-ориентированного подхода.
Появляется возможность использования принципов наследования свойств существующей таблицы (супертаблицы) при определении новой таблицы (подтаблицы). Подтаблица наследует от супертаблицы все определения столбцов и первичного ключа. Другая возможность - создать таблицу, "подобную" существующей в том смысле, что в новой таблице наследуются определения некоторых столбцов существующей таблицы.
Одной из проблем реализации языка SQL всегда являлась проблема распознавания "изменяемости" соединений. Как известно, если представление включает соединение общего вида, то теоретически невозможно определить, можно ли однозначно интерпретировать операции обновления такого представления. Однако существует несколько важных классов соединений, которые заведомо являются изменяемыми. В SQL/3 предполагается выделить эти классы с помощью специальных синтаксических конструкций.
Наконец-то появляется возможность определения триггеров как комбинации спецификаций события и действия. Действие определяется как SQL-процедура, в которой могут использоваться как операторы SQL, так и ряд управляющих конструкций. На самом деле, этот механизм очень близок к тому, который реализован в OracleV.7 (и, конечно, в Oracle 8).
Что касается управления транзакциями, то происходит возврат к старой идее SystemR о возможности установки внутри транзакции точек сохранения (savepoints). В операторе ROLLBACK можно указать идентификатор ранее установленной точки сохранения, и тогда будет произведен откат транзакции не к ее началу, а к этой точке сохранения.
Как видно, можно ожидать наличия в SQL/3 многих интересных и полезных возможностей. Однако даже промежуточные проекты стандарта включают почти в два раза больше страниц, чем стандарт SQL/92. Поэтому трудно ожидать быстрой реализации этого стандарта после его принятия (а многие вообще сомневаются, что этот стандарт будет когда-либо реализован).
Последний полный проект стандарта был опубликован и предоставлен в свободный доступ в 1993 г. Этот документ имеет очень большой объем (более 3 Мб плоского текста) и носит очень предварительный характер. Видимо, осознавая практическую невозможность разработки и согласования стандарта такого объема, в том же 1983 г. комитеты ANSI и ISO приняли решение о расщеплении стандарта на несколько независимо разрабатываемых и отдельно согласовываемых частей. К настоящему времени таких частей семь:
Разработка третьей части стандарта была завершена в 1995 г. SQL/CLI является аккуратной формализацией интерфейса ODBC, разработанного компанией Microsoft (кстати, это первый случай в истории стандартизации языка SQL, когда за основу международного стандарта принимается некоторый корпоративный стандарт). В том же году стандарт был принят ISO и получил официальное наименование ISO/IEC 9075-3:1995 Informationtechnology - Databaselanguages - SQL - Part 3: Call-LevelInterface (SQL/CLI).
В 1996 г. была закончена разработка четвертой части. Стандарт был принят ISO в конце 1996г. и получил официальное название ISO/IEC 9075-4:1996 Informationtechnology - Databaselanguages - SQL - Part 4: PersistentStoredModules (SQL/PSM).
Про время завершения остальных частей стандарта известно только то, что комитеты обещают закончить работу в 1999 г. Регулярно (хотя и не очень часто) обновляемую информацию о текущем состоянии дел в области стандартизации SQL/3 можно получить на Web-узле http://www.jcc.com/sql
В заключение заметим, что хотя стандарт SQL/3 все еще далек от завершения, практически все компании-производители СУБД утверждают по поводу своих новых продуктов, что они поддерживают базовые свойства SQL/3. В частности, это относится к IBMDB2, InformixUniversalServer и Oracle 8. Информацию относительно этих продуктов можно найти в Web-узлах компаний (www.ibm.com, www.informix.com, www.oracle.com). Обзоры статей, связанных с этой темой, публикуются на сервере www.citforum.ru, а также в журнале "СУБД" (электронная версия доступна по адресу www.osp.ru).
Назад | Содержание | Вперед