Проверяемый текст
Пушников А.Ю. Введение в системы управления базами данных. Учебное пособие/Изд-е Башкирского ун-та. - Уфа, 1999.
[стр. 11]

нового сотрудника в таблицу не может быть выполнена одной операцией.
При вставке нового сотрудника необходимо одновременно увеличить значение поля Dept_Kol:
шаг 1.
Вставить сотрудника в таблицу PERSON: INSERT INTO PERSON (6, Муфтахов, 1).

шаг 2.
Увеличить значение поля Dept_Kol: UPDATE DEPART SET
Dept=Dept+l WHERE Dept_Id=l.
Если после выполнения первой операции и до выполнения второй произойдет сбой системы,' то реально будет выполнена только первая операция и база данных остается в нецелостном состоянии.

1.1.2.
Понятие транзакции Транзакция это последовательность операторов манипулирования данными, выполняющаяся как единое целое (все или ничего) и переводящая базу данных из одного целостного состояния в другое целостное состояние.
Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД
[20, 39]: • (А) Атомарность.
Транзакция выполняется как атомарная операция либо выполняется вся транзакция целиком, либо она целиком не выполняется.

(С) Согласованность.
Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние.
Внутри транзакции согласованность базы данных может нарушаться.

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

(Д) Долговечность.
Если транзакция выполнена, то результаты ее работы должны сохраниться в базе данных, даже если в следующий момент произойдет сбой системы.

11
[стр. 130]

сотрудника, Pers_Name имя сотрудника, Dept_Id идентификатор подразделения, в котором работает сотрудник: Dept_Id Dept_Name Dept_Kol 1 Кафедра алгебры 3 2 Кафедра программирования 2 Таблица 1 DEPART Pers_Id Pers_Name Dept_Id 1 Иванов 1 2 Петров 2 3 Сидоров 1 4 Пушников 2 5 Шарипов 1 Таблица 2 PERSON Ограничение целостности этой базы данных состоит в том, что поле Dept_Kol не может заполняться произвольными значениями это поле должно содержать количество сотрудников, реально числящихся в подразделении.
С учетом этого ограничения можно заключить, что вставка нового сотрудника в таблицу не может быть выполнена одной операцией.
При вставке нового сотрудника необходимо одновременно увеличить значение поля Dept_Kol:
Шаг 1.
Вставить сотрудника в таблицу PERSON: INSERT INTO PERSON (6, Муфтахов, 1)
Шаг 2.
Увеличить значение поля Dept_Kol: UPDATE DEPART SET
Dept=Dept+1 WHERE Dept_Id=1 Если после выполнения первой операции и до выполнения второй произойдет сбой системы, то реально будет выполнена только первая операция и база данных остается в нецелостном состоянии.
Понятие транзакции Определение 1.
Транзакция это последовательность операторов манипулирования данными, выполняющаяся как единое целое (все или ничего) и переводящая базу данных из одного целостного состояния в другое целостное состояние.
Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:
(А) Атомарность.
Транзакция выполняется как атомарная операция либо выполняется вся транзакция целиком, либо она целиком не выполняется.

(С) Согласованность.
Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние.
Внутри транзакции согласованность базы данных может нарушаться.

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


[стр.,131]

(Д) Долговечность.
Если транзакция выполнена, то результаты ее работы должны сохраниться в базе данных, даже если в следующий момент произойдет сбой системы.

Транзакция обычно начинается автоматически с момента присоединения пользователя к СУБД и продолжается до тех пор, пока не произойдет одно из следующих событий:  Подана команда COMMIT WORK (зафиксировать транзакцию).
 Подана команда ROLLBACK WORK (откатить транзакцию).
 Произошло отсоединение пользователя от СУБД.
 Произошел сбой системы.
Команда COMMIT WORK завершает текущую транзакцию и автоматически начинает новую транзакцию.
При этом гарантируется, что результаты работы завершенной транзакции фиксируются, т.е.
сохраняются в базе данных.
Замечание.
Некоторые системы (например, Visual FoxPro), требуют подать явную команду BEGIN TRANSACTION для того, чтобы начать новую транзакцию.
Команда ROLLBACK WORK приводит к тому, что все изменения, сделанные текущей транзакцией откатываются, т.е.
отменяются так, как будто их вообще не было.
При этом автоматически начинается новая транзакция.
При отсоединении пользователя от СУБД происходит автоматическая фиксация транзакций.
При сбое системы происходят более сложные процессы.
Кратко суть их сводится к тому, что при последующем запуске системы происходит анализ выполнявшихся до момента сбоя транзакций.
Те транзакции, для которых была подана команда COMMIT WORK, но результаты работы которых не были занесены в базу данных выполняются снова (накатываются).
Те транзакции, для которых не была подана команда COMMIT WORK, откатываются.
Более подробно восстановление после сбоев рассматривается далее.
Свойства АСИД транзакций не всегда выполняются в полном объеме.
Особенно это относится к свойству И (изоляция).
В идеале, транзакции разных пользователей не должны мешать друг другу, т.е.
они должны выполняться так, чтобы у пользователя создавалась иллюзия, что он в системе один.
Простейший способ обеспечить абсолютную изолированность состоит в том, чтобы выстроить транзакции в очередь и выполнять их строго одну за другой.
Очевидно, при этом теряется эффективность работы системы.
Поэтому реально одновременно выполняется несколько транзакций (смесь транзакций).
Различается несколько уровней изоляции транзакций.
На низшем уровне изоляции транзакции могут реально мешать друг другу, на высшем они полностью изолированы.
За большую изоляцию транзакций приходится платить большими накладными расходами системы и замедлением работы.
Пользователи или администратор системы могут по своему усмотрению задавать различные уровни всех или отдельных транзакций.
Более подробно изоляция транзакций рассматривается в следующей главе.
Свойство Д (долговечность) также не является абсолютными свойством, т.к.
некоторые системы допускают вложенные транзакции.
Если транзакция Б запущена внутри транзакции А, и для транзакции Б подана команда COMMIT WORK, то фиксация данных транзакции Б является условной, т.к.
внешняя транзакция А может откатиться.
Результаты работы внутренней транзакции Б будут окончательно зафиксированы только если будет зафиксирована внешняя транзакция А.
Ограничения целостности

[стр.,149]

Этот оператор позволяет создавать утверждения т.е.
ограничения, не являющиеся частью определения домена, колонки или таблицы.
Предикат CHECK, входящий в определение утверждения, может быть достаточно сложным и содержать ссылки на несколько таблиц.
Пример 20.
CREATE ASSERTION Check_Pay CHECK (Salespeaple.Salary IS NOT NULL) OR (Salespeaple.Commission IS NOT NULL) DEFERRABLE INITIALLY IMMEDIATE DROP ASSERTION Имя утверждения Этот оператор позволяет удалять имеющееся утверждение.
COMMIT WORK Этот оператор фиксирует транзакцию.
При этом проверяются все отложенные до конца транзакции ограничения.
Если одно из ограничений не выполняется, то транзакция откатывается.
SET CONSTRAINT {Имя ограничения.,..
ALL} {DEFERRED IMMEDIATE} Этот оператор позволяет во время выполнения транзакции менять момент проверки всех (ALL) или некоторых ограничений.
Этот оператор действует только на ограничения, определенные как DEFERRABLE (потенциально откладываемые).
Если ограничение A находилось в состоянии IMMEDIATE (немедленно проверяемое), то оператор SET CONSTRAINT A DEFERRED переводит его в состояние DEFERRED (с отложенной проверкой) и тогда все операции, потенциально могущие нарушить это ограничение, будут выполняться без проверки.
Проверка будет произведена в конце транзакции или в момент подачи команды SET CONSTRAINT A IMMEDIATE.
Выводы Транзакция это неделимая, с точки зрения воздействия на СУБД, последовательность операций манипулирования данными, выполняющаяся по принципу "все или ничего", и переводящая базу данных из одного целостного состояния в другое целостное состояние.
Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:
 (А) Атомарность.
 (С) Согласованность.
 (И) Изоляция.
 (Д) Долговечность.
База данных находится в согласованном состоянии, если для этого состояния выполнены все ограничения целостности.
Ограничение целостности это некоторое утверждение, которое может быть истинным или ложным в зависимости от состояния базы данных.
Ограничения целостности классифицируются несколькими способами:

[Back]