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



         

Путевые выражения - часть 3


Стандарт ODMG 3.0 не обеспечивает подробного обоснования для введения этих операций, однако, по нашему мнению, это как-то связано с желанием остаться в рамках двухзначной логики при возможности наличия неопределенных значений. Вот пример запроса, в предикате которого можно сравнительно осмысленно использовать операцию ANDTHEN .

Пример 2.10. Получить имена служащих и номера их отделов для служащих, работающих в отделах с фондом заработной платы, размер которого превышает 1000000 руб.

SELECT STRUCT (name: E.EMP_NAME, dept: D.DEPT_NO)
     FROM EMPLOYEES E,

E.WORKS D

    

WHERE E.WORKS != nil andthen

   

D.DEPT_TOTAL_SAL > 1000000.00

38

Кратко затронем тему запросов с соединениями. Должно быть понятно, что введение механизма связей в языки ODL и OQL главным образом связано с желанием отказаться от явных естественных соединений. Тем не менее, может возникнуть потребность в явных соединениях коллекций, объекты или литералы которых связываются по значениям. Вот простой пример.

Пример 2.10. Выбрать всех служащих, у которых имеются однофамильцы.

SELECT DISTINCT E
     FROM EMPLOYEES E, EMPLOYEES E1
     WHERE E != E1 AND E.EMP_NAME = E1.EMP_NAME

В результате будет образовано литеральное множество, элементами которого являются объекты типа EMP , для которых в экстенте EMPLOYEES имеется хотя бы один иной (с другим объектным идентификатором) объект, с тем же значением свойства EMP _ NAME . Понятно, что этот запрос и по виду, и по семантике выполнения является в чистом виде SQL -запросом (если заменить конструкцию E != E1 наE.EMP_NO <> E1.EMP_NO ).




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