- •20.7. Средства sql
- •20.8. Резюме
- •21.1. Введение
- •21.2. Некоторые аспекты технологам поддержки принятия решений
- •21.3. Проектирование базы данных поддержки принятия решений
- •21.5. Хранилища данных и магазины данных
- •21.6. Оперативная аналитическая обработка
- •21.7. Разработка данных
- •21.8. Резюме
- •22.1. Введение
- •22.2. Хронологические данные
- •22.3. Основная проблема хронологических баз данных
- •22.4. Интервалы
- •22.5. Интервальные типы
- •22.6. Скалярные операторы для интервалов
- •22.7. Операторы обобщения для интервалов
- •22.8. Реляционные операторы для обработки интервалов
- •22.9. Ограничения, включающие интервалы
- •22.10. Операторы обновления, включающие интервалы
- •22.11. Проектирование базы данных
- •22.12. Резюме
- •23.1. Введение
- •23.2. Обзор основных концепций
- •23.3. Исчисление высказываний
- •23.4. Исчисление предикатов
- •23.5. Базы данных с точки зрения доказательно-теоретического подхода
- •23.6. Дедуктивные субд
- •23.7. Обработка рекурсивных запросов
- •23.8. Резюме
- •Часть VI
- •24.1. Введение
- •24.2. Объекты, классы, методы и сообщения
- •24.3. Еще раз об объектах и объектных классах
- •Cdo для класса set (ref(emp))
- •24.4. Простой пример
- •1 | Course с001 , с001 0ffs , с001 ny offs |
- •24.5. Дополнительные аспекты
- •24.6. Резюме
- •25.1. Введение
- •X2 rational, y2 rational ) ... ;
- •25.2. Первая грубейшая ошибка
- •25.3. Вторая грубейшая ошибка
- •25.4. Вопросы реализации
- •25.5. Преимущества реального сближения двух технологий
- •25.6. Резюме
25.1. Введение
Со времени выхода предыдущего издания прошло около пяти лет. За это время несколько изготовителей выпустили "объектно-реляционные" СУБД, известные на рынке как универсальные серверы. Среди них— Universal Database version of DB2, Universal Data Option for Informix Dynamic Server и Oracle 8i Universal Server, Database Server или Enterprise Server (по-видимому, используются все три названия). Основная идея, положенная в основу всех перечисленных продуктов, заключается в том, что они должны поддерживать как объектные, так и реляционные возможности, иначе говоря, они представляют попытку сближения этих двух технологий.
По глубокому убеждению автора, такое сближение должно основываться на реляционной модели (которая, как объяснялось ранее в этой книге, помимо всего прочего, служит основой современной технологии баз данных в целом). Это значит, что следует таким образом изменить реляционную систему, чтобы в нее вошли по крайней мере самые лучшие возможности объектных систем1. При этом не следует полностью отказываться от реляционных систем, но также не нужно параллельно развивать две разные системы, реляционную и объектную. Это мнение разделяется многими специалистами, включая авторов манифеста "Third Generation Database System Manifesto" [25.34]. Они в весьма категоричной форме заявляют, что СУБД третьего поколения должны включать СУБД второго поколения, где под СУБД первого поколения подразумеваются дореляционные СУБД, под СУБД второго поколения— SQL-системы и под СУБД третьего поколения — системы будущего. Некоторые разработчики объектных систем, очевидно, такое мнение не разделяют, подтверждением чему может служить следующее высказывание из [25.4].
"Развитие компьютерных наук сопровождалось появлением многих поколений методов управления данными, начиная с индексных файлов, сетевых и иерархических СУБД... и заканчивая более современными р&чяционными СУБД... Теперь мы наблюдаем появление еще одного поколения СУБД... в которых обеспечивается управление объектами, поддерживаются гораздо более сложные виды данных."
Здесь четко выражена мысль, что, как реляционные системы в свое время заменили иерархические и сетевые, так и объектные системы заменят реляционные.
Причина несогласия автора настоящей книги с этим мнением состоит в том, что реляционный подход значительно отличается [25.13] от объектного, так как он предполагает теоретическую обоснованность принимаемых решений. Напротив, более старые системы, существовавшие до появления первых реляционных систем, строились на совершенно произвольных посылках. Они позволяли решать важные текущие задачи, но не имели сколько-нибудь прочного теоретического обоснования. К сожалению, приверженцы реляционного подхода (и автор этой книги в том числе) в начальный период оказали себе в некотором роде "медвежью" услугу, восхваляя относительные достоинства как реляционных систем, так и их предшественниц. Эти похвалы были уместны в свое время, но впоследствии благодаря им у многих сложилось впечатление, что реляционные и предшествующие им системы были, по сути, одинаковы. И это ошибочное представление, в свою очередь, привело к процитированному выше выводу, что объекты по сравнению с отношениями — это такой же шаг вперед, какой был при замене иерархий и сетей отношениями.
Так что же можно сказать об объектах? Является ли эта методология также произвольной? На этот вопрос проливает свет следующая цитата из манифеста объектно-ориентированных СУБД "The Object-Oriented Database System Manifesto" [24.1]: "В отношении объектно-ориентированных систем следует применить принцип естественного отбора, описанный Дарвином, т.е. наиболее пригодная объектно-ориентированная модель появится на основе создания некоторого множества экспериментальных прототипов". Иными словами, предложение заключается в том, что мы должны писать код и строить системы без какой-либо заранее определенной теоретической модели и смотреть, что из этого получится!
Исходя из этого, мы принимаем в качестве аксиомы, как, кстати, и большинство основных производителей СУБД, что реляционные системы будут обогащены за счет добавления в них самых лучших возможностей объектной технологии. При этом не следует отвергать реляционную технологию, перечеркивая 30-летний опыт исследований и разработки реляционного подхода.
В главе 24 утверждалось (см. также комментарии к [25.23]), что в ориентации на объекты есть только одна хорошая идея, а именно — совершенная поддержка типов данных (или две хорошие идеи, если считать наследование типов отдельно). Тогда возникает вопрос, каким образом можно включить в реляционную модель надлежащую поддержку типов данных. Ответ на этот вопрос, как вы уже, по-видимому, догадались, прост— такая поддержка существует в форме доменов (которые мы все же предпочитаем называть типами). Другими словами, для реляционной модели ничего не требуется, чтобы достичь объектной функциональности в реляционной системе, т.е. ничего, кроме ее реализации, полной и правильной, которую большинство современных систем с треском провалило2.
Поэтому мы считаем, что реляционная система, которая в полной мере поддерживала бы домены, могла бы справляться со всеми такими "проблемными" типами данных, которые, как часто утверждают, в объектных системах могут обрабатываться, а в реляционных системах — нет. К таким данным обычно относят хронологические последовательности данных, биологические данные, финансовые данные, данные технического проектирования, данные автоматизации офиса и т.д. Поэтому мы считаем, что истинная "объектно-реляционная" система могла бы быть ни чем иным, как истинной реляционной системой, т.е. системой, которая поддерживает реляционную модель со всеми вытекающими отсюда последствиями. Значит, необходимо рекомендовать изготовителям СУБД делать то, что они фактически и пытались делать, а именно — расширять свои системы для включения поддержки необходимых типов или доменов. Конечно, можно возразить, и вполне резонно, что в целом объектные системы выглядят более привлекательно, поскольку реляционная модель неудовлетворительно поддерживается поставщиками SQL-продуктов. Однако это не должно быть причиной отказа от реляционных систем в целом.
В качестве примера вернемся к незаконченным исследованиям из раздела 24.1 главы 24 и покажем подходящее реляционное решение задачи о прямоугольниках. Прежде всего следует определить тип прямоугольника (назовем его RECT).
TYPE RECT POSSREP ( XI RATIONAL, Yl RATIONAL,
