- •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
- •Библиографический список
Правила
Правила позволяют вызывать выполнение заданных действий при определенных изменениях базы данных. Обычно действие - это вызов процедуры. Правила ассоциируются с таблицами и срабатывают при изменении этих таблиц.
В отличие от ограничений, которые являются лишь средством контроля относительно простых условий, правила позволяют проверять и поддерживать сколь угодно сложные соотношения между элементами данных в базе.
Как и в случае ограничений, проверка правил отключается при массовых операциях копирования. Администратор базы данных может также явным образом отменить проверку правил, воспользовавшись оператором
SET NORULES;
Оператор
SET RULES;
позволит затем восстановить работу механизма правил. По умолчанию этот механизм включен.
Для удаления правил служит оператор
DROP RULE правило;
СУБД обеспечивает автоматическое удаление правил в тех случаях, когда удаляется соответствующая таблица. Тем самым поддерживается целостность системы таблиц и правил.
В контексте информационной безопасности важно отметить, что создать правило, ассоциируемое с таблицей, может владелец этой таблицы, имеющий право на выполнение соответствующей процедуры. Пользователь, действия которого вызывают срабатывание правила, должен обладать лишь необходимыми правами доступа к таблице. Тем самым правила неявно расширяют привилегии пользователей. Подобные расширения нуждаются в строгом административном контроле, поскольку даже незначительное изменение правила или ассоциированной процедуры может кардинально повлиять на защищенность данных. Ошибка же в сложной системе правил вообще чревата непредсказуемыми последствиями.
Поддержание ссылочной целостности данных в субд на примере субд vfp
Установленные связи между таблицами могут быть использованы для задания условий целостности данных. Целостность данных является одним из самых важных требований, предъявляемых к базам данных.
Для определения условия целостности данных в окне конструктора баз данных выберите команду контекстного меню Edit Referential Integrity или соответствующую ей кнопку панели инструментов «Database Designer» (рис. 16).
Рис. Содержание всплывающего меню в Database Designer.
В результате откроется окно конструктора условий целостности данных «Referential Integrity Builder» (след. рис.), которое содержит перечень всех установленных отношений между таблицами. Таблица описания условий содержит наименования родительской и дочерней таблиц, наименования индексов, используемых для связи, а также типы действий, выполняемых при модификации данных, добавлении и удалении записей.
Рис. Окно «Referential Integrity Builder»
для определения условия ссылочной целостности.
В верхней части окна диалога отображается краткая справка о возможном выборе действий и три переключателя, предназначенных для установки типа выполняемого действия.
При изменении значения первичного ключа или ключа-кандидата в родительской таблице возможны варианты действий, представленные в таблице 1:
Таблица 1
Наименование |
Описание |
Cascade
|
При изменении значений полей первичного ключа или ключа-кандидата в родительской таблице, автоматически осуществляется каскадное изменение всех соответствующих значений в дочерней таблице. Например, если это правило применить к отношению между таблицами Staff и Paies, при изменении кода сотрудника в таблице Staff автоматически будут изменены коды и в таблице Paies. |
Restrict
|
Не позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяемую запись. Данное правило также можно применить к отношению между таблицами Staff и Paies, если в создаваемом приложении коды сотрудника определяются на этапе ввода нового сотрудника и в дальнейшем не редактируются. |
Ignore
|
Позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, независимо от существования связанных записей в дочерней таблице. Целостность данных при этом не поддерживается. |
При удалении записи в родительской таблице возможны следующие варианты действий (табл. 2):
Таблица 2
Наименование
|
Описание
|
Cascade |
При удалении записи в родительской таблице автоматически осуществляется каскадное удаление всех записей из дочерней таблицы, связанных с удаляемой записью. Данное правило целесообразно применять к отношению между таблицами Staff и Paies. |
Restrict |
Не позволяет удалять записи в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на удаляемую запись. При попытке удаления записи возникает ошибка, которую вы можете обработать программно. Если данное правило применить к отношению между таблицами Staff и Paies, вы можете быть уверены в том, что удаление записей в таблице Staff не приведет к нарушению целостности данных. |
Ignore |
Позволяет удалять записи в родительской таблице независимо от существования связанных записей в дочерней таблице. Очевидно, что целостность данных при этом не поддерживается. |
При добавлении новой записи в дочернюю таблицу или редактировании в ней существующей записи возможны следующие варианты действий (табл. 3):
Таблица 3
Наименование |
Описание |
Restrict |
He позволяет вводить запись, если значение индексного выражения дочерней таблицы не соответствует ни одной из записей родительской таблицы. Данное правило вы можете применять к отношению между таблицами Staff и Paies. |
Ignore |
При вводе данных в дочернюю таблицу не анализируется содержимое индексного выражения. Целостность данных при этом не поддерживается. |
После завершения определения условий целостности данных нажмите кнопку ОК. В результате вся введенная вами информация будет сохранена в словаре базы данных. Теперь независимо от приложений при изменении, добавлении и удалении записей будут выполняться указанные действия, обеспечивающие целостность данных.
