Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Обеспечение целостности БД




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

Декларативная целостность неразрывно связана с физической структурой таблиц БД и осуществляется при помощи некоторых условий (ограничений), налагаемых на столбцы или таблицы. Этот вид поддержания согласованности данных гарантирует, что хранимая информация будет удовлетворять определенным в таблицах правилам. Кроме того, декларативные ограничения целостности обеспечивают высокое быстродействие, что, несомненно, является плюсом.

Ограничение PRIMARY KEY было наложено на все таблицы, т.к. необходим первичный ключ для связи таблиц, также происходит обеспечение отсутствия NULL-значений этих первичных ключей.

В системе не должно быть повторяющихся данных в справочниках. Для осуществления данного бизнес-правила было использовано ограничение UNIQUE.

Данное ограничение было наложено на атрибуты таблиц: Street, Electrician, TypeOfApplication, Defect.

ALTER TABLE Street

WITH CHECK

ADD CONSTRAINT IDStreetPrimary PRIMARY KEY (IDStreet),

CONSTRAINT NameStreetUnique UNIQUE (NameStreet)

;

 

ALTER TABLE TypeOfApplication

WITH CHECK

ADD CONSTRAINT IDTypeOfApplicationPrimary PRIMARY KEY (IDTypeOfApplication),

CONSTRAINT TypeOfAppUnique UNIQUE (TypeOfApp)

;

 

В системе необходимы ограничения на проверку даты рождения электромехаников, чтобы они были не моложе 20 лет. Данное бизнес-правило было реализовано за счет ограничения CHECK, так как его можно реализовать при помощи него не используя например триггер либо транзакцию, т.к. check проще и выполняется в базе быстрее процедурных методов обеспечения целостности БД.

 

ALTER TABLE Electrician

WITH CHECK

ADD CONSTRAINT ElClassCheck CHECK (Class BETWEEN 1 AND 4),

CONSTRAINT ElectricianBirthdayCheck CHECK (DATEDIFF(year,Birthday,getDate())>20)

 

EXEC PElectricianINSERT

'Пупкин Петр Сергеевич','4','Аварийный электромеханик','03.11.2011'

 

 

Если электромеханик не выполнил задание, то он не отдает наряд диспетчеру и в таком случае «время наряда» (время ремонта, техосмотра или вызволения людей) в наряде остается пустым. Остальные же атрибуты должны быть заполнены. Для данного бизнес правила использовалось ограничение NOT NULL, которое было наложено на все атрибуты кроме OrdersTime, т.к. он может быть пустым в случае не закрытия наряда.

Ограничение внешнего ключа FOREIGN KEY было наложено на все таблицы кроме справочников, для связи таблиц между собой.

 

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

В системе нельзя понижать разряд электромеханика на меньший. Это бизнес-правило было реализовано при помощи триггера, который запрещает данное понижение разряда. С одной стороны, применение триггеров очень удобно для пользователей базы данных, а с другой, их использование часто связано с дополнительными затратами ресурсов на операции ввода/вывода. Тем не менее, данное бизнес-правило было реализовано при помощи триггера, т.к. его невозможно реализовать при помощи более простого ограничения CHECK

Триггер – это откомпилированная SQL-процедура, исполнение которой обусловлено наступлением определенных событий внутри реляционной базы данных.

ALTER TRIGGER LowClass

ON Electrician FOR UPDATE

AS

IF EXISTS

(SELECT 'TRUE'

FROM insertedI

LEFT JOIN deleted D

ON D.IDElectrician = I.IDElectrician

WHERE I.Class < D.Class)

BEGIN

RAISERROR('Нельзя понижать разряд электромеханика!!!',16,1)

ROLLBACK TRAN

END

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...