Тема_2 (1122332), страница 7
Текст из файла (страница 7)
Кузнецов. Базы данных.81 Понятие модели даСовременные модели данных (29)Модель данных SQL (6). Типы и структуры данных (6)При определении типизированных таблиц можноиспользовать механизм наследования.Можно определить подтаблицу типизированнойподтаблицы, если структурный тип подтаблицыявляется непосредственным подтипом структурноготипа супертаблицы.Подтаблица наследует у супертаблицы способгенерации значений ссылочного типа и все ограниченияцелостности, которые были специфицированы вопределении супертаблицы.Дополнительно можно определить ограничения,затрагивающие новые столбцы.16.09.2008С.Д.
Кузнецов. Базы данных.82 Понятие модели даСовременные модели данных (30)Модель данных SQL (7). Типы и структуры данных (7)С типизированной таблицей можно обращаться, как страдиционной таблицей, считая, что у нее имеются неявно определенные столбцы,а можно относиться к строкам типизированной таблицы, как к объектам структурного типа, OID которых содержатся в«самоссылающемся» столбце.Ссылочный тип можно использовать для типизации столбцовтрадиционных таблиц и атрибутов структурных типов, накоторых потом определяются типизированные таблицы.В последнем случае можно считать, что значениямиатрибутов соответствующих объектов являются объектыструктурного типа, с которым ассоциирован данныйссылочный тип.16.09.2008С.Д.
Кузнецов. Базы данных.83 Понятие модели даСовременные модели данных (31)Модель данных SQL (8). Манипулирование данными (1)Выборка данных производится из одной или несколькихтаблиц, указываемых в разделе FROM запроса.В последнем случае на первом этапе выполнения оператора SELECTобразуется одна общая таблица, получаемая из исходных таблиц путемоперации расширенного декартова умножения.Таблицы могут быть как базовыми, реально хранимыми вбазе данных (традиционными или типизированными), так ипорожденными, т.е.
задаваемыми в виде некоторогооператора SELECT.Это допускается, поскольку результатом выполненияоператора SELECT в его базовой форме являетсятрадиционная таблица.Кроме того, в разделе FROM можно указывать выражениясоединения базовых и/или порожденных таблиц,результатами которых опять же являются традиционныетаблицы.16.09.2008С.Д. Кузнецов. Базы данных.84 Понятие модели даСовременные модели данных (32)Модель данных SQL (9). Манипулирование данными (2)На следующем шаге общая таблица, полученная послевыполнения раздела, подвергается фильтрации путемвычисления для каждой ее строки логического выражения,заданного в разделе WHERE запроса. В отфильтрованной таблице остаются только те строкиобщей таблицы, для которых значением логическоговыражения является true.Если в операторе отсутствует раздел GROUP BY, то послеэтого происходит формирование результирующей таблицызапроса путем вычисления выражений, заданных в спискевыборки оператора SELECT. В этом случае список выборки вычисляется для каждойстроки отфильтрованной таблицы, и в результирующейтаблице появится ровно столько же строк.16.09.2008С.Д.
Кузнецов. Базы данных.85 Понятие модели даСовременные модели данных (33)Модель данных SQL (10). Манипулирование данными (3)При наличии раздела GROUP BY из отфильтрованной таблицыполучается сгруппированная таблица, в которой каждая группасостоит из кортежей отфильтрованной таблицы с одинаковымизначениями столбцов группировки, задаваемых в разделеGROUP BY.Если в запросе отсутствует раздел HAVING, то результирующаятаблица строится прямо на основе сгруппированной таблицы.Иначе образуется отфильтрованная сгруппированная таблица,содержащая только те группы, для которых значением логическоговыражения, заданного в разделе HAVING, является true.Результирующая таблица на основе сгруппированной илиотфильтрованной сгруппированной таблицы строится путемвычисления списка выборки для каждой группы.Тем самым, в результирующей таблице появится ровно столькострок, сколько групп содержалось в сгруппированной илиотфильтрованной сгруппированной таблице.16.09.2008С.Д.
Кузнецов. Базы данных.86 Понятие модели даСовременные модели данных (34)Модель данных SQL (11). Манипулирование данными (4)Если в запросе присутствует ключевое слово DISTINCT, то изрезультирующей таблицы устраняются строки-дубликаты, т.е.запрос вырабатывает не мультимножество, а множество строк.Наконец, в запросе может присутствовать еще и раздел ORDERBY.В этом случае результирующая таблица сортируется в порядкевозрастания или убывания в соответствии со значениями ее столбцов,указанных в разделе ORDER BY.Результатом такого запроса является не таблица, а отсортированныйсписок, который нельзя сохранить в базе данных.Сам же запрос, содержащий раздел ORDER BY, нельзя использовать вразделе FROM других запросов.Приведенная характеристика средств манипулирования даннымиязыка SQL является не вполне точной и полной.Кроме того, она отражает семантику оператора SQL, а не то, какон обычно исполняется в SQL-ориентированных СУБД.16.09.2008С.Д.
Кузнецов. Базы данных.87 Понятие модели даСовременные модели данных (35)Модель данных SQL (12). Ограничения целостности (1)Наиболее важным отличием модели данных SQLот реляционной модели данных является то, чтотаблицы SQL могут содержать мультимножествастрок.Из этого, в частности, следует, что в модели SQLотсутствует обязательное предписание об ограничениицелостности сущности.В базе данных могут существовать таблицы, длякоторых не определен первичный ключ.С другой стороны, если для таблицы определенпервичный ключ, то для нее ограничениецелостности сущности поддерживается точно также, как это требуется в реляционной моделиданных.16.09.2008С.Д.
Кузнецов. Базы данных.88 Понятие модели даСовременные модели данных (36)Модель данных SQL (13). Ограничения целостности (2)Ссылочная целостность в модели данных SQLподдерживается в обязательном порядке, но втрех разных вариантах, лишь один из которыхполностью соответствует реляционной модели.Это связано с уже упоминавшимся в этом разделеинтенсивным использованием в SQL неопределенныхзначений.Кроме того, в SQL имеются развитыевозможности явного определения ограниченийцелостностина уровне столбцов таблиц,на уровне таблиц целикоми на уровне базы данных.16.09.2008С.Д.
Кузнецов. Базы данных.89 Понятие модели даСовременные модели данных (37)Истинная РМД (1). Типы и структуры данных (1)Кристофер Дейт и Хью Дарвен поставили передсобой трудную задачу:показать, что на основе идей Эдгара Кодда можнореализовать СУБД, обеспечивающие возможности почасти представления и хранения данных сложнойструктуры, не меньшие тех, которые обеспечиваютобъектные и SQL-ориентированные СУБД.Этому мешал, прежде всего, тезис Кодда онормализации отношений:в реляционной базе данных должны содержатьсятолько отношения с атрибутами, определенными на«доменах, элементы которых являются атомарными (несоставными) значениями»16.09.2008С.Д.
Кузнецов. Базы данных.90 Понятие модели даСовременные модели данных (38)Истинная РМД (2). Типы и структуры данных (2)Дейт пишет:«Я согласен с Коддом, что желательно оставаться в рамкахлогики первого порядка, если это возможно. В то же время яотвергаю идею "атомарных значений", по крайней мере, всмысле абсолютной атомарности. В Третьем манифесте мыдопускаем наличие доменов, содержащих значенияпроизвольной сложности. (Они могут быть даже отношениями.)Тем не менее, мы остаемся в рамках логики первого порядка.»Если учесть, что цитировалась первая официальнаяпубликация Кодда по поводу реляционной модели данных,то трудно сказать, что Дейт очень уж строго следует всем егозаветам.Те постулаты Кодда, которые вредят достижению целиТретьего манифеста, просто отвергаются.16.09.2008С.Д.
Кузнецов. Базы данных.91 Понятие модели даСовременные модели данных (39)Истинная РМД (3). Типы и структуры данных (3)В истинно реляционной модели оченьбольшое внимание уделяется типамданных.Предлагаются три категории типовданных:скалярные типы,кортежные типыи типы отношений.16.09.2008С.Д. Кузнецов. Базы данных.92 Понятие модели даСовременные модели данных (40)Истинная РМД (4). Типы и структуры данных (4)Скалярный тип данных – это привычный инкапсулированныйтип, реальная внутренняя структура которого скрыта отпользователей.Предлагаются механизмы определения новых скалярныхтипов и операций над ними.Типом атрибута определяемого скалярного типа можетявляться любой определенный к этому моменту скалярный тип, любой кортежный тип и тип отношения.Некоторые базовые скалярные типы данных должны бытьпредопределены в системе. В число этих типов должен входить тип truth valueтак Дейт и Дарвен называют булевский типровно с двумя значениями true и false.16.09.2008С.Д.
Кузнецов. Базы данных.93 Понятие модели даСовременные модели данных (41)Истинная РМД (5). Типы и структуры данных (5)Кортежный тип – это безымянный тип данных,определяемый с помощью генератора типа TUPLE cуказанием множества пар <имя_атрибута,тип_атрибута> (заголовка кортежа).Типом атрибута кортежного типа может являться любойопределенный к этому моменту скалярный тип, любой кортежный тип и тип отношения.Значением кортежного типа является кортеж,представляющий собой множество триплетов<имя_атрибута, тип_атрибута, значение_атрибута>,которое соответствует заголовку кортежа этогокортежного типа.16.09.2008С.Д.