6.3 Системные функции. Обеспечение сохранности и секретности
Помимо задачи обеспечения независимости данных на СУБД возлагаются и другие функции. Это, прежде всего, задачи обеспечения сохранности и секретности данных.
Эти функции тесно связаны между собой, но существует и разница. Под обеспечением сохранности понимается защита данных от:
непреднамеренного доступа к данным и возможного их искажения со стороны пользователей;
при сбоях аппаратуры или программных средств.
Это внутренние задачи, т.к. они связаны с обеспечением нормального функционирования БД. Чтобы избежать первой ситуации, вводятся пароли: только для чтения. Во втором случае предполагается специальный режим хранения машинных носителей с данными, экранировку и т.д. Необходимый уровень дублирования данных для последующего восстановления на рабочих носителях в случае сбоя.
Под функцией секретности понимается защита данных от преднамеренного доступа пользователей. В этом случае данные в БД разделяются на общедоступные и секретные. Секретные данные (секретную информацию) можно получить только после специальной алгоритмической обработки. Основной мерой защиты является в этих случаях ввод паролей и идентификация пользователей.
Обеспечение целостности базы накладывает ограничения (называемые правилами целостности) на отношения. Функцией системы обеспечения целостности является недопущение противоречий в данных относительно этих условий. Противоречия могут возникнуть в результате ошибок пользователей при вводе данных, путем модификации базы данных, а также при незавершенных операциях модификации по причине сбоев в системе. При этом требуется восстановление данных. При длительной и сложной модификации базы данных накладываемые условия в ходе модификации могут не выполняться.
Проблема целостности заключается в правильности данных в базе данных в любой момент времени и касается защиты данных от непреднамеренных ошибок и их предотвращения.
Поддержка целостности в реляционной модели данных в ее классическом понимании включает в себя три аспекта:
- поддержка структурной целостности;
- поддержка языковой целостности;
- поддержка ссылочной целостности
Реляционная СУБД работает только со структурой данных типа реляционное отношение. Необходимо поддерживать правила соответствующие реляционной таблице:
1. В таблице нет одинаковых кортежей
2. Столбцы соответствуют атрибутам отношения
3. Всегда есть первичный ключ
4. Каждый атрибут имеет уникальное имя
5. Порядок строк в таблице произвольный
6. Два отношения, отличающиеся только порядком следования столбцов считаются одинаковыми.
Проблемы структурной целостности необходимо рассмотреть в случае NULL значений, т.е. таких значений которые на данный момент не определены, но могут быть определены в любое время.
При появлении NULL значений не действуют стандартные правила сравнения: одно неопределенное значение не равно другому неопределенному значению. Для выявления равенства значений в этом случае используют предикаты типа:
<имя атрибута> is NULL
<имя атрибута> is not NULL
Если в данном кортеже указанный атрибут примет неопределенной значение, то предикат is NULL принимает значение true, а предикат is not NULL значение – false. Таблица истинностей логических операций изменилась, поскольку из двузначной превратилась в трехзначную.
Таблица ??
a | b | ¬ a | a & b | a | b |
1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 |
1 | - | 0 | - | 1 |
0 | 1 | 1 | 0 | 1 |
0 | 0 | 1 | 0 | 0 |
0 | - | 1 | 0 | - |
- | 1 | - | - | 1 |
- | 0 | - | 0 | - |
- | - | - | - | - |
В таблице 1 кодирует значение TRUE, 0 – FALSE, - - неопределенное значение.
Поддержка языковой целостности состоит в том, что реляционная СУБД должна обеспечивать языки описания и манипулирования данными не ниже стандарта SQL. То есть не должны быть доступны низкоуровневые средства манипулирования данными, не соответствующие стандарту. Поэтому доступ возможен с использованием SQL.
Ссылочная целостность. Означает обеспечение одного из заданных принципов взаимосвязи между экземплярами кортежей взаимосвязанных отношений.
- Кортежи подчиненного отношения уничтожаются при удалении кортежа основного отношения, связанного с ним.
- Кортежи основного отношения модифицируются при удалении кортежа основного отношения связанного с ним, при этом на месте родительского отношения ставится неопределенное NULL значение.
Структурная, языковая и ссылочная целостность определяет правила работы СУБД с реляционными структурами данных. Требования поддержки трех видов говорят о том, что каждая СУБД должна уметь это делать, а разработчики приложений должны их учитывать.
Но для некоторых ограничений, которые связаны с содержанием базы данных, требуются другие методы. Например, при рассмотрении БД «Отдел кадров» ряд бизнес правил не может быть поддержаны с помощью вышеперечисленных методов.
Например.
На работу преподавателем принимаются граждане, имеющие диплом установленного образца.
Каждый работник должен иметь прописку.
Эти методы сведены в поддержку семантической целостности. Семантическая поддержка обеспечивается двумя путями: декларативным и процедурным.
Декларативный путь связан с наличием в рамках СУБД механизмов обеспечивающих проверку и выполнение ряда декларативно заданных правил-ограничений (бизнес правил).
Существуют следующие виды декларативных ограничений целостности:
· Ограничение целостности атрибута;
o - значение по умолчанию;
o - задание обязательных и необязательных значений;
o - задание условий на значение атрибутов;
· Ограничения целостности, задаваемые на уровне домена; Используются, если в базе присутствуют несколько столбцов разных отношений, которые принимают значения из одного и того же множества допустимых значений. Некоторые СУБД поддерживают доменную структуру и разрешают отдельно определять домены, задавать тип данных для каждого домена и бизнес правила для них. Удобно, если БД большая, содержит сотни отношений. В этом случае поменять условия, задаваемые на домен проще, чем просматривать все атрибуты и менять условия на них.
· Ограничения целостности, задаваемые на уровне отношения.
Например, выразить требования на наличие хотя бы одного телефона – рабочего или домашнего в базе данных «Контакты».
· Ограничения целостности, задаваемые на уровне связи между отношениями: задание обязательности связи, принципов каскадного удаления и каскадного изменения данных. Эти виды ограничений могут быть выражены заданием обязательности или необязательности внешних ключей.
6.5 Функции пользователя. Актуализация данных
Важное место в СУБД занимают процедуры актуализации (обновления) данных. Актуализация, как правило, возлагается на прикладные программы пользователя. Однако при одновременной работе нескольких пользователей с базой данных может возникнуть конкуренция за выполнение операций над одними и теми же отношениями, поскольку каждый пользователь, обрабатывая базу, совершает транзакцию. То есть его действия не должны прерываться. Поэтому при проектировании БД необходимо предусмотреть механизмы захвата или метки времени.
Транзакция (transaction) представляет собой логическую единицу работы СУБД. Управление транзакциями обеспечивает интерпретацию некоторого блока операций как неделимого целого. Управление транзакциями гарантирует, что, либо будут выполнены все операции из блока, либо не будет выполнено ни одной. На основании этого тезиса можно выделить следующие свойства транзакций:
Атомарности. Транзакция должна быть выполнена целиком или не выполнена вовсе.
Согласованности. По мере выполнения транзакции данные переходят из одного согласованного состояния в другое, т.е. транзакция не разрушает взаимной согласованности данных.
Изолированности. Конкурирующие за доступ к БД транзакции выполняются изолированно друг от друга, но для пользователя это может выглядеть так, что они выполняются одновременно.
Долговечности. Если транзакция успешно завершена, то изменения данных, которые были произведены, не могут быть потеряны ни при каких обстоятельствах.
Транзакции необходимы для устранения конфликтов пользователей, пытающихся одновременно обращаться к одним и тем же данным, и восстановления данных после сбоя или отказа системы.