Файл: Тема 26. Защита баз данных.pdf

Добавлен: 20.10.2018

Просмотров: 603

Скачиваний: 9

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Тема 26. Защита баз данных 

Под  защитой  баз  данных  понимается  сохранение  целостности  и 

обеспечение секретности данных. 

Сохранение  целостности  –  непрерывное  выполнение  всех  ограничений 

целостности,  включающих  как  функциональные  зависимости,  так  и 

семантические ограничения. 

Обеспечение  секретности  означает  ограничение  прав  доступа 

пользователей,  которым  разрешается  работать  лишь  с  частью  БД,  выполнять 

ограниченный круг операций и т.д. 

Целостность 

Целостность в реляционной модели имеет четыре аспекта: 

 

Структурная целостность, 

 

Языковая целостность, 

 

Ссылочная целостность, 

 

Семантическая целостность. 

Структурная  целостность  –  требование  к  СУБД  работать  только  с 

однородными  структурами  данных  типа  «реляционное»  отношение. 

Реляционное отношение должно удовлетворять всем накладываемым на него в 

реляционной  модели  требованиям:  отсутствие  дубликатов,  обязательность 

ключа,  неупорядоченность  кортежей  и  т.д.  Сюда  же  относятся  и  проблемы 

неопределенных (NULL) значений. 

Языковая  целостность  –  требование  к  языкам  описания  и 

манипулирования  данными,  чтобы  они  были  не  ниже  стандарта  SQL. 

Низкоуровневые  средства  манипулирования  данными  не  должны  быть 

доступны. 

Ссылочная  целостность  означает  непрерывное  выполнение  одного  из 

принципов взаимосвязи между кортежами связанных отношений: 

 

Кортежи  подчиненного  отношения  удаляются  при  удалении 

связанного с ними кортежа главного отношения; 


background image

 

Кортежи  подчиненного  отношения  модифицируются  при  удалении 

связанного  с  ними  кортежа  главного  отношения,  при  этом  внешний 

ключ получает значение NULL. 

Ссылочная целостность обеспечивает поддержку непротиворечивого состояния 

БД в процессе модификации данных. 

Семантическая  целостность  понимается  как  ограничения  на  содержание 

баз данных. 

Целостность  может  быть  обеспечена  двумя  путями:  декларативным  и 

процедурным. 

Декларативные ограничения (бизнес-правила) включают: 

 

Ограничения  на  значения  атрибута  (значение  по  умолчанию, 

неопределенное значение, произвольное условие); 

 

Ограничения доменов (тип данных, бизнес-правила и т.д.); 

 

Ограничения  отношений  (ограничения  значений  комбинации 

атрибутов и др.); 

 

Ограничения  связи  отношений  (обязательность  связи,  каскадное 

удаление и изменение данных, ограничения типа связи). 

Процедурное  поддержание  целостности  обеспечивается  использованием  

хранимых процедур и триггеров. 

Задание ограничений целостности в SQL 

Оператор CREATE TABLE 

CREATE  TABLE    имя_таблицы  (  {  описание_элемента_табл  | 

ограничение_табл},.. ) 

Описание_элемента_таблицы: 

Имя_столбца тип_данных [DEFAULT {literal | USER | NULL}]  

[NOT NULL [UNIQUE] | FOREIGN KEY REFERENCES имя_табл  

( имя_первичного_ключа_табл) | CHECK (условие_допустимости)]… 

Определение  столбца  содержит  имя  столбца,  его  тип  и  два 

необязательных  раздела:  значение  по  умолчанию  и  дополнительные 

ограничения. 


background image

Значения  по  умолчанию  (DEFAULT):  literal  –  константа,  USER  –  имя 

пользователя, NULL – неопределенное значение. 

Дополнительные ограничения: 

NOT NULL – запрет неопределенных значений; 

UNIQUE – требование уникальности ключа; 

FOREIGN KEY – значение столбца берется из главной связанной таблицы 

(внешний ключ, связь типа М:1); 

CHECK – условие допустимости значения. 

Пример

CREATE TABLE Заказы 

(Фамилия  CHAR  (20)  NOT  NULL  FOREIGN  KEY  REFERENCES 

Покупатели (Фамилия), 

Товар CHAR (20) NOT NULL CHECK (Товар<>’СПИЧКИ’), 

Количество NUMERIC NOT NULL, 

PRIMERY KEY (Фамилия, Товар)) 

Ограничения  можно  именовать,  используя  конструкцию  CONSTRAINT 

имя_ограничения,  где  имя  ограничения  записывается  в  форме  тип_имя-

отношения. Тип ограничения: PK – первичный ключ, FK внешний ключ, CK -

CHECK, U – UNIQUE, DF – DEFAULT. 

Пример

CONSTRAINT PK_Заказы PRIMARY KEY (Фамилия, Товар). 

 

Оператор ALTER TABLE 

ALTER TABLE имя_таблицы 

{ADD определение_столбца | 

ALTER имя _столбца {SET DEFAULT значение | DROP DEFAULT} | 

DROP имя_столбца {CASCADE | RESTRICT} | 

ADD{опред_перв_ключа  |  опр_внешн_ключа  |  условие_уникальности  |     

условие_проверки }| 

DROP CONSTRAINT имя_условия {CASCADE | RESTRICT}} 


background image

Одним  оператором  ALTER  TABLE  можно  провести  только  одно 

изменение:  добавить  новый  столбец,  изменить  умолчание,  удалить  столбец, 

добавить или удалить первичный ключ, внешний ключ, условие уникальности, 

условие проверки. 

Ограничения целостности в QBE 

Система  QBE  позволяет  задавать  ключевые  атрибуты  отношений.  При 

этом  поддерживается  функциональная  зависимость  всякого  неключевого  поля 

от множества совместно взятых ключевых полей. Такая проверка целостности 

производится  при  каждом  включении  или  модификации  кортежа  отношения. 

Операции, нарушающие зависимости, не выполняются. 

В  QBE  для  каждого  отношения  поддерживается  таблица  ограничений, 

которая записывается в виде специальных строк таблицы отношения. 

Пример

Покупатели 

Фамилия  Адрес  Баланс 

CONSTR(I.,U.)   

 

>= -50 

 

Конструкция  CONSTR  указывает,  что  строка  является  декларацией 

ограничений. Ограничению подвергаются операции INSERT и UPDATE: новые 

и модифицируемые записи должны иметь баланс >= -50. 

Пример

Заказы 

Фамилия  Товар  Количество 

CONSTR(I.)   

-товар   

 

Поставщики  Название  Адрес  Товар  Цена 

 

 

 

_товар   

 

Ограничение запрещает включать товары, для которых нет поставщиков. 

 

 

Пример


background image

Покупатели 

Фамилия  Адрес  Баланс 

COND 

Петров 

 

 

CONSTR(COND)   

 

>= -50 

 

Проверка ограничения производится только для Петрова. 

Обеспечение секретности 

Наиболее  важными  аспектами  секретности  являются  защита  от 

нежелательной 

модификации 

или 

разрушения 

БД 

и 

защита 

от 

несанкционированного  чтения.  Для  обеспечения  секретности  БД  и  других 

систем используются следующие общие механизмы: 

1.  Идентификация 

пользователя. 

Различным 

пользователям 

предоставляются разные права по отношению к базам данных или их 

частям. Поэтому необходимо уметь идентифицировать пользователей. 

Идентификация обычно производится с помощью паролей, известных 

только  системе  и  конкретному  лицу.  Пароли  так  же  нуждаются  в 

защите, как и данные. 

2.  Физическая защита.  

3.  Поддержка  и  передача  прав.  Система  должна  поддерживать  перечень 

прав,  предоставленных  каждому  пользователю  для  каждой 

защищенной  части  БД.  Одним  из  таких  прав  может  быть  право 

передачи своих прав другому лицу. 

В  системах  баз  данных  используются  два  специальных  механизма 

защиты: представления (подсхемы) и языки запросов, как средства определения 

прав. 

Подсхема  позволяет  переопределять  концептуальную  БД,  поддерживает 

логическую  независимость  данных,  служит  удобным  средством  защиты. 

Доступ  пользователя  к  БД  возможен  только  в  пределах  подсхемы.  Это 

обеспечивает  автоматическую  защиту  частей  БД,  не  попавших  в  подсхему. 

Кроме  этого,  имеется  возможность  ограничения  прав  доступа  в  рамках