- •Курсовой проект Дисциплина «субд»
- •Введение.
- •1.Постановка задачи
- •1.1.Описание предметной области
- •1.2.Функциональные требования
- •2.Физическая модель
- •2.1.Используемая субд
- •3.Обеспечение целостности бд
- •4.Создание таблиц и ограничений.
- •5.Хранимые процедуры
- •6.Выходные формы
- •6.1.Представления
- •6.2.Отчетные хранимые процедуры и функции
- •7.Обеспечение безопасности
- •8.Оптимизация
- •9.Тестирование
- •Заключение
- •Библиографический список
- •Приложение 6 триггер
- •Приложение 7 Хранимые процедуры
- •Приложение 8 Отчетные формы
- •Приложение 9 Безопасность
- •Приложение 10 Индексы
- •Приложение 11 Тестирование
- •Приложение 12 Отчетные документы.
Приложение 6 триггер
-------------------------------------------------------------------------------------------------------------------
--триггер, запрещающий исправлять разряд электромеханика в отношении Electrician на менее низкую
CREATE TRIGGER LowClass
ON Electrician FOR UPDATE
AS
IF EXISTS
(SELECT 'TRUE'
FROM inserted I
LEFT JOIN deleted D
ON D.IDElectrician=I.IDElectrician
WHERE I.Class<D.Class)
BEGIN
RAISERROR ('Нельзя понижать разряд электромеханика!!!',16,1)
ROLLBACK TRAN
END
--проверка
UPDATE Electrician
SETClass = 1
WHEREFIO='Пупкин Василий Петрович'
Приложение 7 Хранимые процедуры
-------------------------------------------------------------------------------------------------------------------
--хранимые процедуры
--************************************************Street*************************
--процедура, которая будет вводить данные в таблицу Street
GO
CREATE PROC PStreetINSERT
@NameStreetVARCHAR(40)
AS
INSERT INTO Street
(NameStreet)
VALUES
(@NameStreet)
EXEC PStreetINSERT
'Юбилейная'
EXEC PStreetINSERT
'Ленина'
EXECPStreetINSERT
'Коммунистическая'
--процедура, которая будет обновлять данные в таблице Street
GO
ALTER PROC UpdateStreet
(@IDStreet INT,
@NameStreetVARCHAR(40)
)
AS
UPDATE Street
SET NameStreet = @NameStreet
WHEREIDStreet=@IDStreet
EXECUpdateStreet
'Космотнавтов','Коммунистическая'
--процедура, которая будет удалять данные из таблицы Street
GO
ALTER PROC DeleteStreet
(@IDStreet INT)
AS
DELETE FROM Street
WHERE IDStreet=@IDStreet
--*****************************************************************************
--************************************************TypeOfApplication**************
--процедура, которая будет вводить данные в таблицу TypeOfApplication
GO
CREATE PROC PTypeOfApplicationINSERT
@TypeOfAppVARCHAR(80)
AS
INSERT INTO TypeOfApplication
(TypeOfApp)
VALUES
(@TypeOfApp)
EXEC PTypeOfApplicationINSERT
'Поломка'
EXEC PTypeOfApplicationINSERT
'Застревание'
EXECPTypeOfApplicationINSERT
'Техосмотр'
--процедура, которая будет удалять данные из таблицы TypeOfApplication
GO
ALTER PROC DeleteTypeOfApplication
(@IDTypeOfApplication INT)
AS
DELETE FROM TypeOfApplication
WHERE IDTypeOfApplication=@IDTypeOfApplication
--*****************************************************************************
--************************************************Electrician*********************
-- процедура ввода данных в Electrician
GO
CREATE PROC PElectricianINSERT
@FIO VARCHAR(80),
@Class INT ,
@SpecialityVARCHAR(40),
@Birthday DATETIME
AS
INSERT INTO Electrician
(FIO,
Class,
Speciality,
Birthday)
VALUES
(@FIO,
@Class,
@Speciality,
@Birthday)
EXEC PElectricianINSERT
'Пупкин Василий Петрович','2','Аварийный электромеханик','03.11.1970'
EXEC PElectricianINSERT
'Алешин Генадий Иванович','3','Основной электромеханик','03.11.1985'
--процедура, которая будет обновлять данные в таблице Electrician
GO
ALTER PROC UpdateElectrician
(@IDElectrician INT,
@FIO VARCHAR(80),
@Class INT,
@SpecialityVARCHAR(40),
@Birthday DATETIME)
AS
UPDATE Electrician
SET FIO = @FIO,
Class = @Class,
Speciality=@Speciality,
Birthday=@Birthday
WHEREIDElectrician=@IDElectrician
--процедура, которая будет удалять данные из таблицы Electrician
GO
ALTER PROC DeleteElectrician
(@IDElectrisian INT)
AS
DELETE FROM Electrician
WHERE IDElectrician=@IDElectrisian
--*****************************************************************************
--************************************************Defect************************
--процедура, которая будет вводить данные в таблицу Defect
GO
CREATE PROC PDefectINSERT
@TypeOfDefectVARCHAR(80)
AS
INSERT INTO Defect
(TypeOfDefect)
VALUES
(@TypeOfDefect)
EXEC PDefectINSERT
'Перегорелалампочка'
EXECPDefectINSERT
'Не работают двери'
--процедура, которая будет обновлять данные в таблице Defect
GO
ALTER PROC UpdateDefect
(@IDdefect INT,
@TypeOfDefectVARCHAR(80))
AS
UPDATE Defect
SET TypeOfDefect = @TypeOfDefect
WHEREIDDefect=@IDdefect
--процедура, которая будет удалять данные из таблицы Defect
GO
CREATE PROC DeleteDefect
(@IDDefect INT)
AS
DELETE FROM Defect
WHERE IDDefect = @IDDefect
--*****************************************************************************
--************************************************Elevator***********************
--процедура, которая будет вводить данные в таблицу Elevator
GO
CREATE PROC PElevatorsINSERT
@PersonalNumberVARCHAR(10),
@Building VARCHAR(10),
@Door INT,
@IDStreet INT
AS
INSERT INTO Elevators
(PersonalNumber,
Building,
Door,
IDStreet)
VALUES
(@PersonalNumber,
@Building,
@Door,
@IDStreet)
EXEC PElevatorsINSERT
'123','121/2','2',1
EXEC PElevatorsINSERT
'21','65','1',2
--процедура, которая будет обновлять данные в таблице Elevstors
GO
ALTER PROC UpdateElevators
(@IDElevator INT,
@PersonalNumberVARCHAR(10),
@Building VARCHAR (10),
@Door INT,
@IDStreet INT)
AS
UPDATE Elevators
SET PersonalNumber = @PersonalNumber,
Building = @Building,
Door = @Door,
IDStreet = @IDStreet
WHEREIDElevator=@IDElevator
--процедура, которая будет удалять данные из таблицы Elevators
GO
ALTER PROC DeleteElevators
(@IDElevator INT)
AS
DELETE FROM Elevators
WHERE IDElevator=@IDElevator
--*****************************************************************************
--************************************************Request***********************
--процедура, которая будет вводить данные в таблицу Request
GO
CREATE PROC PRequestINSERT
@BreakDescriptionVARCHAR(256),
@BreakTime DATETIME,
@BreakLevel BIT,
@IDElevator INT,
@IDTypeOfApplication INT
AS
INSERT INTO Request
(BreakDescription,
BreakTime,
BreakLevel,
IDElevator,
IDTypeOfApplication)
VALUES
(@BreakDescription,
@BreakTime,
@BreakLevel,
@IDElevator,
@IDTypeOfApplication)
EXECPRequestINSERT
'не работает лифт','01.03.2012 11:10:00:00',0,1,1
EXECPRequestINSERT
'застрялилюди','04.11.2011 15:32:00:00',1,2,2
--процедура, которая будет обновлять данные в таблице Request
GO
ALTER PROC UpdateRequest
(@IDRequest INT,
@BreakDescriptionVARCHAR(256),
@BreakTime DATETIME,
@BreakLevel BIT,
@IDElevator INT,
@IDTypeOfApplication INT)
AS
UPDATE Request
SET BreakDescription = @BreakDescription,
BreakTime = @BreakTime,
BreakLevel = @BreakLevel,
IDElevator = @IDElevator,
IDTypeOfApplication = @IDTypeOfApplication
WHEREIDRequest = @IDRequest
--процедура, которая будет удалять данные из таблицы Request
GO
CREATE PROC DeleteRequest
(@IDRequest INT)
AS
DELETE FROM Request
WHERE IDRequest = @IDRequest
--*****************************************************************************
--************************************************Orders************************
--процедура, которая будет вводить данные в таблицу Orders
GO
CREATE PROC POrdersINSERT
(@OrdersTime DATETIME,
@IDElectrician INT,
@IDRequest INT)
AS
INSERT INTO Orders
(OrdersTime,
IDElectrician,
IDRequest)
VALUES
(@OrdersTime,
@IDElectrician,
@IDRequest)
EXEC POrdersINSERT
'01.03.2012 15:30:00:00',1,4
EXECPOrdersINSERT
'02.02.2012 09:15:00:00',2,5
--процедура, которая будет обновлять данные в таблице Orders
GO
ALTER PROC UpdateOrders
(@OrdersTime DATETIME,
@IDOrders INT,
@IDElectrician INT,
@IDRequest INT)
AS
UPDATE Orders
SET OrdersTime = @OrdersTime,
IDElectrician = @IDElectrician,
IDRequest = @IDRequest
WHERE IDOrders = @IDOrders
--процедура, которая будет удалять данные из таблицы Orders
GO
CREATE PROC DeleteOrders
(@IDOrders INT)
AS
DELETE FROM Orders
WHERE IDOrders = @IDOrders
--*****************************************************************************
--************************************************Defects***********************
--процедура, которая будет вводить данные в таблицу Defects
GO
CREATE PROC PDefectsINSERT
(@IDOrders INT,
@IDDefect INT
)
AS
INSERT INTO Defects
(IDOrders,
IDDefect)
VALUES
(@IDOrders,
@IDDefect)
EXEC PDefectsINSERT
3,1
EXEC PDefectsINSERT
4,2
--процедура, котораябудетобновлятьданные в таблице Defects
GO
CREATE PROC UpdateDefects
(@IDDefect INT,
@IDOrders INT)
AS
UPDATE Defects
SET IDDefect = @IDDefect
WHEREIDOrders = @IDOrders
--процедура, которая будет удалять данные из таблицы Defects
GO
CREATE PROC DeleteDefects
(@IDOrders INT)
AS
DELETE FROM Defects
WHEREIDOrders = @IDOrders
****************************************************************************