Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Рассмотрим второй вариант, изображенный на рис. 1.10. Данные в поле «Номер» были изменены на другие. Таким образом, в полях, имеющих прежнее значение «1», данные стали иметь значение «6». В этой ситуации тоже теряются нужные данные.

В обоих примерах имело место нарушение целостности БД, то есть информация, хранящаяся в БД, стала недостоверной из-за искажения связей.
Нарушение ссылочной целостности может возникнуть в нескольких случаях:
- удаление записи из главной таблицы, без удаления связанных записей в дочерней таблице;
- изменение значения поля связи главной таблицы, без изменения ключа дочерней;
- изменение ключа дочерней таблицы без изменения поля связи главной. Для предотвращения потери ссылочной целостности, используется механизм каскадных изменений. Суть его довольно проста:
- При изменении значения поля связи в главной таблице должен быть синхронно изменен ключ, то есть его значение.
- При удалении записи в родительской таблице обязательно следует удалить все связанные записи.
Ограничения на изменение полей связи и их каскадное удаление могут быть наложены на таблицы при их создании. Эти ограничения обычно хранятся Понятие транзакции 23 в системных таблицах наряду с индексами, триггерами и хранимыми процедурами. В некоторых случаях забота о сохранении ссылочной целостности ложиться на плечи разработчика.
Понятие транзакции
Транзакция — это последовательность действий с базой данных, в которой либо все действия выполняются успешно, либо не выполняется ни одно из них. Для того чтобы наглядно продемонстрировать суть транзакции, стоит рассмотреть простой пример. На склад пришла новая партия какого-либо товара. Необходимо принять его и занести информацию о нем в базу данных. Возникает некая цепочка действий:
- Увеличить количество единиц товара на складе.
- Ввести дату поступления новой партии.
- Ввести номер площадки, где будет храниться новая партия товара. Предположим, что на последнем шаге произошла какая-то ошибка. Товар был зарегистрирован, его количество было увеличено, но место его расположения на складе потеряно. Такая ситуация недопустима. Транзакция должна выполняться полностью. Только тогда изменения сохранятся в базе данных. В противном случае, если один из операторов транзакции по какой-либо причине не был выполнен, измененные данные в базе данных не сохраняются, а транзакция отменяется.
Физически транзакция представляет собой последовательность команд, производящих с базой данных те или иные действия. Главная особенность транзакций заключается в том, что все действия должны выполниться, иначе будет отменена вся транзакция.
Транзакция может быть неявной и явной. Неявная транзакция стартует автоматически, а по завершении также автоматически подтверждается или отменяется. Явной транзакцией управляет программист, используя для этого средства языка SQL.



   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru