Введение в стандарты языка баз данных SQL

       

Важность применения стандартов SQL при разработке прикладных систем


Помимо прочего, в курсе содержатся некоторые рекомендации, направленные на то, чтобы облегчить создание мобильных прикладных информационных систем, опирающихся на использование реляционных СУБД, которые поддерживают международный стандарт языка баз данных SQL. Чтобы больше прояснить назначение и возможности предлагаемых материалов, необходимо сделать несколько предварительных замечаний.

Прежде всего под мобильностью прикладной системы здесь понимается не только возможность ее сравнительно легкого переноса на другую аппаратную платформу, но и возможность сравнительно ее легкого приспособления к использованию другой СУБД. Мы не рассматриваем здесь проблемы переносимости, связанные с особенностями операционных систем. Заметим, что в общем случае проблемы переноса будут существенно проще, если в качестве целевых аппаратных средств используются UNIX-компьютеры, причем в качестве операционной системы используются современные версии ОС UNIX, соответствующие международным стандартам (например, системы семейств SystemVRelease 4.x или BSD 4.3), а в качестве языка программирования используется хорошо стандартизованный язык (далее мы предполагаем использование языка ANSI Си). Конечно, при некоторых дополнительных ограничениях на программирование (если это позволяет специфика прикладной системы) иногда можно добиться возможности несложного переноса прикладной системы и в среду другой операционной системы.

Когда мы говорим о возможности приспособления прикладной системы к использованию различных СУБД, то, конечно, имеем в виду не произвольные СУБД, а системы, поддерживающие международный стандарт языка SQL. Другими словами, мы предполагаем прямое использование языка SQL при разработке прикладной системы, а также то, что все взаимодействия с системой БД производятся только с использованием этого языка. На самом деле, это существенно ограничивает возможный набор СУБД. Например, если в некоторой СУБД поддерживается доступ к БД на основе некоторого подмножества SQL, из этого не следует автоматически, что прикладная система может быть легко приспособлена к использованию этой СУБД. Реализация стандарта SQL вообще говоря означает, что для работы с БД не требуется привлечение никакого другого языка.

К сожалению, на практике дела обстоят не совсем так, и в разных СУБД, производители которых объявляют их соответствующими стандарту SQL, достаточно часто реализуются немного разные языки. Частично это объясняется недостатками самого стандарта, частично - историческими и конъюнктурными обстоятельствами. К сожалению, такова текущая реальность, и к ней нужно приспосабливаться.

Дополнительной трудностью при подготовке курса было то, что в настоящее время происходит переход от одного стандарта языка SQL к другому. Как уже отмечалось, первый международный стандарт языка SQL был принят в 1989 г., и подавляющее большинство доступных на рынке СУБД поддерживают именно этот стандарт. Все было бы в порядке, если бы этот стандарт был достаточно полным. Но к сожалению, он обладает по крайней мере двумя недостатками.

Во-первых, очень многие важные свойства языка стандарт устанавливает как определяемые в реализации или зависимые от реализации. Это дало большой простор к расхождениям между различными реализациями SQL. Во-вторых, некоторые практически важные аспекты языка вообще не упоминаются в стандарте SQL/89. К ним прежде всего относятся правила встраивания языка SQL в язык программирования Си и так называемый динамический SQL. Естественно, во всех коммерческих СУБД реализованы какие-то варианты этих возможностей. Как правило, они очень близки, но отсутствие стандарта не гарантирует их идентичность.

Принятый в 1992 г. новый международный стандарт языка SQL тоже не лишен недостатков, но в то же время является существенно более точным и полным, чем SQL/89. SQL/92 не только восполняет недостатки SQL/89, но содержит также много новых свойств. Но даже если ориентироваться на использование СУБД, поддерживающей только стандарт SQL/89, необходимо некоторое знакомство со стандартом SQL/92, поскольку этот стандарт во многом базировался на расширениях языка, имеющихся в различных реализациях. При создании прикладных систем обойтись без использования этих расширений иногда невозможно, а единственным способом анализа совместимости разных расширений SQL/89 является SQL/92.

Естественно, данный курс не может служить заменой текстов стандартов языка SQL и фирменной документации какой-либо конкретной СУБД. Его цель состоит в том, чтобы по возможности облегчить работу по освоению этих основных документов, отметить некоторые тонкие места, связанные с мобильностью. В некоторых случаях, когда вероятность расхождения между разными реализациями может быть особенно велика, будут предлагаться возможные решения локализации проблем.



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