47066

Органичения целостности БД. Классификация ограничений. Предикаты и высказывания. Пердикаты переменной отношения и БД. Основное правило целостности данных

Доклад

Информатика, кибернетика и программирование

Органичения целостности БД. Основное правило целостности данных. Ограничения целостности классифицируются по четырем основным категориям: ограничения типа домена атрибута переменнойотношения и базы данных. Типы виды условий целостности данных.

Русский

2013-12-01

43.5 KB

15 чел.

Органичения целостности БД. Классификация ограничений. Предикаты и высказывания. Пердикаты переменной отношения и БД. Основное правило целостности данных.

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

Ограничения целостности классифицируются по четырем основным категориям: ограничения типа (домена), атрибута, переменной-отношения и базы данных.

Типы (виды) условий целостности данных:

1. обязательность данных – как только вы войдете в набор данных того или иного поля, пока не введете какие-либо данные, вас система из средства набора не выпустит (NOT NULL).

CREATE TABLE bon

(

id number,

ename varchar2 (50) not null,

sername varchar2 (50)

);

2. проверка на правильность (validity checking)– проверка диапазона значений (правильность введения даты, размера чисел)

CREATE TABLE bon4

(

id number,

ename varchar2 (50) not null,

sal number constraint con_chk_bon4 check (sal>= 0),

sername varchar2 (50),

constraint my_con_uq2 unique(id)

);

3. целостность (entity integrity) – соответствие внешнего ключа и primary key

CREATE TABLE NBON

(

id number primary key,

ename varchar2 (50) not null,

sal number check (sal>= 0),

sername varchar2 (50)

);

4. ссылочная целостность (referent integrity) – как правило, проверяют в двух местах: на клиенте, на сервере.

СREATE TABLE

(columns columns_types,

…,

column column_type [constraint constraint_name]

REFERENCES parent_table_name(parent_table_column_name)

[NULL | ON DELETE CASCADE | ON DELETE SET NULL],

….

);

 

или же на уровне таблицы

 

СREATE TABLE

(columns columns_types,

…,

column_X column_X_type,

constraint constraint_name FOREIGN KEY (column_X)

REFERENCES parent_table_name(parent_table_column_name)

[NULL | ON DELETE CASCADE | ON DELETE SET NULL],

….

);

 

где

FOREIGN KEY определяет название ссылаемого поля

REFERENCES определяет название родительской таблицы и его поля

NULL - это значение по умолчанию, то есть при удаление родительской записи, удаление разрешается только если нет дочерних записей ссылающихся на родительскую запись

ON DELETE CASCADE - при удаление родительской записи, автоматом удаляются также все дочерние записи

ON DELETE SET NULL - при удаление родительской записи, автоматом все дочерние записи обновляются на значение NULL

5. непротиворечивость (business правила) – деловые правила, зависит от конкретных СУБД.

CREATE TABLE bon2

(

id number unique,

ename varchar2 (50) not null,

sername varchar2 (50)

);

__________________________________________

<определение_таблицы> ::=

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

{(имя_столбца тип_данных [ NOT NULL ][ UNIQUE]

[DEFAULT <значение>]

[ CHECK (<условие_выбора>)][,...n]}

[CONSTRAINT имя_ограничения]

[PRIMARY KEY (имя_столбца [,...n])

{[UNIQUE (имя_столбца [,...n])}

[FOREIGN KEY (имя_столбца_внешнего_ключа 

[,...n])

REFERENCES имя_род_таблицы 

[(имя_столбца_род_таблицы [,...n])],

[MATCH {PARTIAL | FULL}

[ON UPDATE {CASCADE| SET NULL |SET DEFAULT

|NO ACTION}]

[ON DELETE {CASCADE| SET NULL |SET DEFAULT

|NO ACTION}]

{[CHECK(<условие_выбора>)][,...n]})

___________________________________________

Классификация ограничений целостности

Ограничения целостности можно классифицировать несколькими способами:

  1.  По способам реализации.
  2.  По времени проверки.
  3.  По области действия.

Классификация ограничений целостности по способам реализации

Каждая система обладает своими средствами поддержки ограничений целостности. Различают два способа реализации:

  1.  Декларативная поддержка ограничений целостности.
  2.  Процедурная поддержка ограничений целостности.

Декларативная поддержка ограничений целостности заключается в определении ограничений средствами языка определения данных (DDL - Data Definition Language). Обычно средства декларативной поддержки целостности (если они имеются в СУБД) определяют ограничения на значения доменов и атрибутов, целостность сущностей (потенциальные ключи отношений) и ссылочную целостность (целостность внешних ключей). Декларативные ограничения целостности можно использовать при создании и модификации таблиц средствами языка DDL или в виде отдельных утверждений (ASSERTION).

Например, следующий оператор создает таблицу PERSON и определяет для нее некоторые ограничения целостности:

CREATE TABLE PERSON

(Pers_Id INTEGER PRIMARY KEY,

Pers_Name CHAR(30) NOT NULL,

Dept_Id REFERENCES DEPART(Dept_Id) ON UPDATE CASCADE ON DELETE CASCADE);

Процедурная поддержка ограничений целостности заключается в использовании триггеров и хранимых процедур.

Триггер – это откомпилированная SQL-процедура, исполнение которой обусловлено наступлением определенных событий внутри реляционной базы данных.

Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Каждый триггер привязывается к конкретной таблице. Все производимые им модификации данных рассматриваются как одна транзакция. В случае обнаружения ошибки или нарушения целостности данных происходит откат этой транзакции. Тем самым внесение изменений запрещается. Отменяются также все изменения, уже сделанные триггером.

<Определение_триггера>::=

{CREATE | ALTER} TRIGGER имя_триггера

ON {имя_таблицы | имя_просмотра }

[WITH ENCRYPTION ]

{

{ { FOR | AFTER | INSTEAD OF }

{ [ DELETE] [,] [ INSERT] [,] [ UPDATE] }

[ WITH APPEND ]

[ NOT FOR REPLICATION ]

AS

sql_оператор[...n]

} |

{ {FOR | AFTER | INSTEAD OF } { [INSERT] [,]

[UPDATE] }

[ WITH APPEND]

[ NOT FOR REPLICATION]

AS

{ IF UPDATE(имя_столбца)

[ {AND | OR} UPDATE(имя_столбца)] [...n]

|

IF (COLUMNS_UPDATES(){оператор_бит_обработки}

 бит_маска_изменения)

{оператор_бит_сравнения }бит_маска [...n]}

sql_оператор [...n]

}

}

Ограничение базы данных — это ограничение, устанавливающее взаимосвязь между различными переменными-отношениями. Приведем несколько примеров.

CONSTRAINT DBC1

IS EMPTY ( ( S JOIN SP )

WHERE STATUS < 20 AND QTY > QTY ( 500 ) ) ;

Смысл: "Поставщики со статусом, меньшим 20, не могут поставлять детали в количе¬стве свыше 500 штук".

Ранее мы установили, что любое отношение имеет связанный с ним предикат, а кортежи этого отношения выражают истинные высказывания, порождаемые данным предикатом.

Должно быть понятно, что переменная-отношение тоже имеет предикат, а именно — предикат, который будет общим для всех возможных отношений, представляющих допустимые значения для данной переменной-отношения. Например, рассмотрим переменную-отношение поставщиков S. Предикат для этой переменной-отношения можно сформулировать примерно так.

Поставщик с данным номером поставщика (Si) имеет данное имя (SNAME), данное значение статуса (STATUS) и размещается в данном городе (CITY), кроме того, в любой заданный момент никакие два поставщика не имеют одинаковых номеров поставщика.

Также должно быть понятно, что предикат данной переменной-отношения по свой сути является критерием приемлемости изменений для рассматриваемой переменной-отношения, т.е. он предписывает, будет ли допустима определенная операция INSERT, UPDATE или DELETE для данной переменной-отношения. Следовательно, в идеальном случае СУБД должен быть известен и понятен предикат каждой переменной-отношения в базе данных, что позволит системе корректно обрабатывать всевозможные попытки внесения изменений.

Но система "не знает и не понимает" (и "не может знать и понимать") предикат переменной-отношения поставщиков на все 100%. Однако ей известно достаточно хорошее приближение к этому предикату, а конкретнее — ей известны ограничения целостности, которые применимы к записям о поставщиках. Следовательно, мы определяем предикат переменной-отношения для переменной-отношения поставщиков (или в общем случае для любой переменной-отношения) как логическое умножение (логическая операция И) всех ограничений переменной-отношения, которые установлены для данной переменной-отношения.

Теперь можно сформулировать золотое правило (по крайней мере его первую версию).

Ни одна из операций изменения не имеет права переводить переменную-отношение в состояние, нарушающее ее собственный предикат.


 

А также другие работы, которые могут Вас заинтересовать

17118. Використання покажчиків для роботи зі складеними типами даних 98 KB
  Лабораторна робота № 27 Тема: Використання покажчиків для роботи зі складеними типами даних Ціль роботи: виробити практичні навички у використанні покажчиків при роботі зі складеними комбінованими типами даних. Обладнання: ПКПО Borland C Теоретичні відомості ...
17119. Використання покажчиків для роботи з функціями 95.5 KB
  Лабораторна робота № 28 Тема: Використання покажчиків для роботи з функціями Ціль роботи: виробити практичні навички в написанні програм з функціями й у використання покажчиків для роботи з функціями. Обладнання: ПКПО Borland C Теоретичні відомості З дозволяє вик
17120. Розробка програм із багатофайлової структурою. Заголовні файли. Класи пам'яті перемінних і функцій 88.5 KB
  Лабораторна робота № 29 Тема: Розробка програм із багатофайлової структурою. Заголовні файли. Класи пам'яті перемінних і функцій. Ціль роботи: ознайомитися з написанням програм із багатофайлової структурою заголовними файлами вивчити класи пам'яті перемінних і функц
17121. Розробка програм з використанням класів 112 KB
  Лабораторна робота № 30 Тема: Розробка програм з використанням класів Ціль роботи: вивчити синтаксичні конструкції для оголошення визначення і використання класів. Розібратися з особливостями використання класів у мові С. Обладнання: ПКПО Borland C Теоретичні відо...
17122. Використання конструкторів і деструкторів 58 KB
  Лабораторна робота № 31 Тема: Використання конструкторів і деструкторів Ціль роботи: вивчити і навчитися використовувати механізм роботи з конструкторами і деструкторами. Обладнання: ПКПО Borland C Теоретичні відомості Конструктори і деструктори Існує кільк
17123. Використання спадкування для створення ієрархії класів 80.5 KB
  Лабораторна робота № 32 Тема: Використання спадкування для створення ієрархії класів Ціль роботи: одержати навички у використанні спадкування для створення похідних класів при простому спадкуванні. Обладнання: ПКПО Borland C Теоретичні відомості При оголошенні п...
17124. Використання віртуальних і покажчиків для роботи з об'єктами класів 51.5 KB
  Лабораторна робота № 33 Тема: Використання віртуальних і покажчиків для роботи з об'єктами класів Ціль роботи: вивчити і навчитися використовувати віртуальні функції в мові С. Обладнання: ПКПО Borland C Теоретичні відомості Віртуальні функціїчлени з'являються в к...
17125. Задачі курсу. Історичний огляд розвитку обчислювальної техніки. Операційна система (ОС) та її функції. Структура ОС 72 KB
  Лекція №1 Тема: Задачі курсу. Історичний огляд розвитку обчислювальної техніки. Операційна система ОС та її функції. Структура ОС. План Мета і задачі курсу. Призначення операційних систем. Функції операційних систем. Поняття операційного середовища. ...
17126. Структура ОС MS – DOS. Основні команди MS – DOS 162.5 KB
  Лекція №2 Тема: Структура ОС MS DOS. Основні команди MS DOS. План Історія й архітектура. Керування програмами. Керування пам'яттю. Введеннявиведення і файлова система. Структура MS DOS. Історія й архітектура ОС MS DOS була розроблена фірмою Microso...