Тема_2 (1122332), страница 6
Текст из файла (страница 6)
Манипулирование данными (2)OQL является функциональным языком, допускающим неограниченнуюкомпозицию операций, если операнды не выходят на пределы системытипов.OQL не является вычислительно полным языком. Он представляетсобой простой язык запросов.Операторы языка OQL могут вызываться из любого языкапрограммирования, для которого в стандарте ODMG определеныправила связывания.Это является следствием того факта, что результат любого запроса обладаеттипом, принадлежащим к модели типов ODMG, и поэтому к результатузапроса может быть применен новый запрос.И, наоборот, в запросах OQL могут присутствовать вызовы операций,запрограммированных на этих языках.В OQL не определяются явные операции обновления, а используютсявызовы операций, определенных в объектах для целей обновления.В OQL обеспечивается декларативный доступ к объектам.
По этойпричине OQL-запросы могут хорошо оптимизироваться.Можно легко определить формальную семантику OQL.16.09.2008С.Д. Кузнецов. Базы данных.71 Понятие модели даСовременные модели данных (20)ОО-модель данных (13). Манипулирование данными (3)Получить номера руководителей отделов и тех служащих их отделов, зарплатакоторых превышает 20000 руб.SELECT DISTINCT STRUCT ( ОТД_РУК: D.ОТД_РУК,СЛУ:( SELECT EFROM D.CONSISTS_OF AS EWHERE E.СЛУ_ЗАРП > 20000.00 ) )FROM ОТДЕЛЫ DПредполагается, что для атомарного объектного типа ОТДЕЛ определен экстенттипа множества с именем ОТДЕЛЫ.Перебираются все существующие объекты типа ОТДЕЛ, и для каждого такогообъекта происходит переход по связи к литеральному множеству объектов типаСЛУЖАЩИЙ, соответствующих служащим, которые работают в данном отделе.На основе этого множества формируется «усеченное» множество объектов типаСЛУЖАЩИЙ, в котором остаются только объекты-служащие с зарплатой, большей20000.00.Результатом запроса является литеральное значение-множество, элементамикоторого являются значения-структуры с двумя литеральными значениями,первое из которых есть атомарное литеральное значение типа INTEGER,а второе – литеральное значение-множество с элементами-объектами типа EMP.Более точно, результат запроса имеет тип set < struct { integer ОТД_РУК; bag <СЛУЖАЩИЙ > СЛУ } >.16.09.2008С.Д.
Кузнецов. Базы данных.72 Понятие модели даСовременные модели данных (21)ОО-модель данных (14). Манипулирование данными (4)В совокупности результатом допустимых вOQL выражений запросов могут являться:коллекция объектов;индивидуальный объект;коллекция литеральных значений;индивидуальное литеральное значение.16.09.2008С.Д. Кузнецов. Базы данных.73 Понятие модели даСовременные модели данных (22)ОО-модель данных (15). Ограничения целостности (1)В соответствии с общей идеологией объектно-ориентированногоподхода в модели ODMG два объекта считаются совпадающими втом и только в том случае, когда являются одним и тем жеобъектом, т.е.
имеют один и тот же OID.Объекты одного объектного типа с разными OID считаются разными,даже если обладают полностью совпадающими состояниями.Поэтому в объектной модели отсутствует аналог ограниченияцелостности сущности реляционной модели данных.Интересно, что при определении атомарного объектного типаможно объявить ключ – набор свойств объектного класса,однозначно идентифицирующий состояние каждого объекта,входящего в экстент этого класса.Для класса может быть объявлено несколько ключей, а может не бытьобъявлено ни одного ключа даже при наличии определения экстента.Но при этом определение ключа не трактуется в модели какограничение целостности;утверждается, что объявление ключа способствует повышениюэффективности выполнения запросов.16.09.2008С.Д. Кузнецов. Базы данных.74 Понятие модели даСовременные модели данных (23)ОО-модель данных (16).
Ограничения целостности (2)Что же касается ссылочной целостности, то онаподдерживается, если между двумя атомарнымиобъектными типами определяется связь вида«один-ко-многим».В этом случае объекты на стороне связи «один»рассматриваются как предки, а объекты настороне связи «многие» – как потомки,и ООСУБД обязана следить за тем, чтобы необразовывались потомки без предков.16.09.2008С.Д. Кузнецов. Базы данных.75 Понятие модели даСовременные модели данных (24)Модель данных SQL (1). Типы и структуры данных (1)SQL-ориентированная база данныхпредставляет собой набор таблиц, каждая изкоторых в любой момент времени содержитнекоторое мультимножество строк,соответствующих заголовку таблицы.В этом состоит первое и наиболее важное отличиемодели данных SQL от реляционной модели данных.Вторым существенным отличием является того,что для таблицы поддерживается порядокстолбцов, соответствующий порядку ихопределения.Другими словами, таблица – это вовсе неотношение, хотя во многом они похожи.16.09.2008С.Д.
Кузнецов. Базы данных.76 Понятие модели даСовременные модели данных (25)Модель данных SQL (2). Типы и структуры данных (2)Имеется две основных разновидности таблиц, хранимых вбазе данных: традиционная таблица и типизированная таблица.Традиционная таблица определяется как множествостолбцов с указанными типами данных.В SQL поддерживаются следующие категории типов данных:точные числовые типы; приближенные числовые типы; типысимвольных строк; типы битовых строк; типы даты ивремени; типы временных интервалов; булевский тип; типыколлекций; анонимные строчные типы; типы, определяемыепользователем; ссылочные типы.Здесь мы ограничимся только пояснениями наименееочевидных случаев.16.09.2008С.Д. Кузнецов.
Базы данных.77 Понятие модели даСовременные модели данных (26)Модель данных SQL (3). Типы и структуры данных (3)Булевский тип в SQL содержит три значения – true, false иuknown.Допускается объявление двух видов типов коллекций:Это связано с интенсивным использованием в SQL так называемогонеопределенного значения (NULL), которое разрешается использоватьвместо значения любого типа данных.типы массиваи типы мультимножества.Элементы типа коллекции могут быть любого типа данных,определенного к моменту определения данного типа коллекции.При объявлении типа мультимножества можно явно запретить наличиев его значениях элементов-дубликатов, что фактически приводит кобъявлению типа множества.Анонимный строчный тип – это безымянный структурный тип,значения которого являются строками, состоящими изэлементов ранее определенных типов.16.09.2008С.Д.
Кузнецов. Базы данных.78 Понятие модели даСовременные модели данных (27)Модель данных SQL (4). Типы и структуры данных (4)Поддерживается два вида типов данных, определяемыхпользователями: индивидуальные и структурные типы.Индивидуальный тип – это именованный тип данных,основанный на единственном предопределенном типе. Индивидуальный тип не наследует от своего опорного типанабор операций над значениями. Чтобы выполнить некоторую операцию базового типа надзначениями определенного над ним индивидуального типа,требуется явно сообщить системе, что с этими значенияминужно обращаться как со значениями базового типа. Имеется также возможность явного определения методов,функций и процедур, связанных с данным индивидуальнымтипом.16.09.2008С.Д.
Кузнецов. Базы данных.79 Понятие модели даСовременные модели данных (28)Модель данных SQL (5). Типы и структуры данных (5)Структурный тип данных – это именованныйтипы данных, включающий один или болееатрибутов любого из допустимых в SQL типаданных, в том числе другого структурного типа,типа коллекций, анонимного строчного типа и т.д.Дополнительные механизмы определяемыхпользователями методов, функций и процедурпозволяют определить поведенческие аспектыструктурного типа.При определении структурного типа можноиспользовать механизм наследования от ранееопределенного структурного типа.16.09.2008С.Д.
Кузнецов. Базы данных.80 Понятие модели даСовременные модели данных (28)Модель данных SQL (5). Типы и структуры данных (5)При определении типизированной таблицы указывается ранееопределенный структурный тип, и если в нем содержится nатрибутов, то в таблице образуется n+1 столбец, из которыхпоследние n столбцов с именами и типами данных,совпадающими именам и типам атрибутов структурного типа,а первый столбец, имя которого явно задается, называется«самоссылающимся» и содержит типизированные уникальныеидентификаторы строк, которые могутгенерироваться системой при вставке строк в типизированную таблицу,явно указываться пользователямиили состоять из комбинации значений других столбцов.Типом «самоссылающегося» столбца является ссылочный тип,ассоциированный со структурным типом типизированнойтаблицы.Способ генерации значений ссылочного типа указывается приопределении соответствующего структурного типа иподтверждается при определении типизированной таблицы.16.09.2008С.Д.