
- •Методическая разработка
- •Отношения и переменные-отношения
- •Оптимизация
- •Каталог
- •Базовые переменные отношения и представления
- •Транзакции
- •Введение в язык sql
- •Обзор языка sql
- •Каталог
- •Представления
- •Транзакции
- •Взаимодействие приложений и субд
- •Домены, отношения и базовые переменные-отношения
- •Значения отношений
- •Средства sql
Базовые переменные отношения и представления
На основе реляционных значений, присвоенных некоторому множеству переменных-отношений, реляционные выражения позволяют получить множество реляционных значений.
Исходные (заданные) переменные-отношения называются базовыми переменными-отношениями, а присвоенные им значения называются базовыми отношениями (или значениями базовых отношений).
Отношение, которое получено или может быть получено из базового отношения в результате выполнения каких-либо реляционных выражений, называется производным отношением.
Реляционные системы, очевидно, должны предоставлять средства для создания, в первую очередь, базовых переменных-отношений. В языке SQL, например, эта функция обеспечивается оператором CREATE TABLE (здесь слово TABLE используется в узком смысле, как базовая переменная-отношение). Эти переменные-отношения обязательно должны быть поименованы:
CREATE TABLE EMP … ;
Однако реляционные системы обычно поддерживают еще один вид именованных переменных-отношений, называемых представлениями. В любой конкретный момент времени их значение является производным отношением (т.е. представление – производная переменная-отношение). Значение данного представления в данное время является результатом вычисления определенного реляционного выражения в данный момент, а упомянутое реляционное выражение определяется в момент создания этого представления.
Пример 2.5. Определение представления можно осуществить следующим образом:
CREATE VIEW TOPEMP AS
(EMP WHERE SALARY >= 19K) { EMP#, ENAME, SALARY }
За ключевым словом AS расположено выражение фактически определяющее представление, которое не вычисляется, а запоминается системой. С точки зрения пользователя появилась новая переменная-отношение с именем TOPEMP, имеющая текущее значение, которое показано в незатененных участках. Пользователь должен иметь возможность оперировать этим представлением так же, как если бы оно бы было базовой переменной-отношением.
TOPEMP |
|
Рис. 2.4. Переменная-отношение TOPEMP (затененные участки) как представление базовой переменной-отношения EMP
Однако для представления не существует отдельной копии данных. Представление – это, в некотором смысле, окно, через которое можно видеть часть значения базовой переменной-отношения EMP. Следовательно, все изменения в базовой переменной-отношении будут автоматически и немедленно видны в подобном окне. Аналогично, изменения, внесенные через представление TOPEMP, будут видны и в базовой переменной-отношении EMP.
Пример 2.6. Ниже представлен пример запроса, использующего представление TOPEMP:
( TOPEMP WHERE SALARY < 21K) { EMP#, SALARY }
Результат приведен на рис. 2.5. С концептуальной точки зрения операции с представлениями фактически реализуются посредством замены ссылки на имя представления выражением, которое определяет представление (хранящееся в каталоге). Тогда выражение преобразуется следующим образом:
( (EMP WHERE SALARY > = 19K) { EMP#, ENAME, SALARY}
WHERE SALARY < 21K) { EMP#, SALARY }
После определенного количества перегруппировок это выражение может быть упрощено и может принять следующий вид:
( EMP WHERE SALARY > = 19K AND SALARY < 21K) { EMP#, SALARY }
EMP# |
ENAME |
SALARY |
С3 |
Никитин |
20K |
С4 |
Буденко |
19K |
Рис. 2.5. Результат выполнения запроса над представлением TOPEMP
Иными словами, первоначальная операция над представлением конвертируется в эквивалентную операцию над соответствующей базовой переменной-отношением (при этом она оптимизируется).
В принципе, определение представления может быть произвольной сложности (например, представлять соединение нескольких переменных-отношений).
Аналогом внешнего уровня в архитектуре ANSI/SPARC в реляционных системах является множество из нескольких переменных-отношений, каждая из которых является представлением в реляционном смысле. «Внешняя схема» состоит из определений таких представлений.