Курсовая работа: Разработка физической модели базы данных "Учёт характеристик сигналов телемеханики"
Помимо всех вышеперечисленных ограничений целостности декларативно поддерживается целостность на уровне домена. Эти ограничения отображены на физической модели БД (Приложение 1). Следует заметить, что на атрибуте SignificantBit таблицы TUTSSignals для этого ограничение пришлось задать следующим образом:
ALTER TABLE TUTSSignals ADD CONSTRAINT
СK_TUTSSignals_SignificantBit CHECK (SignificantBit]<8)
Декларативный механизм не позволил задать некоторых ограничений целостности. Вместо этого использовались триггеры.
Во-первых, номера ПЛК в пределах одного РНУ должны быть уникальны.
CREATE TRIGGER UniquePLCNumberInRNU
ON PLCs
FOR INSERT, UPDATE
AS
DECLARE @NumPLCs INT
SELECT @NumPLCs = COUNT(ALL i.ID_PLC)
FROM PLCs p INNER JOIN inserted i
ON p.ID_RNU = i.ID_RNU
WHERE p.NumberPLC = i.NumberPLC
IF @NumPLCs > 0
BEGIN
raiserror(Попытка внести в базу данных ПЛК с уже занятым номером!', 16, 1)
ROLLBACK TRAN
END
Во-вторых, адреса МЭК сигналов, принадлежащих одному ПЛК должны быть уникальны.
CREATE TRIGGER UniqueMEKAdressOnPLC
ON TITRSignals
FOR INSERT, UPDATE
AS
DECLARE @NumTITRS INT
DECLARE @NumTUTSS INT
SELECT @NumTITRS = COUNT(ALL s.ID_TITRSignal)
FROM TITRSignals s INNER JOIN inserted i
ON s.ID_PLC = i.ID_PLC