С.Д. Кузнецов - Основы баз данных (1121716), страница 44
Текст из файла (страница 44)
В 1982 г. комитету по базам данных Американского национального института стандартов (АХБ!) было поручено разработать спецификацию стандартного языка реляционных баз данных. Первый документ из числа имеющихся у автора проектов стандарта датирован октябрем 1985 г. и является уже не первым проектом стандарта АХБ!. Стандарт был принят А(х(81 в 1986 г., а в 1987 г.
одобрен Международной организацией по стандартизации (180). Этот стандарт принято называть 80Ь/86. Понятно, что в качестве основы стандарта нельзя было использовать Я Ь Бузгет К. Во-первых, этот вариант языка не был должным образом технически проработан. Во-вторых, его слишком сложно было бы реализовать (кто знает, как бы сложилась судьба 80Ь, если бы все идеи проекта Бужегп К были реализованы полностью).
Поэтому за основу был взят диалект языка 80Ь, сложившийся в 1ВМ к началу 1980-х гг. В сущности, этот диалект представлял собой технически проработанное подмножество 8()Ь Бужет К. К 1989 г, стандарт 80Ь/86 был несколько расширен, и был подготовлен и принят следующий стандарт, получивший название А)х(81/180 8(~Ь/89.
Анализ доступных документов показывает, что процесс стандартизации 80Ь происходил очень сложно с использованием не только научных доводов. В результате Я )Ь/89 во многих частях имеет чрезвычайно общий характер и допускает очень широкое толкование. В атом стандарте полностью отсутствуют такие важные разделы, как манипулирование схемой БД и динамический БЯЬ. Многие важные аспекты языка в соответствии со стандартом определяются в реализации.* Возможно, наиболее важными достижениями стандарта 80Ь/89 являются четкая стандартизация синтаксиса и семантики операторов выборки данных и манипулирования данными и фиксация средств ограничения целостности БД. Были специфицированы средства определения первичного и внешних ключей отношений и так называемых проверочных ограничений целостности, которые представляют собой подмножество немедленно проверяемых ограничений целостности 80Ь Бузгет К.
Средства определения внешних ключей позволяют легко формулировать " Это практически обесценивает стандарт с точки зрения программистов прилохгений баз данных, поскольку не дает возможности создавать приложения, не привязанные к особенностям конкретных СУБД. 207 К рс Основы баз данных требования так называемой ссылочной целостности БД. Это распространенное в реляционных БД требование можно было сформулировать и на основе общего механизма ограничений целостности БОЕ Бувгет В, но формулировка на основе понятия внешнего ключа более проста и понятна. Осознавая неполноту стандарта Я.) 1., на фоне завершения разработки этого стандарта специалисты различных компаний начали работу над стандартом Я;П.2. Эта работа также длилась несколько лет, было выпущено множество проектов стандарта, пока наконец в марте 1992 г.
не был принят окончательный проект стандарта (8(.Н./92). Этот стандарт существенно полнее стандарта Я П./89 и охватывает практически все аспекты, необходимые для реализации приложений: манипулирование схемой БД, управление транзакциями (появились точки сохранения) и сессиями (сессия — зто последовательность транзакций, в пределах которой сохраняются временные отношения), подключения к БД, динамический Я.П.. Наконец, были стандартизованы отношения-каталоги БД, что вообще-то не связано непосредственно с языком, но очень сильно влияет на реализацию.* В 1995 г. стандарт был дополнен спецификацией интерфейса уровня вызова (Сай-Елуе! 1пгегГасе — БО(./СЫ).
80(./СЫ представляет собой набор спецификаций интерфейсов процедур, вызовы которых позволяют выполнять динамически задаваемые операторы БО(.. По сути дела, БО(./СЫ представляет собой альтернативу динамическому Я.Н . Интерфейсы процедур определены лля всех основных языков программирования; С, Аг)а, Разса!, Р1./1 и т.
д. Следует заметить, что стандарт БО(./СЫ послужил основой для создания повсеместно распространенных сегодня интерфейсов ООВС (Ореп ОагаЬаве СоппесГ(у(гу) и П)ВС (2ауа Па!абазе Соппесг!у!гу). В 1996 г. к стандарту БО1 /92 был добавлен еще один компонент— Я.п /РБм (Регз!ыепг Яогед мог)ц1ев). Основная цель этой спецификации состоит в том, чтобы стандартизировать способы определения и использования хранимых процедур, т. е. специальным образом оформленных программ, включающих операторы Я П., которые сохраняются в базе данных, могут вызываться приложениями и выполняются внутри СУБД. Незадолго до завершения работ по определению стандарта Я.Н.2 была начата разработка стандарта Я;Н.З.
Первоначально планировалось завершить проект в 1995 г. и включить в язык некоторые объектные возможности: определяемые пользователями типы данных, поддержку триггеров, под' Среди прочих постижений Бузгеш й нельзя не отметить то, что в базах данных, управляемых этой СУБД, хранились как данные, так и метаданные — описатели отношений, их полей, представлений, ограничения целостности и тд. Для хранения металднных использовались специальные служебные отношения, которые стали называть отношениями-каталогамн.
Из отношений-каталогов можно бьщо выбрать данные с помощью обычных средств языка БО! . Конечно, организация служебных данных — это вопрос реализации БО1., но этот вопрос непосрелстаенно касается потенциальньпг пользователей БОь-ориентированных СУБД, н поэтому стандартизация представления пользователю отношений-каталогов (в стандарте БОЕ„информационной схемы базы данных) является исключительно важным делом. 20в Лекция 11 Общее введение, типы данных и средства определения доменов держку темпоральных свойств данных и т, д. Реально работу над новым стандартом удалось частично завершить только в 1999 с, и по этой причине (а также всвязи с проблемой 2000 года) стандартполучил название Я Е,!999. Приведем краткую характеристику текущего состояния стандарта КОЕ:1999 и перспектив его развития.
Прежде всего, заметим, что каждый новый вариант стандарта языка Я6. был существенно объемнее предыдуших версий. Так, если стандарт Я.(Е/89 занимал около 600 страниц, то объем Я 1Е/92 составлял на 300 с лишним страниц больше. Самые первые проекты ВОЕЗ занимали около ! 500 страниц.
Это вполне естественно, потому что язык усложняется, а его спецификации становятся более детальными и точными. Но разработчики Я)ЕЗ пришли к выводу, что при таких объемах стандарта вероятность его принятия и последуюшей успешной поддержки заметно уменьшается.
Поэтому было принято решение разбить стандарт на относительно независимые части, которые можно было бы разрабатывать и поддерживать по отдельности. В 1999 г. были приняты пять первых частей стандарта ЯЗЕ;!999. Первая часть (Я~Е/Ргатетгог!г) посвяшена описанию концептуальной сгруктуры стандарта. В этой части приводится развернутая аннотация следуюших четырех частей и формулируются требования к реализациям, претендуюшим на соответствие стандарту. Вторая часть КОЕ:!999 (ВОЕ/Роцпда(!оп) образует базис стандарта.
Вводится система типов языка, формулируются правила определения функциональных зависимостей и возможных ключей, определяются синтаксис и семантика основных операторов КОЕ: ° операторов определения и манипулирования схемой базы данных; ° операторов манипулирования данными; е операторов управления транзакциями; ° операторов управления подключениями к базе данных и т. д. Третью часть занимает уточненная по сравнению с Я 11 /92 спецификация Я.Н /С1.1. В четвертой части специфицируется ВОЕ/РБМ вЂ” синтаксис и семантика языка определения хранимых процедур. Наконец, в пятой части — Я,П./В!Л1!!Лйа — определяются правила связывания Я,1Е для стандартных версий языков программирования РОСТКА)х), СОВО1., Р1 /1, Рааса!, Ада, С и М13МРК.
В стандарт КОЕ:1999 должны бьши войти еше несколько частей. Среди них спецификации следующих средств: ° управление распределенными транзакциями (Я~Е/Тгапаасг!оп); ° поддержка темпоральных свойств данных (ВОЕ/Тетрога!); ° управление внешними данными (В( Е/МЕР); ° связывание с объектно-ориентированными языками программирования (Я)Е/ОЕВ); ° поддержка оперативной аналитической обработки (Я.11./ОЕАР). 209 Основы оаз данных К рс В конце 2003 г. был принят и опубликован новый вариант международного стандарта Я) Ь:2003. Многие специалисты считали, что в варианте стандарта, следующем за БОЬ:1999, будут всего лишь исправлены неточности КОЬ:1999.
Но на самом деле, в БОЬ:2003 специфицирован ряд новых и важных свойств, часть из которых мы затронем в этом курсе. Претерпела некоторые изменения общая организация стандарта. Стандарт БОЬ:2003 состоит из следующих частей: ° 9075-1, БОЬ/Ггагпе~чог!г; ° 9075-2, БО /Гоцпг(аг!оп; ° 9075-3, КОЬ/СЬ1; ° 9075-4, ЯП /РБМ; ° 9075-9, БОЬ/МЕ)3; ° 9075-10, 5( ПЬ/ОЬВ; ° 9075-11, БО1/Бспешага; ° 9075-13, КО1 /ЖТ; ° 9075-!4, Я НЬ/ХМЬ. Части 1-4 и 9-10 с необходимыми изменениями остались такими же, как и в Я;>Ь:1999 (разд.
7.4). Часть 5 (БОЬ/В(пг)!пдв) перестала существовать; соответствующие спецификации включены в часть 2. Раздел части 2 5ОЬ:1999, посвященный информационной схеме, вьшелен в отдельную часть 11. Появились две новые части — ! 3 и 14. Часть 13 полностью называется «БОЬ Конг(пел апд Турев Ывшя гпе )ача Ргоягатш(пя Ьапяцаяе» («Использование подпрограмм и типов Я )Ь в языке программирования )ача»).
Появление такой части стандарта оправдано повышенным вниманием к языку 1ача со стороны ведущих производителей БОЬ-ориентированных СУБД. Наконец, последняя часть $ОЬ:2003 посвящена спецификациям языковых средств, позволяющих работать с ХМ1 -документами в среде КО1 . На мой взгляд, текущее состояние процесса стандартизации языка Я~Ь отражает текугцее состояние технологии КОЬ-ориентированных баз данных. Ведущие поставщики соответствующих СУБД (сегодня это компании! ВМ, Огас!е и Мгсгоаой) стараются максимально быстро реагировать на потребности и коньюнктуру рынка и расширяют свои продукты все новыми и новыми возможностями. Очевидна потребность в стандартизации соответствующих языковых средств, но процесс стандартизации явно не поспевает за происходящими изменениями.
Структура языка ЗСИ. В данной лекции мы начинаем систематически описывать базовые механизмы языка БОЬ. Чтобы пояснить, о какой части языка пойдет речь в этой и следующих лекциях, обратимся к рис. 11.1. Язык БОЬ, соответствующий последним стандартам БОЬ:2003, БОЬ:1999 (и даже БО1 /92), — это очень богатый и сложный язык, все воз- г!о Общее введение, типы данных и средства определения доменов Лекция 11 Рис.
11.1. Один из способов разделения языка Я >1. на уровни можности которого трудно сразу осознать и тем более понять. Поэтому приходится разбивать язык на уровни, или слои, такие, что каждый уровень языка включает все конструкции, входящие в более низкие уровни. В стандарте определяется несколько способов разбиения языка на уровни. В одной из классификаций язык разбивается на «пазовый» (епггу), «промежуточный» ((пгеппет((аге) и «полный» ()ий) уровни. Эта классификация ориентирована, прежде всего, на производителей СУБД, в которых поддерживается БО1.. Реализация базового уровня языка является обязательным условием хотя бы какого-то соответствия стандарту.