7 Целостность реляционной модели.ppt
- Количество слайдов: 10
Базы данных Целостность реляционной модели данных
Определения Целостность – соответствие информационной модели предметной области, хранимой в базе данных, объектам реального мира и взаимосвязям в каждый момент времени.
Аспекты целостности Три аспекта целостности: n n n Структурная целостность (обеспечивается реляционной моделью данных): - Наличие первичного ключа - Отсутствие дубликатов кортежей - Отсутствие зависимости от порядка кортежей Ссылочная целостность (обеспечивается СУБД) – выполняется одно из двух правил: 1) При удалении кортежа из родительского отношения, удаляются все связанные с ним кортежи подчиненного отношения (каскадное удаление) 2) При удалении кортежа из родительского отношения, на место ключа в связанных кортежах подчиненного отношения ставится значение NULL. Семантическая целостность (обеспечивается разработчиком и соответствующими средствами СУБД): Автоматическое выполнение условий (бизнес-правил), определенных в предметной области. Например: возраст читателя не менее 17 лет, читатель не может брать более 5 книг, у читателя должен быть или домашний, или служебный телефон, и т. д.
Пути поддержания целостности БД Два пути поддержания целостности БД: n n Декларативный путь – задаются правила в виде ограничений для данных Процедурный путь – программная (алгоритмическая) реализация правил, т. е. описание действий, выполняемых при изменении базы данных (триггеры и транзакции)
Декларативная реализация целостности CREATE TABLE <имя таблицы> (<описание элемента таблицы> [, … n]) <описание элемента таблицы> : : = <определение столбца> | <ограничение таблицы> <определение столбца> : : = <имя столбца> <тип данных> [<значение по умолчанию>] [<ограничения столбца>] <значение по умолчанию> : : = [DEFAULT <выражение>] | [IDENTITY (<нач. значение>, <приращение>)] <ограничение столбца> : : = [CONSTRAINT <имя ограничения>] { [NULL | NOT NULL] [ {PRIMARY KEY | UNIQUE} | [ [FOREIGN KEY] REFERENCES <имя таблицы> (<имя столбца>) ] [ON DELETE {CASCADE | NO ACTION}] [ON UPDATE {CASCADE | NO ACTION}] ]| CHECK <логическое выражение>}
Декларативная реализация целостности <ограничение таблицы> : : = [ CONSTRAINT <название ограничения> ] { [ { PRIMARY KEY | UNIQUE } { ( <столбец>[ , . . . n ] ) } ] | FOREIGN KEY ( <столбец>[ , . . . n ] ) REFERENCES <родительская таблица>[ ( <столбец ссылки>[ , . . . n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] | CHECK (<логическое выражение>)}
Декларативная реализация целостности Концептуальная схема базы данных «Библиотека» Publications = <isbn, title, author, public_year, pages> (ISBN – уникальный код издания, название, автор, год издания, количество страниц) Readers = <reader_id, last_name, first_name, second_name, work_phone, home_phone> (номер читательского билета, фамилия читателя, имя, отчество, номер служебного телефона, номер домашнего телефона) Exemplars = <inv, isbn, reader_id, date_out> (инвентарный номер – естественный первичный ключ, ISBN издания, номер читательского билета, дата выдачи)
Декларативная реализация целостности CREATE TABLE Publications ( isbn VARCHAR(14) NOT NULL PRIMARY KEY, title VARCHAR(120) NOT NULL, author VARCHAR(30) NULL, public_year INT DEFAULT YEAR(GETDATE()) CHECK(public_year >= YEAR(GETDATE()) -100 AND public_year <= YEAR(GETDATE())), pages INT CHECK(pages >= 5 AND pages <= 2000) );
Декларативная реализация целостности CREATE TABLE Exemplars ( inv VARCHAR(10) NOT NULL PRIMARY KEY, isbn VARCHAR(14) NOT NULL FOREIGN KEY REFERENCES Publications(isbn), reader_id INT NULL, /* нужна ссылка на Readers, но еще нет такой таблицы*/ date_out DATETIME )
Декларативная реализация целостности CREATE TABLE Readers ( reader_id INT NOT NULL PRIMARY KEY IDENTITY, last_name VARCHAR(50) NOT NULL, first_name VARCHAR(50) NOT NULL, second_name VARCHAR(50) NULL, work_phone CHAR(11), home_phone CHAR(11), CONSTRAINT CK_phone CHECK(work_phone IS NOT NULL OR home_phone IS NOT NULL) ) /* Установление ссылки */ ALTER TABLE dbo. Exemplars ADD CONSTRAINT FK_Exemplars_Readers FOREIGN KEY (reader_id) REFERENCES Readers(reader_id)
7 Целостность реляционной модели.ppt