47066

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

Доклад

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

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

Русский

2013-12-01

43.5 KB

13 чел.

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

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

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

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

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

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

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


 

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

2526. Электропроводность полупроводников и металлов 130.25 KB
  Цель работы: изучить основы теории электропроводности полупроводников и металлов. Исследовать температурные зависимости для Cu (меди) и Si (кремния), качественно их сравнить.
2527. Расчет цепей постоянного тока 180.38 KB
  Повторение методов расчета цепей постоянного тока, ознакомление с компенсационным методом измерения электродвижущей силы (э.д.с.), измерение э.д.с. гальванического элемента.
2528. Изучение затухающих электромагнитных колебаний с помощью осциллографа 150.84 KB
  Углубление и закрепление знаний по электромагнитным колебаниям, возникающим в колебательном контуре, усвоение методики использования электронного осциллографа для исследования электрических сигналов.
2529. Изучение вынужденных колебании в электрическом контуре 92.66 KB
  Вынужденными называются колебания, в процессе которых система подвергается внешнему периодически изменяющемуся воздействию. В конкретном случае электрического колебательного контура это означает, подключение к контуру внешней электродвижущей силы ε периодически изменяющейся со временем и создающей в контуре переменное электрическое напряжение.
2530. Измерение параметров периодический электрических сигналов 128.5 KB
  Изучить устройство и принцип действия электронного осциллографа. Научиться измерять с помощью осциллографа параметры периодических электрических сигналов – амплитуду, длительность и период.
2531. Методика измерения сопротивления, емкости и индуктивности с помощью универсального моста 113.5 KB
  Изучить теорию и сущность мостового метода измерения электрических величин. Овладеть методикой измерения сопротивления, ёмкости и индуктивности при помощи универсального моста. Мост измерения индуктивности путём сравнения индуктивности с ёмкостью.
2532. Определение времени жизни мюонов 113 KB
  Цель работы: изучить законы радиоактивного распада и оценить время жизни покоящихся мюонов. Мюоны (μ-мезоны) – нестабильные частицы с единичным положительным или отрицательным зарядом и массой, которая почти в 207 раз больше массы электрона.
2533. Изучение процессов зарядки и разрядки конденсатора 125.98 KB
  Изучить теорию зарядки и разрядки конденсатора, экспериментально получить зависимость напряжения на конденсаторе от времени при его зарядке и разрядке.
2534. Изучение магнитных свойств материалов и экспериментальное исследование ферромагнетиков 112.5 KB
  Опыт показывает, что намагничивание ферромагнетиков обусловлено ориентацией собственных (спиновых) магнитных моментов, электронов. Основной особенностью ферромагнетиков является существование в них спонтанно (самопроизвольно) намагниченных до насыщения небольших, но макроскопических объемов.