- •Резниченко Валерий Анатольевич Организация баз данных и знаний
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
- •Лекция 12. Целостность данных
Лекция 12. Целостность данных |
воскресенье 7 Июль, 2019 |
Целостность столбцов. Значение по умолчанию
Значение по умолчанию – это то значение, которое принимает столбец конкретной строки, если при вводе этой строки значение данного столбца отсутствует.
Синтаксис:
Column_name data_type DEFAULT defaultvalue
|
Пример: |
|
|
|
|
|
|
|
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 |
