Введение в системы БД (542480), страница 267
Текст из файла (страница 267)
(Упоминавшиеся выше указатели — это указатели на кортежи в базовых переменных-отношениях, а не в производных.) Но делать такое различие между базовыми и производными переменными-отношениями — значит допускать грубейшую ошибку, поскольку вопрос о переменной-отношении (какой она является: базовой или производной) в определенном смысле относительный (см. обсуждение принципа взаичозаиенлемости в главе 9).
° И наконец чкы эюе паддерживаютсл домены? Похоже, что защитникам уравнения "переменная-отношение = класс" нечего сказать о доменах, по-видимому, потому, что они не могут представить, как домены могут вписаться в их схему. Тем не менее, как неоднократно указывалось, домены — это фундаментальное понятие (см., например, главу 3), Обшую идею всего сказанного можно сформулировать слелуюшим образом. Безусловно, можно построить систему, которая основывается на неверном уравнении "переменная- отношение = класс", и в действительности такие системы уже созданы.
Точно так нет ника- З Терзши концептуальная целостность получил равпрастранвиззе благодаря Фреду Бруксу (Ргед Вгаайь), который в (25.() гиазаз следующее: "(Каицепизуальнал) целагтиасть — эта наиболее валгиый вопрос и сисииьчнам~ ираекизиравании. Лучше не включить в сиси~еззу определенные несоаиегтииые вазмахгнаспзи (и) аизразить единый рнд проектным идей, чем ичеию систелзу, которан паддерзиивает мзиага полезных, на несаязанных и несогласованным идей". Спустя 20 лет ан добавим: "Цельный первакчассный праграимтый продукт далэнен представлять...
логически иагзедаваттьную лзысзениую лзадезь... [Канцептуальнан) целагтнаспю — наиболее наивный фактор дмн удобства в использовании... И сейчас и в этом убелгден больше, чвзз когда бы та ни было. Концептуальная целостность — эта основа дзл получения иачегтвеинага продукта". 1009 Глава 25. Объектно-реляционные базы данных ких сомнений, что подобные системы (как и автомобиль, не имеюший масла в двигателе, или дом„который построен нз песка) могут даже предоставлять полезный сервис в течение некоторого времени, но в конечном счете они обречены на провал. Как возникла первая грубейшая ошибка Интересно поразмышлять об источнике возникновения первой грубейшей ошибки.
На наш взгляд, ее корни кроются в отсутствии согласия, как отмечалось в главе 24, относительно значений терминов в объектном мире. В час~ности, не всеми принимается сам термин объект, нет у него и обшепризнанного значения. Именно это и послужило причиной того, что мы отказались использовать его в дальнейшем.
Тем не менее совершенно очевидно, что, по крайней мере в области объектных языков программирования, термин объект означает то, что традиционно называлось значением или переменной (или тем и другим). Однако, к сожалению, этот термин используется и в других областях, в частности в области семантического моделирования как части множества различных методов и методологий "объектного анализа и проектирования" или "объектного моделирования" (см., например,[13.3]). А в этой области, похоже, он не соответствует понятию "значение" или "переменная*'.
Скорее, он означает то, что среди специалистов по базам данных называют сущностью (откуда следует, между прочим, что в отличие от обьектов языков программирования такие объекты, разумеется, не инкапсулированы). Иначе говоря, "объектное моделирование" — это на самом деле просто моделирование отношений "сушность'связь", с чем автор публикации 113.31 в какой-то мере также соглашается. Поэтому то, что в подобных методологиях идентифицировалось как "объекты", затем корректно отображалось в кортежи переменных-отношений, а не в значения доменов. Вот и весь фокус! 25.3.
Вторая грубейшая ошибка В этом разделе будет рассмотрена вторая грубейшая ошибка. Как мы вскоре убедимся, она логически следует из первой, но также показательна и сама по себе (более того, такая ошибка может быть допушена даже в том случае, если удалось избежать первой грубейшей ошибки). Суть второй ошибки в смешивании указа~елей н отношений.
Начнем с пересмотра основных возможностей, используемых в подходе "переменная- отношение = класс", как мы его определили в предыдущем разделе. Возможно, кое-кто сочтет этот раздел несколько запутанным, поскольку некоторые из возможностей, которые не одобряются, ранее в этой книге зашишались (например, атрибуты со значениями кортежа и отношения), Итак, перейдем к их последовательному рассмотрению. ° Атрибуты со зяачеяиямя-кортежачи и значениями-отношениями Конечно, мы не возражаем против таких атрибутов (да и как мы можем?). Мы возражаем против того, что, во-первых, эти атрибуты должны иметь именно такие значения, которые в данный момент должны быть и в некоторой другой (базовой) переменной-отношении; во-вторых, такие атрибуты лействительно имеют значения, которые сами не являются кортежами или отношениями, а прелставляют собой указатели на кортежи или отношения.
Последнее означает, что в действительности об атрибутах, имеюших в качестве значений кортежи или отношения, речь не идет совсем. 1О1О Часть Л. Объектные и объектно-реляционные базы Данных Замечание. На самом деле идея использования указателей на "кортежи или отношения", означающих именно значения в виде кортежей или отношений,— это вздор. Мы еше обсудим данный вопрос подробнее. ° Операторы (" методы" ), связанные с переменными-отношеиияии. Против такой идеи мы также не имеем ничего против — под этой личиной скрывается привычная концепция хранимых и триггерных процедур.
Однако мы не согласны с тем, что подобные операторы должны быть связаны с переменными-отношениями (и только с ними), а не с доменами и типами. Не поддерживаем мы и точку зрения, что они должны быть связаны с одной определенной переменной-отношением (понятие целевых операндов в другом обличье). ° Подклассы и суперклассьс А вот с этой идей мы не согласны... В системе, которая отождествляет переменные-отношения с классами, подклассы и суперклассы становятся подтаблицами и супертаблицами, а к этой концепции мы относимся [13.12] весьма скептически.
Мы выступаем за настоящую поддержку наследования, как уже объяснялось в главе 19. ° Выражения пути. Мы бы не возражали против использования выражений, которые служили бы просто сокрашениями для последующих ассоциативных ссылок, т.е. от внешнего ключа к совпадающему потенциальному ключу, как предлагалось в (25.! 1]. Однако, как указывалось в разделе 25.2, такие выражения служат сокращениями для последующих пеночек указателей, а этого мы не признаем (поскольку, прежде всего, мы против использования указателей).
° Литеразы кортежей и отношений. Это важные понятия, но их необходимо обобщить в понятия выборок кортежей и отношений (3.3]. ° Реляционные операторы сравнения. Также существенное понятие (хотя требуется правильная его реализация). ° Операторы для обхода иерархии класса. Если "иерархия класса" действительно означает "иерархию переменных-отношений", то, как отмечалось в прелыдушем разделе, мы категорически возражаем, поскольку возможны нарушения свойства реляционной замкнутости (см, также (25.31]). Если же "иерархия класса" означает "иерархию типов" в смысле главы !9, никаких возражений нет (но в действительности это не так), ° Вызов методов внутри предложений, например, БЕЕЕСх и ИНЫЕ.
Конечно, за. ° Доступ к отдельным компонентаи внутри значений атрибута, которые являются кортежами или отношениями. Конечно, за. А теперь остановимся на вопросе смешивания указателей и отношений. Основной аргумент очень прост. По определению указатели указывают на переменные, а не на значения (поскольку у переменных есть адрес, а у значений нет). Следовательно, если переменная-отношение К1 может иметь атрибуты, значения которых являются указателями "на" переменную-отношение К2, то эти указатели будут указывать на переиенные кортежей, а не на их значения.
Но в реляционной модели нет такого понятия, как переменная кортежа. В реляционной модели рассматриваются значения отношений, которые, попросту говоря, являются множествами значений кортежей, которые, в свою очередь, являются множествами скалярных значений. В реляционной модели также рассматриваются переменные-отношения, которые являются переменными, зна- Глава 25. Обьекпзно-реляционные базы данных 1О11 чения которых — отношения. Однако в ней не используются переменные кортежей [т.е. переменные, значения которых — кортежи) или скалярные переменные (переменные, значения которых — скаляры). Единственный вид переменных, который включен в реляционную модель (и единственный вид переменных, который допустим в реляционных базах данных), — это именно переменные-отношеиия.