Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD / Slides / Russian / Лекция 12R-Целостность данных.pps
Скачиваний:
27
Добавлен:
20.02.2016
Размер:
109.06 Кб
Скачать

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Целостность столбцов. Значение по умолчанию

Значение по умолчанию – это то значение, которое принимает столбец конкретной строки, если при вводе этой строки значение данного столбца отсутствует.

Синтаксис:

Column_name data_type DEFAULT default­value

 

Пример:

 

 

 

 

 

 

 

CREATE TABLE TEACHER (

 

 

TchNO

INTEGER NOT NULL,

 

 

Name

VARCHAR(50) NOT NULL,

 

 

Post

VARCHAR(30) DEFAULT ’NOT DEFINED

 

 

HireDate

DATE NULL,

 

 

Salary

NUMERIC (5,2) DEFAULT 0);

 

 

 

 

 

 

 

 

 

ФКН НАУ

11

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Целостность столбцов. Условия на значения столбца

С помощью ограничения CHECK можно задать условие на допустимость значений столбца.

Синтаксис:

[CONSTRAINT constraint_name] CHECK (condition)

 

Пример:

 

 

 

 

 

 

 

 

 

 

CREATE TABLE SGROUP (

 

 

GrpNO

INTEGER NOT NULL,

 

 

Num

CHAR(3) NOT NULL,

 

 

Course

CHAR(1) DEFAULT ’1’CONSTRAINT Crs_chk

 

 

 

CHECK (Course IN (1’,’2’,’3’,’4’,’5’)));

 

 

 

 

 

 

 

 

 

ФКН НАУ

12

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Целостность столбцов. Домен как тип данных

Домен – именованное описание множества допустимых значений столбцов.

Домен – это объект базы данных, который можно создать, переопределить и уничтожить.

При определении столбца вместо его типа можно указывать домен.

Синтаксис:

CREATE DOMAIN name [AS] data_type [DEFAULT] value [CONSTRAINT name] CHECK (condition);

Пример:

CREATE DOMAIN Fund_Domain AS NUMERIC (5,2) CHECK (VALUE BETWEEN 0 AND 10000.00);

­­ Определение столбцов с использованием этого домена Salary Fund_Domain

Commission Fund_Domain

ФКН НАУ

13

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Целостность связей между таблицами

Целостность связей между отношениями определяется внешним ключом, с помощью которого производится ссылка на первичный ключ или уникальный ключ другой таблицы

Внешний ключ может содержать NULL значение. Это означает, что связь с другой таблицей является факультативной .

Внешний ключ определяет ссылочное ограничение целостности, которое предполагает, с помощью внешнего ключа нельзя ссылаться на отсутствующее значение того первичного (уникального) ключа, на который делается ссылка.

Синтаксис:

CONSTRAINT constr_name FOREIGN KEY (column_list_1) REFERENCES table_name [column_list_2]

[ON DELETE {RESTRICT|CASCADE|SET NULL}SET DEFAULT}] [ON UPDATE {RESTRICT|CASCADE|SET NULL}SET DEFAULT}];

ФКН НАУ

14

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Целостность связей между столбцами

Целостность связей между атрибутами представляется заданием условия, которому должны удовлетворять совокупность атрибутов одного или нескольких отношений.

Такие условия специфицируются триггерами.

Пример: Количество студентов на лекции не должно превышать количества мест в аудитории

CREATE TRIGGER Lecture_Insert_Update

FOR INSERT, UPDATE ON LECTURE

WHEN (SELECT Seats FROM ROOM

WHERE ROOM.RomNO = LECTURE.RomNO) < (SELECT Quantity FROM GROUP

WHERE SGROUP.GrpNO = LECTURE.GrpNO)

begin

ROLLBACK TRANSACTION end;

ФКН НАУ

15

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Динамические ограничения целостности

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

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

Выделяют такие динамические ограничения:

ситуационно-ориентированные;

операционно-ориентированные.

ФКН НАУ

16

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Ситуационно-ориентированные динамические ограничения целостности

Ситуационно-ориентированные

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

 

 

 

 

 

CREATE TRIGGER Person_MaritalState

 

 

FOR INSERT, UPDATE ON PERSON

 

 

WHEN (OLD.MarSt=’холост’ AND NEW.marSt IN (‘разведен’,‘вдовец’)) OR

 

 

(OLD.MarSt=‘женат’

AND NEW.marSt = ‘холост’) OR

 

 

(OLD.MarSt=‘разведен’

AND NEW.MarSt IN (‘холост’,’вдовец’)) OR

 

 

(OLD.MarSt=‘вдовец’

AND NEW.MarSt IN (‘холост’,‘разведен’))

 

 

begin

 

 

 

ROLLBACK TRANSACTION

 

 

end;

 

 

 

 

 

 

ФКН НАУ

17

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Операционно-ориентированные динамические ограничения целостности

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

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

ФКН НАУ

18

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Пример операционно-ориентированного ограничения целостности

Пример: Вставка в базу данных информации о том, что х является супругом y допустима только в том случае, если текущее семейное положение x и y не есть женат/замужем

MARRIAGE(Husb, Wife), PERSON(Name, MarSt)

CREATE TRIGGER Marriage_Insert_Check ON MARRIAGE FOR INSERT

WHEN (MARRIAGE.Husb = PERSON.Name AND PERSON.MarSt = ‘женат’ ) OR (MARRIAGE.Wife = PERSON.Name AND PERSON.MarSt = "married")

begin

ROLLBACK TRANSACTION end;

ФКН НАУ

19

Лекция 12. Целостность данных

воскресенье 7 Июль, 2019

Семантические (прикладные) ограничения целостности

Семантические ограничения целостности или, как еще говорят, прикладные правила целостности (бизнес-правила) – это правила,

которые характеризуют ограничения, действующие в ПО.

Примеры семантических ограничений:

Описанное выше правило изменения состояния столбца "Семейное положение»

Входящее письмо считается отработанным, когда с ним ознакомлены все заинтересованные лица и по нему принято соответствующее решение

Должностные оклады имеют следующие "вилки": …

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

Одно и то же лицо не может быть заведующим двух кафедр

Поддерживаются фразой CONSTRAINT, триггерами,

 

ФКН НАУ хранимыми процедурами и функциями.

20