С.Д. Кузнецов - Основы баз данных (1121716), страница 43
Текст из файла (страница 43)
' Хотя зто несколько противоречит одной из главных исходных целей реляционного подхода к организации БД: обеспечить максимальную независимость приложения от структуры БД и увеличить возможность повторного использования существующих баз данных при возникновении новых приложений. С другой стороны, здоровая прагматика говорит о том, что, не забывая о возможных потребностях в будущем, нужно, прежде всего, стремиться к аффективному выполнению текущих звлач. 203 Основы баз данных Курс Лекция 11. Язык баз данных 8(1Ь: общее введение, типы данных и средства определения доменов Оставшаяся часть этого курса посвящается языку реляционных баз данных Б()Ь.
В курсе о реляционных базах данных невозможно обойтись без материала, который относится к этому языку. Это связано совсем не с тем, что язык представляет собой особое достижение в области реляционных БД. Напротив, многие черты БОЬ, начиная с самых первых его вариантов, противоречили принципам реляционной модели данных, заложенным Эдгаром Коддом. С другой стороны, спецификация языка БОЬ, по своей сути, является завершенной спецификацией модели данных, которая сегодня играет роль суррогата реляционной модели.
Если бы мы попытались обойтись в этом курсе без обсуждения языка БОЬ, курс был бы полностью оторван от жизни. Сегодня БОЬ является!тдин йчглса в мире баз данных. Интерфейсы, основанные на Б()Ь, поддерживаются почти во всех используемых СУБД, далеко не все из которых первоначально разрабатывались как реляционные системы. И похоже, что эта ситуация при жизни нынешнего поколения радикальным образом не изменится. Кроме того, язык сам по себе достаточно интересен.
В нем нашел отражение многолетний практический опыт многих людей, и он впитал в себя многие положительные (и отрицательные) черты других языков и подходов (не только языков баз данных и не только реляционного подхода). В данной лекции после небольшой исторической справки и краткого введения в структуру языка БОЬ будут рассмотрены типы данных, допустимые в языке Б()Ь и в Б()1 ориентированных базах данных, а также языковые средства определения, изменения определения и отмены определения доменов.
Ключевые слова: язык баз данньж БОЕ, СУБД Бузгсгп К, БЕОЕ)ЕЕ, БОЕ/ОБ, ОВ2, Огас1с, 1п(опп1х, БуЬазс, М1сгозой БОЕ Бсгусг, стандарт КОЕ/8б, стандарт Я)1./89, БОЕ2, стандарт ЯОЕ/92, КОЕ/СЕ1, ОВВС, )ОВС, БОЕ/РБМ, БОЕЗ, стандарт КОЕ:!999, БОЕ/В1пгйпбз, Я)1 /Тгапзэсбоп, КОЕ/Тстрогэ!, БОЕ/МЕО, КОЕ/ОЕВ, БОЕ/ОЕАР, стандарт БОЕ:2003, БОЕ/Бспегпага, БО ДКТ, 8()Е/ХМЕ, прямой БОЕ, встроенный Я)Е, динамический БОЕ, базовый, промежуточный и полный уровни языка БОЕ, система типов языка Я Е, точные числовые типы, приближенные числовые типы, типы символьных стром, типы битовых строк, типы даты и времени, типы временных интервалов, булсвский тип, типы коллекций, анонимные строчные типы, типы, определяемые пользователем, ссылочныс типы, истинно целые типы, точные типы, допускающие наличие дробной части, литералы типов, типы времени и временной метки с временной зоной, трехзначная логика, типы масси- 204 Общее введение, типы данных и средства определения доменоа Лекция 11 вов, конструктор типа массива, типы мультимножеств, конструктор типа мультимножества, конструктор анонимного строчного типа, структурные определяемые пользователем типы, индивидуальные определяемые пользователем типы, типизированная таблица, ссылочные значения, определение домена, оператор сккдтк помггтн, значение домена по умолчанию, ограничение домена, изменение определения домена, оператор лыки ООкдтн, отмена определения домена, оператор ОКОК Коидтн, неявные преобразования типов, правила приводимости типов, явные преобразования типов или доменов, оператор Одкт.
Введение В начале лекции мы представим небольшой исторический обзор В )1 . Язык уже далеко не молод. В 2004 г. сообщество баз данных отметило его 30- летний юбилей. Поэтому чтобы правильно понимать и трактовать современные варианты ВЩ, нужно знать историю языка хотя бы в общих чертах. Краткая история языка ЗСИ. Язык Б9), предназначенный для взаимодействия с базами данных, появился в середине 70-х гг. (первые публикации датируются 1974 г.) и был разработан в компании ! ВМ в рамках проекта экспериментальной реляционной СУБД Буиет В.
Исходное название языка ВЕ()(3ЕЕ (ВггцсГцгед Епя!(з)т 1 1цегу (лпдцайе) только частично отражало суть этого языка. Конечно, язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционным БД. Но, в действительности, он почти с самого начала являлся полным языком БД, обеспечивающим помимо средств формулирования запросов и манипулирования БД следующие возможности: ° средства определения и манипулирования схемой БД; ° средства определения ограничений целостности и триггеров; ° средства определения представлений БД; ° средства определения структур физического уровня, поддерживающих эффективное выполнение запросов; ° средства авторизации доступа к отношениям и их полям*; ° средства определения точек сохранения транзакции и выполнения фиксации и откатов транзакций.
В языке отсутствовали средства явной синхронизации доступа к обьектам БД со стороны параллельно выполняемых транзакций: с самого начала предполагалось, что необходимую синхронизацию неявно выполняет СУБД. * В этом абзаце применяется терминология, которая использовалась в публикациях, посвя- щенных зуз1ет я. 205 Курс Основы баз данных В настоящее время язык БО(. реализован во всех коммерческих реляционных СУБД и почти во всех СУБД, которые изначально основывались не на реляционном подходе.
Все компании-производители провозглашают соответствие своей реализации стандарту БО(., и на самом деле реализованные диалекты Б()Ь очень близки. Этого удалосьдобиться не сразу. Наиболее близки к Бузгетп В были две системы компании 1ВМ— Я П /1)о и ОВ2*. Разработчики обеих систем использовали опыт проекта Бузгепг В, а СУБД Я21./ГзБ напрямую основывалась на программном коде Буз(егп В. Отсюда предельная близость лиалектов БО(., реализованных в этих системах, к Я 71. Кузгепт В. Из Я21, Бух!опт В были удалены только те части, которые были недостаточно проработаны (например, точки сохранения) или реализация которых вызывала слишком большие технические трудности (например, ограничения целостности и триггеры).
Можно назвать этот путь к коммерческой реализации Я 71. движением сверху вниз. Другой подход применялся в таких системах, как Огас!е, 1пГопгцх и БУЬазе. Несмотря на различие в способах разработки систем, реализация Я;П. везде происходила «снизу вверх». В первых выпущенных на рынок версиях этих систем использовалось ограниченное подмножество БО(.
Бузгегп В. В частности, в первой известной нам реализации БО(. в СУБД Огас1е в операторах выборки не допускалось использование вложенных подзапросов и отсутствовала возможность формулировки запросов с соединениями нескольких отношений. Тем не менее, несмотря на эти ограничения и на очень слабую, на первых порах, эффективность СУБД, ориентация компаний на поддержку разных аппаратных платформ и заинтересованность пользователей в переходе к реляционным системам позволили компаниям добиться коммерческого успеха и приступить к совершенствованию своих реализаций.
В текущих версиях Огас!е, 1п(опп)х, БУЬаае и Мгспжой Я П. Безуег поддерживаются достаточно мощные диалекты БО(., хотя реализация иногда вызывает сомнения."' Особенностью большинства современных коммерческих СУБД, затрудняющей сравнение существуюгцих диалектов БО(., является отсутствие единообразного описания языка. Обычно описание разбросано по разным руководствам и перемешано с описанием специфических для данной ' Как это ни странно, компания! ВМ, имевшая уникальный и положительный опыт реализации экспериментальной реляционной СУБД Буагеш В, не стала первой компанией, выпустившей на рынок коммерческую реляционную СУБД. Компанию! ВМ опередила на два года незадолго до того образованная компания Ошс!е, выпустившая свою первую систему в !979 г.
Современные эксперты по разному объясняют причины этой «заторможенности» !ВМ, но, по всей видимости, основная причина кроется в традиционном консерватизме руководства компании. " например, одной из выигрышных черт БОБ зуагеш В являлось то, что водной транзакции разрешалось комбинировать все возможные операторы БОЬ. Поскольку технически зто обеспечить достаточно трудно, почти во всех сегодняшних ЗОь-ориентированных СУБД имеются ограничения на состав операторов, которые можно выполнять в одной транзакции. 206 Лекция 11 Общее введение, типы данных и средства определения доменов системы языковых средств, не имеющих прямого отношения к ЯН.. Тем не менее, можно сказать, что базовый набор операторов Я НЬ, включающий операторы определения схемы БД, выборки и манипулирования данными, авторизации доступа к данным, поддержки встраивания 80 Ь в языки программирования и операторы динамического 80Ь, в коммерческих реализациях устоялся и более или менее соответствует стандарту Деятельность по стандартизации языка Я )Ь началась практически одновременно с появлением его первых коммерческих реализаций.