Три манифеста баз данных ретроспектива и перспективы



         

Входные данные и результаты запросов - часть 2


SELECT DISTINCT STRUCT ( mng: D.DEPT_MNG,

                       

DHS: ( SELECT E

 

FROM D.CONSISTS_OF AS E

WHERE E.EMP_SAL > 20000.00 ) )

FROM DEPARTMENTS D

Внешне этот запрос снова похож на SQL -запрос со вложенным подзапросом, но это только внешнее сходство. Во-первых, в разделе FROM “подзапроса” мы имеем дело с переходом по связи CONSISTS _ OF от экземпляра объектного типа DEPT ко множеству экземпляров объектного типа EMP . Во-вторых, результатом запроса является литеральное значение-множество, элементами которого являются значения-структуры с двумя литеральными значениями, первое из которых есть атомарное литеральное значение типа INTEGER , а второе – литеральное значение-множество с элементами-объектами типа EMP. Более точно, результат запроса имеет тип set < struct { integer mng ; bag < EMP > DHS } >. Конечно, в “классическом” SQL такого быть не может, хотя в следующем разделе мы обсудим возможности объектно-реляционных расширений этого языка.

В OQL предполагается, что хранимые в базе данных объекты могут иметь индивидуальные имена. 35

Пример 2.4. Если, например, в базе данных сохраняется объект типа DEPT с именем main _ department, то результатом запроса

main _ department

будет являться соответствующий объект. Результатом запроса

main_department.CONSISTS_OF

будет литеральное значение-множество, состоящее из объектов типа EMP , ассоциированных через связь CONSISTS _ OF с объектом main _ department

36.

Наконец, в контексте OQL имя каждого экстента можно трактовать как имя объекта-множества. Поэтому результатом запроса

EMPLOYEES

будет литеральное множество, состоящее из всех объектов, которые содержаться в указанном экстенте.




Содержание  Назад  Вперед