Целостность данных
Завантажити презентаціюПрезентація по слайдам:
Лекция 12. Целостность данных Национальный авиационный университет Факультет компьютерных наук Кафедра инженерии программного обеспечения Резниченко Валерий Анатольевич Организация баз данных и знаний
СОДЕРЖАНИЕ Понятие про ограничения целостности и их классификация Декларативные ограничения целостности Динамические ограничения целостности Семантические ограничения целостности Транзакции как механизм поддержания целостности Триггеры как механизм поддержания целостности ФКН НАУ Лекция 12. Целостность данных
Понятие про ограничения целостности Целостность данных – это полнота, достоверность и точность данных, сохраняемых в БД. Ограничения целостности - это правила, которые ограничивают множество возможных состояний базы данных и множество возмож- ных переходов из одного состояния в другое теми состояниями (переходами), которые рассматриваются как "допустимые". БД находится в целостном состоянии, если он соответствует определенным для нее ограничениям целостности. ФКН НАУ Лекция 12. Целостность данных
Классификация ограничений целостности По происхождению (структурные, семантические) По способу поддержания (декларативные, процедурные) По времени проверки (проверяются немедленно, отложенные) По области действия (атрибут, отношение, связь, и.т.д.) Возможность поддержания переходов из одного состояния в другое (статичные, динамичные). ФКН НАУ Лекция 12. Целостность данных
Декларативные ограничения целостности В реляционной БД ограничения целостности задаются для таких объектов: таблица, столбцы, связи между таблицами, связи между столбцами. Декларативное ограничение целостности – это ограничения, которые фиксируют условия, которым должна удовлетворять БД. ФКН НАУ Лекция 12. Целостность данных
Целостность таблицы В реляционных СУБД целостность таблицы задается первичным ключом, который предполагает поддержание следующих ограничений целостности: Столбцы первичного ключа не могут содержать значений NULL. Значение первичного ключа (как одного столбца так и совокупности столбцов) не могут дублироваться в таблице, то есть они должны быть уникальными (UNIQUE). Синтаксис: CONSTRAINT constraint_name PRIMARY KEY (column_list) Пример: CONSTRAINT DepPrk PRIMARY KEY (DepName, FacNO) ФКН НАУ Лекция 12. Целостность данных
Целостность столбцов В реляционной СУБД целостность столбцов представляется: Заданием типов данных и их размеров (обязательное свойство). Определением, является ли обязательными значения столбца (NULL/NOT NULL). Определением может ли значение столбца дублироваться (UNIQUE). Определением значения по умолчанию. Определением условия, которому должны удовлетворять значения столбца Для производных (выводимых, вычисляемых) столбцов задается процедура их вычисления ФКН НАУ Лекция 12. Целостность данных
Целостность столбцов. Типы данных Распространенными типами данных SQL являются: Строка фиксированной длины (CHR(n)). Строка переменной длины (VARCHAR(n)). Целые числа (INTEGER, INT, BIGINT, SMALLINT)/. Числа с фиксированной запятой (NUMERIC (p,s)). Числа с плавающей запятой (REAL, FLOAT) Дата (DATE) и время (TIME). CREATE TABLE TEACHER ( TchNO INTEGER, Name VARCHAR(50), HireDate DATE, Salary NUMERIC (5,2)); Пример: ФКН НАУ Лекция 12. Целостность данных
Целостность столбцов. Обязательность значений атрибута NULL - указывает, что в столбце значения могут отсутствовать (значения по умолчанию). NOT NULL – указывает, что значения в столбце являются обязательными. CREATE TABLE TEACHER ( TchNO INTEGER NOT NULL, Name VARCHAR(50) NOT NULL, Post VARCHAR(30) NOT NULL HireDate DATE NULL, Salary NUMERIC (5,2)); Пример: ФКН НАУ Лекция 12. Целостность данных
Целостность столбцов. Уникальность значений столбца Наличие ограничения UNIQUE свидетельствует, что значение столбца (совокупности столбцов) являются уникальными (то есть не повторяющимися. Если уникальность определена на совокупности столбцов, то каждый из таких столбцов не должен быть уникальным. Отсутствие этого ограничения допускает повторение значений столбца (столбцов) Синтаксис: [CONSTRAINT constraint_name] UNIQUE (column_list) Пример: CONSTRAINT TchUnq UNIQUE (Name, Post, HireDate) ФКН НАУ Лекция 12. Целостность данных
Целостность столбцов. Значение по умолчанию Значение по умолчанию – это то значение, которое принимает столбец конкретной строки, если при вводе этой строки значение данного столбца отсутствует. Синтаксис: 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); ФКН НАУ Лекция 12. Целостность данных
Целостность столбцов. Условия на значения столбца С помощью ограничения 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. Целостность данных
Целостность столбцов. Домен как тип данных Домен – именованное описание множества допустимых значений столбцов. Домен – это объект базы данных, который можно создать, переопределить и уничтожить. При определении столбца вместо его типа можно указывать домен. Синтаксис: 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 ФКН НАУ Лекция 12. Целостность данных
Целостность связей между таблицами Целостность связей между отношениями определяется внешним ключом, с помощью которого производится ссылка на первичный ключ или уникальный ключ другой таблицы Внешний ключ может содержать 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}]; ФКН НАУ Лекция 12. Целостность данных
Целостность связей между столбцами Пример: Количество студентов на лекции не должно превышать количества мест в аудитории 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; Целостность связей между атрибутами представляется заданием условия, которому должны удовлетворять совокупность атрибутов одного или нескольких отношений. Такие условия специфицируются триггерами. ФКН НАУ Лекция 12. Целостность данных
Динамические ограничения целостности Выделяют такие динамические ограничения: ситуационно-ориентированные; операционно-ориентированные. Динамические ограничения целостности – это ограничения, которые устанавливают зависимость между различными частями базы данных в различные моменты времени. Другими словами – это ограничения, связанные с переходом базы данных из одного состояние в другое. ФКН НАУ Лекция 12. Целостность данных
Ситуационно-ориентированные динамические ограничения целостности Ситуационно-ориентированные ограничения задаются в виде требований, которым должны удовлетворять последовательные состояния базы данных, то есть они фиксируют допустимые переходы базы данных из одного состояния в другое. 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; ФКН НАУ Лекция 12. Целостность данных
Операционно-ориентированные динамические ограничения целостности Операционно-ориентированые ограничения целостности задаются в виде допустимых последовательностей операций. Допустимость операции или последовательности операций может зависеть от текущего состояния базы данных. ФКН НАУ Лекция 12. Целостность данных
Пример операционно-ориентированного ограничения целостности Пример: Вставка в базу данных информации о том, что х является супругом 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; ФКН НАУ Лекция 12. Целостность данных
Семантические (прикладные) ограничения целостности Примеры семантических ограничений: Описанное выше правило изменения состояния столбца "Семейное положение» Входящее письмо считается отработанным, когда с ним ознакомлены все заинтересованные лица и по нему принято соответствующее решение Должностные оклады имеют следующие "вилки": … Студент может перейти на следующий курс или остаться на том же, но не на предыдущий Одно и то же лицо не может быть заведующим двух кафедр Семантические ограничения целостности или, как еще говорят, прикладные правила целостности (бизнес-правила) – это правила, которые характеризуют ограничения, действующие в ПО. Поддерживаются фразой CONSTRAINT, триггерами, хранимыми процедурами и функциями. ФКН НАУ Лекция 12. Целостность данных
Транзакции как механизм поддержания целостности Либо все предложения в транзакции выполняются успешно, либо ни одно из них не будет выполнено. Это свойство поддерживается даже при выполнении транзакции произойдет программный или аппаратный сбой. Транзакция преобразует базу данных из одного целостного состояния в другое, но в процессе выполнения транзакции целостность может нарушаться. Транзакция гарантирует, что промежуточное противоречивое состояние базы данных будет невидимым для других пользователей. Тразакция – это последовательность предложений SQL, которые рассматриваются как единое целое. ФКН НАУ Лекция 12. Целостность данных
Общая схема транзакции Установка проверки ограничений целостности: SET CONSTRAINTS {ALL | constraint_list} {DEFERRED | IMMEDIATE} ФКН НАУ Лекция 12. Целостность данных
Схожі презентації
Категорії