
- •1 Системы управления базами данных: общая характеристика
- •2 Основные функции субд
- •2.1 Непосредственное управление данными во внешней памяти
- •2.2 Управление буферами оперативной памяти
- •2.3 Управление транзакциями
- •2.4 Журнализация
- •2.5 Поддержка языков бд
- •3 Типовая организация современной субд
- •4.1 Состав языка sql
- •4.2 Работа с базой данных в командах sql
- •Пример базы данных
- •Список сотрудников (таблица Staff)
- •Упражнения с использованием операторов обработки данных sql
- •5 Поддержание сущностной и ссылочной целостности данных
- •Поддержание целостности данных в субд на примере субд Ingres
- •Ограничения
- •Правила
- •Поддержание ссылочной целостности данных в субд на примере субд vfp
- •Возможности реиндексации в бд
- •Особенности объединения бд
- •4 Case-средства для разработки бд. Инструментарий проектирования баз данных
- •Обзор современных субд: Microsoft Access 2000-2003, Microsoft Visual FoxPro 9.0, Microsoft sql Server 2005, Oracle 9, MySql, FireBird sql Server как многоуровневая система клиент/сервер
- •Способы соединения базы данных с интерфейсом (клиентской частью)
- •Прямое соединение
- •Условно прямое соединение
- •Драйвер odbc
- •Импорт, экспорт данных в субд: особенности и потери при выполнении операций
- •Транзакции
- •Проблемы одновременного доступа к данным
- •Программирование транзакций
- •Включение транзакций в программный код
- •Управление транзакциями
- •Управление ролями и разрешениями в ms sql Server
- •Справочная информация Перечень ролей:
- •Программная настройка прав в командах Transact sql
- •Список разрешений для роли securityadmin
- •Библиографический список
5 Поддержание сущностной и ссылочной целостности данных
Информационная безопасность систем управления базами данных
Надежда Вьюкова, Владимир Галатенко АО "Инфосистемы Джет"
http://www.citforum.ru/database/kbd96/49.shtml
http://www.citforum.ru/database/kbd96/50.shtml
Поддержание целостности данных в субд на примере субд Ingres
Для коммерческих организаций обеспечение целостности данных по крайней мере не менее важно, чем обеспечение конфиденциальности. Конечно, неприятно, когда кто-то подглядывает за суммами на счетах клиентов, но гораздо хуже, когда в процессе перевода денег со счета на счет часть суммы исчезает в неизвестном направлении.
Известно, что главными врагами баз данных являются не внешние злоумышленники, а ошибки оборудования, администраторов, прикладных программ и пользователей. Защита от подобных ошибок - главная тема этого раздела.
С точки зрения пользователя СУБД, основными средствами поддержания целостности данных являются ограничения и правила.
Ограничения
Ограничения могут относиться к таблицам или отдельным столбцам. Ограничения на столбцы задаются при создании таблицы, в операторах CREATE TABLE
Табличные ограничения относятся к группе столбцов и могут задаваться как при создании таблицы, так и позже, посредством оператора ALTER TABLE.
Следующий пример содержит именованное ограничение, связывающее значения в двух столбцах:
CREATE TABLE dept (dname char(10), budget money, expenses money, CONSTRAINT check_amount CHECK (budget > 0 and expenses <= budget) ); {Бюджет должен быть положительным, а расходы не должны выходить за рамки бюджета}
Ссылочные ограничения отвечают за целостность связей между таблицами. Подобное ограничение требует, чтобы каждому значению в столбце или группе столбцов одной таблицы соответствовало ровно одно значение в другой таблице. Название ограничения объясняется тем, что такие значения играют роль ссылок между таблицами в реляционной модели.
Приведем пример ссылочного ограничения:
CREATE TABLE emp (ename char(10), edept char(10) references dept(dname) );
{Ни один работник не должен числиться в неизвестном отделе}
Ограничения всех видов накладываются владельцем таблицы и влияют на исход последующих операций с данными. Перед завершением выполнения SQL-оператора производится проверка имеющихся ограничений. При обнаружении нарушений СУБД сигнализирует о ненормальном завершении и аннулирует внесенные оператором изменения.
Отметим, что для наложения ссылочного ограничения необходимо обладать привилегией REFERENCES по отношению к таблице, на которую делается ссылка (dept в примере выше).
Ограничения можно не только накладывать, но и отменять. При этом между ограничениями могут существовать зависимости, и отмена одного из них может потребовать ликвидации других (ссылочных) ограничений, зависящих от первоначального. Рассмотрим следующий пример:
CREATE TABLE dept (name char(10) NOT NULL, location char(20), CONSTRAINT dept_unique UNIQUE(name) ); CREATE TABLE emp (name char(10), salary decimal(10,2), edept char(10) CONSTRAINT empref REFERENCES dept(name) );
Если требуется удалить ограничение dept_unique, можно воспользоваться следующим оператором:
ALTER TABLE dept DROP CONSTRAINT dept_unique cascade;
Слово cascade означает, что следует удалить также все ограничения, прямо или косвенно зависящие от dept_unique. В данном случае будет изъято ограничение empref. Если вместо cascade указать restrict, то есть сделать попытку удалить только ограничение dept_unique, СУБД зафиксирует ошибку. Тем самым обеспечивается целостность системы ограничений.
В СУБД INGRES делается попытка примирить контроль ограничений и эффективность функционирования. При массовом копировании данных контроль ограничений отключается. Это значит, что необходимо дополнять копирование запуском процедуры глобальной проверки целостности.