
- •Работа транзакций в смеси
- •Проблема параллельной работы транзакций
- •Блокировки
- •Разрешение тупиковых ситуаций.
- •Предикатные блокировки
- •Метод временных меток
- •Механизм выделения версий данных
- •Теория Есварана
- •Протокол двухфазной блокировки
- •Реализация изолированности транзакций средствами языка SQL
- •Транзакции и восстановление данных
- •Виды восстановления данных
- •Индивидуальный откат транзакций
- •Восстановление после мягкого сбоя
- •Восстановление после жесткого сбоя
- •Представление знаний в интеллектуальных системах.
- •Данные и знания. Основные определения
- •Модели представления знаний
- •Способы описания.
- •Стратегии решения организации поиска
- •Логический подход. Представление простых фактов в логических системах
- •Типовая организация СУБД. Внутренняя организация реляционной СУБД
- •Внутренняя организация реляционной СУБД.
- •Хэширование
- •Журнальная информация
- •Служебная информация
- •Язык SQL. Функции и основные возможности
- •Определение ограничения целостности и тригеров
- •Представление БД
- •Определение управляющих структур
- •Авторизация доступа к отношениям и их полям
- •Точки сохранения и отката транзакций. Встроенный SQL
- •Динамический SQL
- •Определение представлений.
- •Определение привилегий.
- •Средства манипулирования данными.
- •Табличные выражения.
- •Использование SQL при прикладном программировании.
- •Встроенный SQL
- •Одиночные операторы манипулирования данных.
- •Некоторые черты SQL’92 и SQL–3 (SQL’99)
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, позволяет получить построчный доступ к результатам выполнения запроса в БД. К табличным выражениям, участвующим в спецификации курсора, особых требований не предъявляется.