Помощь в написании студенческих работ
Антистрессовый сервис

Манипулирование данными в объектной модели

РефератПомощь в написанииУзнать стоимостьмоей работы

В OQL обеспечиваются высокоуровневые примитивы для работы с множествами объектов, но, кроме того, имеются настолько же эффективные примитивы для работы со структурами, списками и массивами. OQL опирается на объектную модель ODMG (имеется в виду, что в нем поддерживаются средства доступа ко всем возможным структурам данных, допускаемых в структурной части модели). В OQL не определяются явные… Читать ещё >

Манипулирование данными в объектной модели (реферат, курсовая, диплом, контрольная)

В стандарте ODMG в качестве базового средства манипулирования объектными базами данных предлагается язык OQL (Object Query Language). Это небольшой, но достаточно сложный язык запросов. Разработчики в целом характеризуют его следующим образом:

  • · OQL опирается на объектную модель ODMG (имеется в виду, что в нем поддерживаются средства доступа ко всем возможным структурам данных, допускаемых в структурной части модели).
  • · OQL очень близок к SQL/92. Расширения относятся к объектно-ориентированным понятиям, таким как сложные объекты, объектные идентификаторы, путевые выражения, полиморфизм, вызов операций и отложенное связывание.
  • · В OQL обеспечиваются высокоуровневые примитивы для работы с множествами объектов, но, кроме того, имеются настолько же эффективные примитивы для работы со структурами, списками и массивами.
  • · OQL является функциональным языком, допускающим неограниченную композицию операций, если операнды не выходят за пределы системы типов. Это является следствием того факта, что результат любого запроса обладает типом, принадлежащим к модели типов ODMG, и поэтому к результату запроса может быть применен новый запрос.
  • · OQL не является вычислительно полным языком. Он представляет собой простой язык запросов.
  • · Операторы языка OQL могут вызываться из любого языка программирования, для которого в стандарте ODMG определены правила связывания. И, наоборот, в запросах OQL могут присутствовать вызовы операций, запрограммированных на этих языках.
  • · В OQL не определяются явные операции обновления, а используются вызовы операций, определенных в объектах для целей обновления.
  • · В OQL обеспечивается декларативный доступ к объектам. По этой причине OQL-запросы могут хорошо оптимизироваться.
  • · Можно легко определить формальную семантику OQL.

Характерный пример языка OQL.

Получить номера руководителей отделов и тех служащих их отделов, зарплата которых превышает 20 000 руб.

SELECT DISTINCT STRUCT (ОТД_РУК: D. ОТД_РУК, СЛУ: (SELECT E FROM D. CONSISTS_OF AS E WHERE E. СЛУ_ЗАРП > 20 000.00)) FROM ОТДЕЛЫ D.

Здесь предполагается, что для атомарного объектного типа ОТДЕЛ определен экстент типа множества с именем ОТДЕЛЫ. В запросе перебираются все существующие объекты типа ОТДЕЛ, и для каждого такого объекта происходит переход по связи к литеральному множеству объектов типа СЛУЖАЩИЙ, соответствующих служащим, которые работают в данном отделе. На основе этого множества формируется «усеченное» множество объектов типа СЛУЖАЩИЙ, в котором остаются только объекты-служащие с зарплатой, большей 20 000.00. Результатом запроса является литеральное значение-множество, элементами которого являются значения-структуры с двумя литеральными значениями, первое из которых есть атомарное литеральное значение типа INTEGER, а второе — литеральное значение-множество с элементами-объектами типа СЛУЖАЩИЙ. Более точно, результат запроса имеет тип set < struct { integer ОТД_РУК; bag СЛУ } >.

В совокупности результатом допустимых в OQL выражений запросов могут являться:

  • · коллекция объектов;
  • · индивидуальный объект;
  • · коллекция литеральных значений;
  • · индивидуальное литеральное значение.
Показать весь текст
Заполнить форму текущей работой