- •Курс за третий семестр. Введение в субд. Базы данных как аппарат моделирования.
- •Базы данных
- •Классификация бинарных отношений
- •Реляционные базы данных
- •Сжатие избыточной информации
- •Нормализация баз данных
- •Моделирование бд. Нарушение целостности
- •К эволюции сетевых бд (этапы)
- •Определение бд в рамках архитектуры «клиент-сервер»
- •Язык sql (Structured Query Language)
- •Структура sql
- •Ограничение ссылочной целостности
- •Команды dml
- •Предикаты в sql
- •Выборка из нескольких таблиц
- •Опции group by и having Группировка и групповые вычисления
- •Опции order by и union
- •Предикаты, использующие выборку Вложенные подзапросы
- •Создание представлений
- •Проблемы модификации представлений
- •Проблема исчезающих значений
- •Транзакции
- •Примеры транзакций
Создание представлений
Create view (пользовательское имя представления) as (команда select)
[with check option] – с опцией проверки
Также популярны опции local (локальный, ближний), remote (удалённый).
В первом случае соответствующая команда select ссылается только на данные клиента. Удалённое представление ссылается на данные сервера.
Представление – это именованная выборка. Таблица получает пользовательское имя.
Представления считаются частью определения БД и хранятся вместе с физическими, или базовыми, таблицами. В реальности, конечно, хранится не виртуальная таблица, но её определение, то есть текст команды select. Основное назначение представления – позволить программисту определять сложные иерархии понятий, базирующиеся на основной реляционной модели, ориентированные на различные группы пользователей.
create view Young_Customers as select (что-то)
create view Young_Kazan_Customers
as select * from Young_Customers
where city=’Казань’;
CustomerYoung _CustomersYoung_Kazan_Customers
Процесс создания представлений обратен процессу проектирования БД.
В какой степени к такой виртуальной таблице можно относиться как к таблице реальной, физической? Команды выборки могут ссылаться не только на базовые таблицы, но и на представления. В реальности это означает, что при выполнении соответствующей выборки исполняется вложенный подзапрос, соответствующий определению данного представления. В отличие от хранения промежуточных результатов в реальных таблицах (например, CurSOR), обращение к представлению даёт гарантированно актуальную информацию.
Проблемы модификации представлений
Можно ли модифицировать представления (изменять их значения)?
Очевидно, что это не всегда возможно даже теоретически. В реальности модификация представлений может означать лишь модификацию физических таблиц. Так, например, добавить запись в представление «Казанские покупатели» означает в действительности добавление записи в таблицу «Покупатели» со значением поля city=’Казань’. Изменение значений полей появившихся при этом записей снова означает модификацию исходной записи. Очевидно, подобное, обратное по отношению к выборке преобразование, существует не всегда.
X 2 3 5 Sqr 4 9 25
create view Average as
select city, avg(credit) as Avg
from Customer
group by city
update Average set Avg=Avg+100;
Даже если такое преобразование существует теоретически, оно должно быть реализуемо практически. ANSI предлагает считать модифицируемыми представления, которые базируются лишь на одной базовой таблице (слишком сильное допущение, не требуемое в реальных системах). Все базовые таблицы должны иметь первичные ключи; все они должны быть включены в выборку.
В представлениях недопустимы агрегатные функции group by, having, distinct. Проще говоря, каждая запись базовой таблицы должна прождать не более одной записи представлений. Список выборки не должен ссылаться на выражения, а лишь на имена полей.
Замечание. Модифицируемые представления должны ссылаться только на модифицируемые.
Реальные версии SQL могут накладывать и другие ограничения.