Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИОСУ лекции (мои).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.74 Mб
Скачать

2. Методы и средства контроля целостности в основном реализованы в create table:

Имеющиеся в языке возможности позволяют задать в описаниях данных следующие свойства:

– NOT NULL – обязательность.

– UNIQUE – уникальность.

– DEFAULT – значение по умолчанию.

– CHECK – условие ограничения.

– PRIMARY KEY, FOREIGN KEY – поддержка связей.

– ON UPDATE, ON DELETE – триггеры по умолчанию.

Связь осуществляется за счет указания соответствия первичных и внешних ключей FK=PK, отсутствие связи – указанием FK=NULL, при нарушении ссылочной целостности FK=прочее. Возможные реакции триггера задают, что делать с внешним ключом, если произошло нарушение ссылки:

1) CASCADE – если при выполнении действия (удаления, изменения) – выполняем то же действие и с подчиненной.

2) SET NULL – если при выполнении указанной операции произошел разрыв связи, то мы значение внешнего ключа очищаем.

3) SET DEFAULT – если при выполнении указанной операции произошел разрыв связи, то мы значение внешнего ключа меняем на значение по умолчанию.

4) NO ACTION – ничего не делать, во многих системах заменено на RESTRICT.

3. Операторы модификации данных:

– INSERT – добавление данных,

– UPDATE – обновление данных,

– DELETE – удаления данных.

4. Выборка:

– SELECT. Оператор состоит из предложений SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, которые должны быть записаны в команде именно в той последовательности, в которой они перечисле­ны в синтаксической формуле.

5. Управление доступом:

– GRANT – назначение прав доступа.

Предположим, пользователь является владельцем таб­лицы «Sotrudnik» и хочет позволить пользователю Ivanov выполнять запросы к ней. В этом случае пользователь должен ввести команду

GRANT SELECT ON Sotrudnik TO Ivanov;

– REVOKE – удаление прав доступа.

Команда имеет синтаксис, схожий с синтаксисом оператора GRANT. Например, отмена привилегии на просмотр таблицы «Sotrudnik» для пользователя Ivanov будет выглядеть следующим образом:

REVOKE SELECT ON Sotrudnik TO Ivanov;

6. Управление транзакциями:

Транзакция представляет собой законченную совокупность дей­ствий над БД, которая переводит ее из одного целостного в логичес­ком смысле состояния в другое.

– SET TRANSACTION – задает параметры транзакции, объявляет её начало.

– COMMIT – нормальное завершение, завершение транзакции с фиксацией всех результатов.

– ROLLBACK – завершение транзакций с отменой всех выполненных изменений.

Конкретные СУБД используют различные механизмы управления транзакциями. Некоторые СУБД для задания транзакции используют операторы BEGIN TRANSACTION-END TRANSACTION, и все ко­манды, заключенные между ними, составляют транзакцию. В неко­торых системах считается, что, инициируя сеанс работы с SQL, пользо­ватель начинает транзакцию, которая будет продолжаться, пока не будет введен оператор COMMIT WORK, который сделает все изме­нения, проведенные в ходе транзакции, постоянными, или оператор ROLLBACK WORK, который отменяет все сделанные в транзакции изменения. После каждого оператора COMMIT или ROLLBACK на­чинается новая транзакция.

Во многих СУБД присутствует специальный параметр AUTO-COMMIT, который, находясь во включенном состоянии, приводит к автоматической фиксации изменений каждой нормально завершен­ной операции.

Транзакция может быть помечена как «только чтение» (READ ONLY). При выполнении такой транзакции попытка провести изме­нение данных будет вызывать сообщение об ошибке. Задание при­знака READ ONLY позволяет увеличить производительность как этой, так и параллельно исполняемых транзакций.

Транзакции должны соответствовать требованиям ACID (Atomicity, Consistency, Isolation, Durability – Атомарность, Согласованность, Изолированность, Долговечность):

Атомарность: транзакция представляет собой некото­рый набор законченных действий. Система обеспечивает их выполне­ние по принципу «все или ничего» - либо выполняются все действия, тогда транзакция «фиксируется»; либо, если возможность выполнить все действия отсутствует, например в случае сбоев, транзакция «отка­тывается» назад, а БД остается в исходном состоянии.

Согласованность: предполагается, что в результате выполнения транзакции система переходит из одного корректного состояния в другое.

Изолированность: при выполнении транзакции дан­ные могут временно находиться в несогласованном состоянии. Такие данные не должны быть видны другим транзакциям, пока изменения не будут завершены (т.е. пока все модификации не будут формально зафиксированы). Система обеспечивает каждой транзакции иллюзию того, что та выполняется изолированно, как если бы прочие транзак­ции либо завершились до ее начала, либо начнут выполняться после ее завершения.

Долговечность: если транзакция зафиксирована, то ее результаты должны быть долговечными. Новые состояния всех объек­тов сохранятся даже в случае аппаратных или системных сбоев.

Существуют многочисленные модели транзакций, обеспечиваю­щие соблюдение требований ACID. Некоторые из этих моделей:

- плоские транзакции;

- контрольные точки;

- многозвенные транзакции;

- вложенные транзакции.

Использование языка SQL:

В целом, язык SQL не является самодостаточным для создания приложений БД и их полномасштабного обслуживания. Поэтому разработчикам приложений предоставляется различные формы соединения языка SQL с другими (внешними) языками.

В персональных системах язык используется как часть основного языка.

В серверных системах он используется в следующих вариантах:

1) как вспомогательный язык приложения для обращения к СУБД.

2) как средство интерактивных запросов.

3) как средство написания программного кода для серверной части.

Для объединения SQL с базовым языком приложения используются следующие методы:

1. Локальный SQL.

Операторы SQL включаются во внешний язык наравне с прочими операторами и обрабатываются расширенным транслятором внешнего языка как его «родные» операторы. Таким образом, имеет место расширение исходного языка на группу операторов SQL с соответствующим расширением транслятора. Этот вариант характерен для персональных СУБД.

2. Встроенный SQL.

В текст программы на внешнем языке операторы SQL включаются с явным их выделением. Например, встраивание операторов SQL в текст С-программы выполняется в виде:

EXEC SQL

<SQL-оператор>

END SQL

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

3. Модульный SQL.

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

4. Динамический SQL – поддерживает ввод, трансляцию и исполнение SQL команд в ходе выполнения программы. Операторы SQL определяются не на момент создания пакета программы, а на момент ее исполнения. Таким образом, трансляция SQL-операторов откладывается на время выполнения программы, что позволяет реализовывать заранее непредвиденные запросы. Для подготовки исполнения используется команда PREPARE, для исполнения EXECUTE.