Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория СУБД Часть 1 Копачев Алексей Геннадьевич, БГУИР (Мет пособие).pdf
Скачиваний:
56
Добавлен:
15.06.2014
Размер:
582.55 Кб
Скачать

26

2.описатели свободной и занятой памяти в страницах отношений. Эта информация необходима для поиска свободного места при занесении кортежа

3.связывание страниц одного компонента. Если в одном файле содержится несколько страниц отношений, то эти страницы надо както увязать. Использование ссылок и указателей проблематично, поэтому вводят управляющие структуры - связывание страниц. Использует косвенное индексирование страниц одного отношения на основе В-деревьев.

Язык SQL. Функции и основные возможности

1.Возможность в запросе группировать кортежи отношений результата по указанным полям в соответствии с условиями выборки на всю группу целиком.

2.В SQL не обязательно удалять кортежи-дубликаты как в результате, так и в промежуточном кортеже. Результатом выполнения запроса SQL является мультимножественный кортеж. В СУБД System R были реализованы все теоретикомножественные операторы.

ВSystem R реализованы 4 оператора манипулирования данными и 2 оператора создания представления.

Также дополнительные операторы позволяют вносить изменения в структуру таблицы.

Определение ограничения целостности и тригеров

В System R средства поддержки целостности БД – это asserHon (исключения) – логическое выражение, вып-е над всей БД, ложность которого говорила о нецелостности БД. Ограничения целостности делились на 2 класса:

1.проверяемый после выполнения оператора манипулирования(транзакции)

2.по требованию специального оператора INFORCE INTEGRITY

Типы предикатов отличались для этих групп. В System R был впервые реализован механизм триггеров, которые служили для автоматического поддержания целостности БД. При определении триггера задавалось условие его применения, и при условии true триггер срабатывал.

Представление БД

27

Для определения представлений используется аппарат операторов выборки.

Определение управляющих структур

Определение управляющих структур представляет индексы и связи. В SQL появилось четкое представление того, как представлять индексы и связи.

(UNIQUE;CLUSTERING)

Авторизация доступа к отношениям и их полям

К любому отношению и к любому столбцу м.б. обеспечить авторизируемый доступ. С каждой транзакцией неявно связывался оператор пользователя.

Основные операторы:

GRANT – «Разрешить

REVOKE – «собрать» права

Точки сохранения и отката транзакций. Встроенный SQL

Встроенный SQL – это специальные операторы, поддерживающие возможность выполнения SQL операторов в традиционных языках программирования.

ESQL/C – язык С с возможностью написания запросов.

Основная проблема со встраиванием – проблема сопряженности декларированных и процедурных языков программирования.

Проблема доступа к кортежу в процедурных языках была решена путем использования механизма «курсора», который представляет собой указатель на кортеж.

Основные операторы над курсорами: OPEN CURSOR

FETCH CURSOR

CLOSE CURSOR

Динамический SQL

Механизм, позволяющий выполнять операторы SQL на этапе компиляции.

1.Ограничение уникальности(не более одного первичного ключа)

2.Ограничение по ссылкам (удовлетворяется, если для каждой корректной ссылки есть объект, на который она ссылается)

3.Проверочное ограничение (специфицирует условие, которому должна удовлетворять каждая строка таблицы)

28

Определение представлений.

VIEW

Механизм представлений view является мощным средством SQL, позволяющим скрыть от пользователя реальную структуру БД, за счёт по сути хранимого в базе запроса с именованными столбцами.

Для пользования view (или представления )ничем не отличается от базовой таблицы. Представление реально накладывается на таблицу всякий раз в момент выполнения.

Стандарт SQL-89, механизм представлений определяется следующим образом:

<VIEW DEFINITION>::=

CREATE VIEW <table name> [(<view column list>)] AS <query definition> [WITH CHECK OPTION]

< view column list>::= <column name>[{<column name>}]

Представляется некая таблица, являющаяся изменяемой, т.е. к ней применяются операторы DELETE или UPDATE только в том случае, если выполняются следующие операции запросов:

1.не указано ключевое слово DISTINCT

2.каждое арифметическое выражение в списке выборки представляет собой одну спецификацию столбца

3.в разделе FROM указана одна таблица

4.в разделе WHERE нет подзапросов

5.нет разделов GROUP BY HAVING

Требование WITH CHECK OPTION имеет смысл случае изменяемого представления с разделом WHERE. Это требование запрещает появление в базовой таблице строк, которые не видны в представлении (т.е. те строки, которые не удовлетворяют условию WHERE в запросах).

Определение привилегий.

В стандарт SQL-89 раздача привилегий возможна только при определении таблицы. Пользователь, получивший привилегии от другого пользователя может их передать дальше только при определении схемы.

Привилегии определяются следующим образом:

< privilege definition >::=

GRAND <privileges> ON <table name> TO <grante>

[ g ,grante 3… ] [VITH GRANT OPTION] <privileges>::= ALL PRIVILEGES | <action>[{,<action>}..]

29

<action>::= SELECT | UPTDATE | INSERT | DELETE | REFERENCES [<grant column list>]

<grante >::= PUBLICK | <identifier>

REFERENCES – это делегирование прав по ссылкам. Например, делегирование прав по ссылкам на таблицу Т1 означает, что при определении другой таблицы, например Т, можно было бы определить ограничение по ссылкам между Т и уже существующей Т1.

Средства манипулирования данными.

Структура запросов.

<cursor specification> ::= <query expression> [<order by clause>]

<query expression>::=<query term> | <query expression> UNION [AU] <query term>

<query term>::= <query specification > | (<query expression>)

<query specification >::=(SELECT [AU | DISTRICT] <select list> <table expression>)

<SELECT statement>::= SELECT [AU | DISTRICT] <select list> INTO <select list> <table expression>

<subquery>::= SELECT [AU | DISTRICT] <result specification> <table expression>

<table expression>::=<from clause> [<where clause>] [<group by clause>] [<order by clause>] [<having>]

Язык SQL подразумевает 3 типа конструкций SELECT:

1.cursor specification

2.select statement

3.subquery

table expression – основа всех синтаксических конструкций.

1.Спецификация курсора – курсор конструктора SQL, позволяет получить построчный доступ к результатам выполнения запроса в БД. К табличным выражениям, участвующим в спецификации курсора, особых требований не предъявляется.