Курсовая работа: Разработка физической модели базы данных "Учёт характеристик сигналов телемеханики"
SELECT @NumTUTSS = COUNT(ALL s.ID_TUTSSignal)
FROM TUTSSignals s INNER JOIN inserted i
ON s.ID_PLC = i.ID_PLC
WHERE s.MEKAdress = i.MEKAdress
IF (@NumTITRS + @NumTUTSS) > 0
BEGIN
raiserror(Попытка внести в базу данных сигнал с уже занятым МЭК адресом для данного ПЛК!', 16, 1)
ROLLBACK TRAN
END
В данных случаях программная поддержка целостности является единственным способом обеспечения согласованности и корректности хранимых данных.
Поддержание бизнес-логики и бизнес-правил
При выполнении курсового проекта по дисциплине «Информационные технологии» была построена DFD процесса «Учёт сигналов телемеханики» (Приложение 2). На этом этапе он был декомпозирован на 4 подпроцесса;
1. Выдать данные о несовпадающих сигналах
2. Принять заявку
3. Выдать данные о сигналах
4. Найти заявку
Произведя анализ входных и выходных потоков, был составлен словарь данных, на основании которого в конечном итоге мы получили сначала концептуальную, а затем логическую модели БД (курсовой проект по дисциплине «Управление данными»). Физическая модель, созданная при выполнении данного проекта, поддерживает бизнес-логику данного процесса.
Для ввода новых данных по характеристикам сигналов составляется специальная заявка (Приложение 3). В выполнении данной операции участвует 12 хранимых процедур. Внесение заявки в базу данных выполняется в рамках одной сериализуемой транзакции. Такой уровень изоляции был выбран для обеспечения лучшей изоляции обрабатываемых данных во время транзакции. Учитывая то, что заявки выполняются намного реже просмотра данных, это оправданное решение. Если во время какой-либо из процедур произошёл сбой, она откатывает транзакцию.
Ниже они изображены на диаграмме в той последовательности, в которой вызываются.
Сперва хранимее процедуры GetTITRSignalsOnPLC и GetTUTSSignalsOnPLC возвращают администратору СПТЗ список сигналов соответствующих данному ПЛК.
CREATE proc GetTITRSignalsOnPLC
@NameRNU VARCHAR(50),
@NumberPLC INT
AS
DECLARE @ID_PLC INT
exec @ID_PLC = FindPLC @NameRNU, @NumberPLC, 0
SELECT NameDataType, NameSignal, MEKAdress, MaxEnginGrade, MinEnginGrade, MaxPhysicGrade, MinPhysicGrade, IsTISignal
FROM (SELECT *
FROM TITRSignals s
WHERE s.ID_PLC = @ID_PLC AND isDeleted != 1) s INNER JOIN DataTypes d