Семантика и множественные операции запросов выборки информации
Если запросы основываются на модели данных "сущность-связь", то становится совершенно очевидной семантика запросов выборки информации. Для ясности мы вначале обсудим ситуацию на уровне 1. Концептуально, элементы информации организованы так, как показано на рис. 4 и 5 (на рис. 2 и 3). Многие запросы выборки информации могут рассматриваться как комбинация следующих базисных типов операций:
Например, запрос выборки информации "Каков возраст служащих, чей вес больше 170 и которые работают над проектом со значением атрибута PROJECT-NO, равным 254?", может быть выражен следующим образом:
{AGE(e) | e ∈ EMPLOYEE, WEIGHT(e) > 170, [e,ej] ∈ PROJECT-WORKER, ej ∈ PROJECT, PROJECT-NO(ej) = 254};
или
{AGE(EMPLOYEE) | WEIGHT(EMPLOYEE) > 170, [EMPLOYEE,PROJECT] ∈ PROJECT-WORKER, PROJECT-NO(EMPLOYEE) = 254}.
Для выборки информации на уровне 2, организованной так, как показано на рис. 6, сущности и связи в ii и iii должны быть заменены первичными ключами (PK – Primary Key) сущностей и PK связей. Приведенный выше запрос выборки информации может быть выражен как:
{AGE(EMPLOYEE.PK) | WEIGHT(EMPLOYEE.PK) > 170, (WORKER/EMPLOYEE.PK, PROJECT/PROJECT.PK) ∈ {PROJECT-WORKER.PK}, PROJECT-NO(PROJECT.PK) = 254};
Для выборки информации, организованной в виде отношений сущностей/связей (рис. 7, 8 и 9) мы можем использовать язык, подобный Sequel [6]:
SELECT AGE FROM EMPLOYEE WHERE WEIGHT > 170 AND EMPLOYEE.PK = SELECT WORKER/EMPLOYEE.PK FROM PROJECT-WORKER WHERE PROJECT-NO = 254.
Можно выбирать информацию о сущностях из двух различных множеств сущностей без указания связи между ними. Например, запрос выборки информации "Перечислить имена служащих и названия кораблей (ship), которые имеют одинаковый возраст", в нотации уровня 1 может быть выражен следующим образом:
{(NAME(ei), NAME(ej))| ei ∈ EMPLOYEE, ej ∈ SHIP, AGE(ei)=AGE(ej)}.
Здесь мы больше не будем обсуждать синтаксис языка. Мы только хотим подчеркнуть, что запросы информации можно выразить, используя понятия множества и операции над множествами [17], и семантика запросов совершенно очевидна, если принять эту точку зрения.