Введение в системы БД (542480), страница 263
Текст из файла (страница 263)
24.49.()!(шаи ).О. А Сошрапзои Ьесиееи Оес)цсс!че аис) ОЬ)есс-Ог!епсес) ОасаЬазе 5узсещз 0 Ргос. 2ис(!ис. Соиб ои Оес)исс!че аи<$ ОЬ)есс-Ог!еисес) ОасаЬазез. — МциссЬ, бепиаиу, ОесещЬег, 1991. Ое!оЬег С., К!1ег М., Маьцпайа У. (ес(з), 1.ессцге Ыосез !и Согирисег 5ссеисе 566. — Ыесг Уог(с, И.Уг 5рпийег Чег1ай, 1992. Хотя мы и не согласны по мирим отдельным вопросам, представленным в данной статье, мы согласны с общим выводом, что "дедуктивная" (т.е. основанная на логике) система баз данных имеет большие перспективы ио сравнению с объектными системами.
В статье также затронут важный вопрос относительно возсгожностей оптииизачии систем. Предположим, что мы определили "какой-то объектный класс, поведение которого такое же, как поведение бинарных отношений, и... метод соси (соединение) для этого класса, тогда можно записать, например, выражение й 3018 5 3018 Т. Его можно вычислять как (й 1018 8) 301)С Т нли как й 3018 (Б 1018 Т). Но сможем ли мы это сделать? Никто не определял, что означает метод)от. Является ли он, например, ассоциативным? .. Отсюда можно сделать вывод, что если мы желаем программировать, используя объектную технологию, оставаясь на уровне отношений или выше, то необходимо предоставить системе информацию в виде законов реляционной шсгебры.
Такая информация не может быть выведена системой, но может быть встроена в нее. Таким образом, единственной частью языка запросов, которая будет поддаваться оптимизации, является фиксированное множество методов, для которых... соответствующая семантика предоставлена системе". 24.50.Чоазеп б. Раса Мог)е!з, ОасаЬазе Еаийцайез, аис) ОасаЬазе Маиайещеис 5узсещз.— йеасйи8, Макал АИ!зои-Фез)еу, 1991. 24.51.7аи!о1о С. ТЬе ОасаЬазе сдийиайе бЕМ 1? Ргос. 1983 АСМ 5!бМОО 1ис. Соиб ои Мала ещеис оТОаса. — 5аи )озе, СаИ., Мау, 1983.
(Переиздано: М. 5соиеЬш)сег. йеасйийз !и ОасаЬазе 5узсещз (2-иб ес)!с!ои). — 5аи Масео, Са!!1: Могйаи Кацйиали, 1994.) Глава 24. Объектнвсе базы данньсх 995 Аббревиатура СЕМ (Сепега] Епг]гу Мап(рц1агог) обозначает расширение языка ОНЗЕЬ, в котором поддерживаются отношения, не находящиеся в первой нормальной форме (т.е, отношения с атрибутами, значениями которых являются множества), и отношения с альтернативными атрибутами (например, одни объекты сотрудников ЕИР имеют атрибут постоянной зарплаты ЯйЬлНХ, а другие объекты сотрудников ЕИР имеют атрибут почасовой оплаты НОННЬХ ИЫЕ и атрибут сверхурочной оплаты ОггЕНТХИЕ). Кроме того, в нем поддерживается объектная идея о том, что одни объекты концептуально содержат другие объекты (они используются вместо внешних ключей, которые ссылаются на другие объекты).
Причем привычная запись с использованием точки расширена лля ссылок на атрибуты таких объектов (хотя на самом деле при этом неявно просматриваются некоторые предпочтительные пути соединения). Например, выражение ЕИР.РЕРТ,ВОООЕТ может быть использовано для обращения к бюджету отдела, в котором работает определенный сотрудник. Многие другие системы либо адаптированы к восприятию этой идеи, либо построены на ее основе.
24.52.2г]оп% Я.В., Магег Р. Кеаг](пйз 1п ОЬ]есг-Ог]епгеб РагаЬазе 8умешз. — Вап Ггапсйсо, СаИ.: Могйап Кацгщапп, 1990. Ответы к некоторым упражнениям 24.!. Здесь мы объясним лишь термин объетп. Ниже приведено несколько "определений", которые можно найти в литературе. ° "Объектами называются многократно используемые программные модули, в которых хранятся данные, информация о связях между данными, приложениями и процессами, контролирующими данные и связи*' (из анонса коммерческого программного продукта). ° "Объектом называется область закрытой памяти с открытым интерфейсом" [24.47].
° "Объектом называется абстрактная конструкция, определяющая протокол, с помощью которого пользователи эюго обьекга могуг с ним общаться" (введение к [24.52]). ° "Объектом называется программная структура, которая содержит данные и программы" [24.27]. ° "...все что угодно является объектом...
объект имеет закрытую память и открытый интерфейс" [24.50]. Отметим, что ни одно из этих "определений" не объясняет суть понятия, а именно — что объект является, по существу, просто значением (если он неизменяемый) или переиенной (в противном случае).
Также стоит прокомментировать точку зрения, что "все что угодно является объектом". Вот. например, конструкции, которые не являются объектами в большинстве объектных систем: переменная энзечпгяри, отношения (по крайней мере в ОРМС [24.12]), .иетоды, иденгггггфггкаторы, проериииные переменные. А в некоторых системах (опять же, включая ОРМС) значения также не являются объектами, 24.2. Ниже перечислены преимушества идентификаторов. ° Идентификаторы не характеризуются "разумностью".
В [13.9] объясняется, почему такое "качество" идентификаторов полезно. ° Идентификаторы никогда не изменяются до тех пор, пока существуют объекты, которые они идентифицируют. 996 Часть г7. Объектные и объекпгно-реллг(ионные базы данных ° Идентификаторы не являются сложными конструкциями. В [8.12), [13.10) и [18.8) объясняется, почему и это свойство идентификаторов полезно. ° Все объекты объектной базы данных идентифицируются одинаковым образом (в отличие от реляционных баз данных).
° При ссылке на объекты не нужно повторять пользовательские ключи, поэтому нет нужды в правилах обновления 08 0Р0аТЕ. Некоторые»едос>пашки идентификаторов были кратко перечислены в разделах 24.2 — 24.4, например они не позволяют избежать необходимости в пользовательских ключах, следствием их применения является низкоуровневый стиль программирования с "поиском указателей", их можно применять только для "базовых", т.е.
не производных, объектов. Среди возможных способов реализации идентификаторов нужно указать следующие. ' Физические дисковые адреса (это очень высокопроизводительный способ, но он характеризуется слабой независимостью данных). ° Логические дисковые адреса (т.е. адреса страниц и смещений; это также высокопроизводительный способ, причем он характеризуется большей независимостью данных). ° Искусственные идентификаторы (напрнмер, временные метки, номер по порядку; для такого способа требуется также дополнительное отображение на действительные адреса). 24.3. См.
[24.171. 24.5. Вместо подробного ответа здесь будет предложено несколько соображений по вопро- сам проектирования объектных баз данных в целом. Иногда можно услышать утверждения, что объектные системы облегчают проектирование (и использование) баз данных, поскольку они предоставляют высокоуровневые конструкции для моделирования и поддерживают этн конструкции в системе. (В реляционных же системах высший уровень используется косвенно, а именно: в процессе отображения объектов реального мира в переменные-отношения, атрибуты, внешние ключи и т.д.) В этом утверждении есть доля истины. Однако позвольте прежде задать вопрос "Как выполнен проект объектной базы данных?".
Действительно, "объектная модель", как это принято считать, имеет значительно базьше сп>епеней свободы (или, другими словами, больше выбора) по сравнению с реляционной моделью. Но автору этой книги неизвестно о существовании хотя бы одного стоящего пособия, которое помогло бы реализовать эти возможности.
Например, как определить представление, скажем, множества всех служащих; как массив, как список или как множество и т.д. и т.п. "Для мощной модели данных требуется мощная методология проектирования... и за это ответственна объектная модель данных" (выдержки из [24.27)). Мы могли бы возрази~ь, что характеристику "мощная" необходимо заменить характеристикой "сложная".
24.9. Вместо подробного ответа здесь будет сделано одно замечание относительно сложно- сти этого упражнения. Прежде всего, следует обратить внимание на то, что термин "удалить'* будет использоваться как сокращение для выражения "выбрать в качестве кандидата для физического удаления" (т.е. удалить все ссылки на этот объект). Тогда для того, чтобы удавить объект Х, сначала следует найти все объекты У, которые содержат ссылку на Х, а затем следует либо удалить такие объекты У, либо удалить в этих объектах все ссылки на объект Х (задав лля таких ссылок специальное значение л11, т.е. Глава 24. Объектные базы данных 997 отсутствие значения). Частично проблемы могут возникнуть потому, что невозможно на основании одного только определения данных указать те объекты, которые содержат ссылку на обьект Х, или хотя бы лаже сказать, сколько их существует.