|
Программирование >> Исключение дубликатов строк
отсылались в приложение). Они были обеспокоены тем, что поставщики могли не поддерживать переносимые реализации вложенного SQL, поскольку в рамках стандартов для них отсутствовали специальные требования для обеспечения этого. ХЗН2 отреагировал на это разработкой второго стандарта, который требовал соответствия спецификациям с учетом обеспечения вложенности, и опубликовал его как ANSI ХЗ. 168-1989 - Язык для баз данных с вложенным SQL . Интересно отметить, что ISO решила не публиковать соответствующий стандарт вследствие отсутствия указанной проблемы в меяддународном сообществе. Это означает, что у ISO не имелось спецификаций для встраивания SQL в язык программирования, и эта ситуация изменилась только после опубликования ISO ее стандарта SQL/92. SQL/86 и SQL/89 были далеко не завершенными стандартами - в них отсутствовали самые основные возможности, необходимые для коммерческих СУБД. Например, стандарт не определял способ внесения изменений в структуру базы данных (и в саму систему базы данных) после того, как она была определена. Никто не может изменить или удалить какие-либо структурные компоненты (например, таблицы или столбцы) или сделать любые изменения в защите базы данных. Например, можно создать таблииу (CREATE), но стандарт не включает определения команды DROP (Удалить) для удаления таблицы или команды ALTER (Изменить) для ее изменения. Также можно предоставить (GRANT) защищенный доступ к таблице, но стандарт не включает определения команды REVOKE (Отмена), чтобы разрешить удаление полномочий доступа. По иронии судьбы эти возможности предусматривались всеми коммерческими базами данных, основанными на SQL. Однако они не были включены ни в один стандарт, поскольку каждый поставщик реализовывал их по-разному. Другие возможности были широко реализованы во многих базах данных, основанных на SQL, но были пропущены в стандартах. И опять это был вопрос различий в реализации. К моменту принятия стандарта SQL/89 как ANSI, так и ISO уже работали над основными версиями для SQL, которые должны было сделать его полным и устойчивым языком. Новая версия должна была называться SQL/92 и включать в себя возможности, которые уже были широко реализованы самыми основными поставщиками баз данных. Но одной из главных целей как ANSI, так и ISO было избежать принятия еще одного стандарта, который просто объединял бы общие моменты различных реализаций. В результате было решено включить возможности, которые еще не получили широкого распространения, и добавить новые, которые, по существу; выходили за рамки возможностей, реализованных в то время. ANSI и ISO опубликовали свои новые стандарты SQL: ХЗ. 135-1992 - Язык баз данных SQL и ISO/IEC 9075:1992 - Язык баз данных SQL в октябре 1992 г. Документ SQL/92 значительно больше по объему, чем SQL/89, и намного шире по содержанию. Например, в нем предусматриваются (Средства изменения структуры базы данных после ее определения; поддержка дополнительных операций для манипулирования символьными строками, значениями даты и времени; определяются возможности дополнительной защиты. SQL/92 обозначает большой шаг вперед в сравнении со всеми его предшественниками. По иронии судьбы в настоящее время еще нет СУБД, полностью поддерживающих и реализующих все из SQL/92. Это в большой степени является следствием сложности многих возможностей нового стандарта. Но было бы неблагоразумно думать, что производители смогут ввести эти возможности за одну или две версии своих продуктов. Помимо того, что реализация многих сложных возможностей займет некоторое время и потребует усилий, разработчики СУБД, движимые рынком, вынуждены решать другие насущные задачи в отношении своих продуктов, как, например, повышение производительности, увеличение надежности и обеспечение расширенной системной интеграции. Это не столько оправдание, сколько объяснение того, как это происходит в отрасли, связанной с базами данных. К счастью, комитеты по стандартам в некоторой степени предугадали эту ситуацию. Для того чтобы облегчить плавный и постепенный переход к новому стандарту, ANSI и ISO определили три уровня SQL/92. Начальный SQL Переходный SQL Подобно SQL/89, этот уровень включает возможности для облегчения перехода от SQL/89 к SQL/92, а также возможности, которые корректируют ошибки в стандарте SQL/89. Идея состояла в том, что этот уровень будет легче всего реализовать, поскольку большинство его возможностей уже были широко представлены в существующих продуктах. Этот уровень включает в себя большинство возможностей нового стандарта. Такое решение обоих комитетов было основано на нескольких факторах. Общая цель состояла в расширении стандарта таким образом, чтобы SQL лучше поддерживал концепции реляционной модели, и в переопределении синтаксиса, который был неоднозначным или нечетким. Возможностям, затребованным пользователями СУБД на основе SQL, было уделено большое внимание, с тем чтобы они удовлетворяли этим целям и относительно просто реализовывались большинством пользователей. Этот уровень должен был гарантировать, что продукты, в разумных пределах, будут иметь как можно более надежную реализацию. Это все еще тот уровень, который большинство поставщиков баз данных Пытаются реализовать в своих продуктах. Полный SQL Это полная реализация стандарта SQL/92. Она обязательно включает наиболее сложные возможности, которые были пропущены на первых двух уровнях. Хотя эти возможности считаются важными для удовлетворения потребностей Ч 44 клиентов или для последующей чистки языка, их трудно немедленно реализовать большинству поставщиков. К сожалению, соответствие полному SQL пока еще не является требованием, поэтому необходимо некоторое время, прежде чем мы сможем ожидать появления СУБД, полностью реализующих стандарт. Многие разработчики СУБД продолжают работать над реализацией возможностей SQL/92, и при этом они также разрабатывают и реализуют свои собственные возможности. Их дополнения к стандарту SQL называются расширениями. Например, разработчик может предоставить более шести типов данных, определенных в SQL/92. Хотя эти расширения предоставляют больше функциональных возможностей в рамках данного продукта и позволяют продукту выделяться на рынке, они являются помехами, поскольку заставляют диалект SQL ка>едого поставщика все больше отклоняться от исходного стандарта. Это, в свою очередь, мешает разработчикам баз данных создавать переносимые приложения, которые можно выполнять из любой базы данных. Возможно, эта ситуация изменится после выпуска следующей версии стандарта. Другие стондорты SQL Стандарт ANSI/ISO SQL/92 наиболее широко принят сегодня. Конечно, существуют и другие стандарты, которые включают SQL в той или иной форме. Ниже приведены самые важные из них. X/Open Группа европейских поставщиков (которая вся в целом называется X/OPEN) разработала ряд стандартов, которые могли бы помочь установить среду переносимых приложений, основанную на UNIX. Возможность переноса приложения с одной компьютерной системы на другую без изменений является важным вопросом на европейском рынке. Хотя они и приняли SQL как часть набора стандартов, их версии отклоняются от стандарта ANSI/ISO в нескольких аспектах. SAA Компания IBM разработала свой собственный диалект SQL, который она внедрила в свои спецификации Архитектуры системных приложений (SAA). Интеграция диалекта SQL
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |