Введение в системы БД (542480), страница 265
Текст из файла (страница 265)
Значит, необходимо рекомендовать изготовителям СУБД делать то, что они фактически и пытались делать, а именно — расширять свои системы для включения поддержки необходимых типов или доменов. Конечно, можно возразить, и вполне резонно, что в целом объектные системы выглядят более привлекательно, поскольку реляционная модель неудовлетворительно поддерживается поставщиками 9 Н.- продуктов. Однако это не должно быть причиной отказа от реляционных систем в целом.
В качестве примера вернемся к незаконченным исследованиям из раздела 24.! главы 24 и покажем подхолящее реляциаияое решение задачи о прямоугольниках. Прежде всего следует определить лпт прямоугольника (назовем его ВЕСТ). ТЕРЕ ВЕСТ РОНЕКЕР ( Х1 ВАТ10ИйЬ, 11 КАТ10ИАЬ, Х2 ВАТ10ИйЬ, 12 ВАТ10ИАЬ ) Предполагается, что физическое представление данных основывается на одном из типов структур хранения, которые позволяют весьма эффективно сохранять такие пространственные структуры данных, как О-деревья, К-деревья т.л.(25.27). Далее нужно определить оператор для проверки, не пересекаются ли два прямоугольника. ОРЕВйТОВ ОЧЕВЬАР ( К1 ВЕСТ, К2 ВЕСТ ) КЕТМЕНЯ ( ВООЬЕАИ ) ВЕТОКИ ( ТНЕ Х1(В1) < ТНЕ Х2(В2) АИО ТНЕ 11(В1! < ТНЕ 12(К2) АИО ТНЕ Х2(В1) > ТНЕ Х1(К2) АИО ТНЕ 12(К1) > ТНЕ 11(К2) ) ) ЕМО ОРЕВАТОК р В этом операторе используется эффективная "краткая" формулировка (см.
главу 24) условия пересечения прямоугольников для эффективной структуры хранения, Теперь пользователь может создать базовую переменную-отношение с атрибутом типа ВЕСТ. РАК ВЕСТАИОЬЕ КЕЬйТ10И ( В ВЕСТ, ... ) ХЕХ ( К ) > В таком случае формулировка запроса "Найти все прямоугольники, которые пересекают данный единичный квадрат" значительно упрощается. ВЕСТАИОЬЕ ИНЕВЕ ОЧЕВЬАР ( В, ВЕСТ (0.0, 0.0, 1.0, 1.0 ) ) Это решение позволяет устранить все недостатки, которые обсуждались в главе 24 в связи с предылушим запросом.
° яам, криста числа, страка, даты и врел~яГ' (24.387, "Объектно-реляционные модели расширяют реляционную модель даякъсс предаставляя более богатую систему тиков" (! 76)З; и т д. 10О1 Глава 25. Объектно-реляционные базы данных В разделах 25.2 и 25.3 рассматриваются две грубейшие ошибки; несомненно, по крайней мере одна из них допущена в каждой объектно-реляционной системе из числа имеющихся на рынке. В разделе 25.4 обсуждаются некоторые аспекты реализации объектно-реляционных систем. В разделе 25.5 описываются преимущества истинных объектно-реляционных систем (т.е. таких систем, в которых нет этих двух грубейших ошибок). Н наконец в разделе 25.б приводится резюме. 25.2.
Первая грубейшая ошибка Начнем с цитаты из [3.3). "Рурежде) чем подробно обсуждать вопрос об интеграции объектов и отношений, необходимо ответить на ключевой вопрос: Выбор такой концепции очень важен, потому что объектный класс — это наиболее фундаментальное понятие в объектном мире, и все остальные объектные понятия в той или иной мере зависят от него. В качестве ответа на рассматриваемыйй вопрос могут быть и были предложены два уравнения: домен = объектный класс; переменная-отношение = объектный класс; Далее мы приведем строгое обоснование того, что первое из уравнений верное, а второе — нет. " На самом деле очевидно, что первое уравнение верно, поскольку и объектные классы, и домены являются просто типами. Поэтому из того, что переменная-отношение — это переменная, а класс — это тип, также непосредственно ясно, что второе уравнение не верно (переменные и типы — это не одно и то же).
По указанным причинам в работе Тйе Т)нп1 Мап(уелго [3.3) категорически утверждалось, что переменные-отношения — это не домены. Тем не менее во многих работах и в некоторых продуктах фактически используется второе уравнение, что мы и называем грубейшей ошибкой, а точнее — первой грубейшей ошибкой, поскольку далее будет рассмотрена еше одна. Очень поучительно было бы более внимательно присмотреться ко второму уравнению, что мы и сделаем ниже. Замечание. Далее в этом разделе почти дословно повторяется [3.3). Почему же может быть допущена такая грубая ошибка? Рассмотрим определение простого класса, написанное на гипотетическом объектном языке, который не совсем (что сделано преднамеренно) совпадает с тем языком, который использовался в разделе 24.3, хотя и похож на него. СКЕЙТЕ ОБЪЕСТ САЙКЕ ЕИР ( ЕИР$ СНЙК(5), ЕКЙИЕ СНЙК(20), БЙЬ КОИЕК1С, НОННУ СНЙК(20), НОККБ РОК СНЙК(20) ) 1оог Часть г7.
Объектные и объектно-реляционные базы данньп (Здесь ЕМР1 и ЕМАМŠ— открытые переменные экэелоияра.) Сравним это определение с определением "базовой переменной-отношения" на языке Б()).. СКЕАТЕ ТАВОТЕ ЕМР ( ЕМР)) ЕМАМЕ ЯАЕ НОВВХ МОККБ РОК СНАК(5), СМАК(20), МОМЕК1С, СМАК(20), СНАК(20) ) СКЕАТЕ ТАВЕЕ ЕМР ( ЕМР0 ЕМАМЕ БА1~ НОВВХ МОККЯ РОК СНАК(5), СНАК(20)> МОМЕК1С, АСТ1Ч1ТХ, СОМРАМХ ) 1 СКЕАТЕ ТАВОТЕ АСТ1ЧХТХ ( МАМЕ СНАК(20), ТЕЛМ 1МТЕОЕК ) 1 СКЕАТЕ ТАВЕЕ СОМРАМХ ( МАМЕ СНАК(20), ЕОСАТ1ОМ С1ТХБТАТЕ ] СКЕАТЕ ТАВЬЕ С1ТХБТАТЕ ( С1ТХ СНАМ(20), БТАТЕ СНАК(2) ) Пояснения. Для атрибута НОВВХ (Хобби) в переменной-отношении ЕМР объявлен тип АСТ1Ч1ТХ (Деятельность), который, в свою очередь, является атрибутом, состояшим из двух атрибутов — МАМЕ (Название команды) и ТЕЛМ (Команда), где ТЕАМ представляет 10ОЗ Глава 25.
Объектно-реляг(ионневе базы данных Эти выражения, несомненно, очень похожи, и, конечно же, очень велико искушение их приравнять. И как отмечалось выше, в некоторых системах именно так и было сделано. Рассмотрим этот вопрос подробнее. Возьмем, например, показанный выше оператор СКЕАТЕ ТАВОТЕ и ряд возможных его расширений, которые, как может показаться, делают его более "объектно-подобным". Зачечание. Далее мы будем основываться на конкретном коммерческом продукте, а точнее — на примере, взятом из документации для этого пролукта. Однако здесь не указывается, что это за продукт, поскольку в данном случае у нас нет намерения критиковать или хвалить какой-либо конкретный продукт. Критика же, которая будет встречаться ниже, с соответствующими изченениячи применима к любой системе, в которой было принято уравнение "переменная-отношение = объектный класс".
Первое расширение позволяет использовать составные атрибуты, т.е. значения этих атрибутов представляют собой кортежи из некоторых других переменных-отношений (или из той же самой переменной-отношения). В нашем примере можно заменить исходный оператор СЕНАТЕ ТАВОТЕ следуюшим набором операторов (рис. 25.1). число игроков в соответствуюшей команде. Например, в столбец АСТ1Ч1ТУ может быть помешено следующее значение: ('РооЬа11', 11). Каждое значение НОЕВУ в действительности является заданной парой значений, т.е.
значением переменной МАМЕ и значением переменной ТЕАИ. (Точнее, это пара значений, которая в данный момент присутствует как кортеж в переменной-отношении АСТ1Ч1ТУ.) Рис. 25. А Атрибуты, содержащие кортежи или указатели на иих (эно реизенив не ре- кол~ендуется) Замечание. Обратите внимание, что мы уже нарушили предупреждение из третьего манифеста, что переменная-отношение — это не домен, поскольку "домен" для атрибута НОВВ1 определен как переменная-отношение АСТ1Ч1Т1. Подробнее этот вопрос будет рассмотрен ниже.
Аналогично для атрибута НОНЕЯ РОВ (место работы) в переменной-отношении ЕМР объявлен тип СОИРАИУ (компания), который, в свою очередь, является переменной- отношением, состояшим из двух атрибутов, причем олин из них — атрибут С1ТУЯТАТЕ (город, штат) — также является переменной-отношением из двух атрибутов, и т.д.
Иначе говоря, переменные-отношения АСТ1Ч1ТУ, СОМРАИУ и С1ТУЯТАТЕ рассматриваются и как типы (или домены), и как переменные-отношения. То же правило, конечно, верно и для переменной-отношения ЕМР. Таким образом, первое расширение языка, грубо говоря, аналогично разрешению одним объектам содержать другие объекты, тем самым обеспечивая поддержку концепции иерархии вложения (см, главу 24). В качестве небольшого отступления отметим, что первое расширение мы характеризовали как "атрибуты, содержашие кортежи", поскольку так его характеризуют сами защитники уравнения "переменная-отношение = класс" (см., например, 124.33)).
Но точнее его было бы охарактеризовать как "атрибуты, содержащие указатели иа кортежи" (вопрос, который вскоре будет рассмотрен). Поэтому на рис. 25.) во всех трех случаях следовало бы заменить термин кортеж термином указатель на кортеж. Замечания, которые были сделаны в отношении первого расширения, справедливы и для второго расширения. Оно допускает атрибуты са значениями, представляюи(ими собой отношения, т.е. значениями могут быть .множества кортежей какой-либо другой переменной-отношения (или.
возможно, той же самой). Предположим, например, что сотрудники могут иметь не одно, а произвольное число увлечений (рис. 25.2). 1004 Часть П. Объектные и объектно-реляционные базы данньп Рис. 25.2. Атрибуты, содержащие множества кортежей или указатели на них Рата решение не рекаиендуется) СКЕАТЕ ТАВЬЕ ЕМР ( ЕМР0 СНАК(5), ЕМАМЕ СНАК(20), ЯАЬ МОМЕК1С, НОВВ1ЕЯ ЯЕТ ОР ( АСТ1Ч1ТХ ), ИОККЯ РОК СОМРАНХ ) Пояснения. Теперь значением столбца НОВВ1ЕЯ внутри данного кортежа переменной- отношения ЕМР концептуально является множество пар значений (МАМЕ, ТЕАМ), т е, кор- тежей переменной-отношения АСТ171ТХ.
Это второе расширение, попросту говоря, ана- логично разрешению объектам содержать "коллекции" объектов, что, по сути, является более сложной версией иерархии вложения. Заиечание. Отметим, между прочим, что в продукте, на котором основывается наш пример, объекты коллекции сами по себе могут быть последаватсльнастялги или паке- таии, а также мнажестваии. В качестве третьего расширения выступает разрешение переменным-отношениям иметь связанные с ними методы, как, например, показано ниже.
СКЕАТЕ ТАВЬЕ ЕМР ( ЕМР0 СНАК(5), ЕНАМЕ СНАК(20), ЯАЬ МОМЕК1С, НОВВ1ЕЯ ЯЕТ ОР ( АСТ171ТХ ), ЖОКЕЯ РОК СОМРАНХ ) МЕТНОО КЕТ1КЕМЕНТ ВЕМЕРТТЯ ( ) с НОМЕК1С у Пояснения. В этом примере КЕТ1КЕМЕНТ ВЕНЕР1ТЯ является методом, который в качестве аргумента принимает заданный экземпляр кортежа ЕМР и возвращает результат типа НОМЕК1С. Наконец, последнее расширение заключается в разрешении определять нодкзассы (рис. 25.3). СКЕАТЕ ТАВЬЕ РЕКЯОМ ( ЯЯ$ СНАЯ(9), В1КТНОАТЕ ВАТЕ, АВОКЕЯЯ СКАК(50) ) ) Глава 25.