Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
База данных - ИС ГИБДД. Водительские права / Курсовой проект (ГИБДД. База данных водительских прав)(5,6 части).doc
Скачиваний:
63
Добавлен:
02.05.2014
Размер:
2.54 Mб
Скачать

6.2 Sql-код создания триггеров базы данных

В данном подразделе в соответствии с реляционной моделью записывается SQL-оператор CREATE TRIGGER, обеспечивающий создание триггера базы данных для реализации операционного правила, специфицированного на предыдущем этапе в таблицах 5.4–5.6. При программировании триггера ориентировались на диалект Transact-SQL для Microsoft SQL Server 2000.

Для реализации был выбран следующий триггер базы данных:

– триггер «Проверки номера прав на существование в базе».

– триггер «Проверка кол-ва неверных ответов ».

Результаты представлены в таблице 6.2.

Таблица 6.2.  SQL-код создания триггеров базы данных

п/п

SQL-операторы

1

CREATE TRIGGER [Проверки номера прав на существование в базе] ON [Права]

2

FOR INSERT

3

AS

4

DECLARE @ID [номер прав]

5

BEGIN TRANSACTION

6

SELECT @ID = [Номер прав] FROM INSERTED

7

IF EXISTS(SELECT * FROM [Права] WHERE [Номер прав] = @ID)

8

BEGIN

9

RAISERROR ('Права с таким номером уже существуют',16,-1)

10

ROLLBACK TRANSACTION

11

END

12

CREATE TRIGGER [Проверка кол-ва неверных ответов] ON [Теоретический экзамен]

13

FOR INSERT, UPDATE

14

AS

15

declare @N int

16

begin transaction

17

SELECT @N = [Кол-во неправ. ответов] FROM INSERTED

18

IF @N>5

19

BEGIN

20

RAISERROR ('Такого кол-ва неверных ответов быть не может',16,-1)

21

ROLLBACK TRANSACTION

22

END

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

6.2 Sql-код реализации внешних представлений

В данном подразделе в соответствии со способами и формами представлений на основе модели соединения таблиц записываются SQL-операторы CREATE VIEW и CREATE PROCEDURE, обеспечивающие реализацию внешних представлений базы данных. При программировании ориентировались на диалект Transact-SQL для Microsoft SQL Server 2000. Результаты приведены в таблице 6.3.

Таблица 6.3.  SQL-код реализации внешних представлений

п/п

SQL-операторы

Функция 1 «Учет кадров»

1

CREATE VIEW [Сведения о правах] AS

2

SELECT [Права].[Номер прав],

3

[Права].[Срок действия],

4

[Права].[Категория],

5

[Права].[Дата выдачи],

6

[Владелец прав].[Место рождения],

7

[Владелец прав].[ФИО],

8

[Владелец прав].[Дата рождения]

9

FROM [Права],[Владелец прав]

10

WHERE [Права].[Номер прав] = [Владелец прав].[Номер прав]

11

GO

12

CREATE PROCEDURE [Сведения о сотруднике, выдавшем права]

13

@НомерПрав [номер] AS

14

SELECT [Права].[Номер прав],

15

[Сотрудник].[ФИО],

16

[Сотрудник].[Телефон],

17

[Сотрудник].[Паспортные данные],

18

[Звание].[Звание]

19

FROM [Права],[Сотрудник],[Звание]

20

WHERE [Права].[Номер прав]= @НомерПрав

21

AND [Права].[Личный номер сотр.]= [Сотрудник].[Личный номер]

22

AND [Сотрудник].[Код звания]= [Звание].[Код]

23

GO

Функция 2 «Учет заявлений»

24

CREATE VIEW [Сведения о заявлениях] AS

25

SELECT

26

[Сотрудник].[ФИО] as 'ФИО Сотрудника',

27

[Заявление].[Основание],

28

[Заявление].[Текст],

29

[Заявление].[Номер заявления],

30

[Заявление].[Паспорт Заявителя],

31

[Заявитель].[Дата рождения],

32

[Заявитель].[ФИО] as 'ФИО Заявителя',

33

[Заявитель].[Адрес],

34

[Заявитель].[Телефон]

35

FROM [Сотрудник],[Заявление],[Заявитель]

36

WHERE [Заявитель].[Паспортные данные] = [Заявление].[Паспорт заявителя]

37

AND [Сотрудник].[Личный номер] = [Заявление].[Личный номер сотр.]

38

GO

39

CREATE PROCEDURE [Сведения о сотруднике, принявшем заявление]

40

@НомерЗаявления [номер] AS

41

SELECT [Должность].[Название должности],

42

[Сотрудник].[ФИО],

43

[Сотрудник].[Телефон],

44

[Сотрудник].[Паспортные данные],

45

[Сотрудник].[Паспортные данные],

46

[Заявление].[Номер заявления]

47

FROM [Должность],[Сотрудник],[Заявление]

48

WHERE [Заявление].[Номер заявления]= @НомерЗаявления

49

AND [Заявление].[Личный номер сотр.]= [Сотрудник].[Личный номер]

50

AND [Сотрудник].[Код должности] = [Должность].[Код]

51

GO

Функция 3 «Учет практических экзаменов»

52

CREATE VIEW [Сведения о теоретических экзаменах по вождению] AS

53

SELECT

54

[Сотрудник].[ФИО] as 'ФИО Сотрудника',

55

[Теоретический экзамен].[Кол-во неправ. ответов],

56

[Теоретический экзамен].[Дата сдачи],

57

[Курсант].[Паспортные данные],

58

[Курсант].[ФИО]

59

FROM [Сотрудник],[Теоретический экзамен],[Курсант]

60

WHERE [Курсант].[Паспортные данные] = [Теоретический экзамен].[Паспорт курсанта]

61

AND [Сотрудник].[Личный номер] = [Теоретический экзамен].[Личный номер сотр.]

62

GO

63

64

CREATE PROCEDURE [Сведения о курсанте, проходившем теоретический экзамен по вождению]

65

@НомерТеоретическогоЭкзамена [номер] AS

66

SELECT [Теоретический экзамен].[НПП],

67

[Курсант].[Паспортные данные],

68

[Курсант].[ФИО],

69

[Курсант].[Номер автошколы]

70

FROM [Теоретический экзамен],[Курсант]

71

WHERE [Теоретический экзамен].[НПП]= @НомерТеоретическогоЭкзамена

72

AND [Теоретический экзамен].[Паспорт курсанта]= [Курсант].[Паспортные данные]

73

GO

Функция 4 «Учет теоретических экзаменов»

74

CREATE VIEW [Дежурства] AS

75

SELECT [Дежурства].[Нпп],

76

[Дежурства].[Личный номер дежурного],

77

[Дежурства].[Нпп наряда],

78

[Дежурства].[Дата],

79

[Сотрудник].[ФИО],

80

FROM [Сотрудник],[Дежурство]

81

WHERE [Дежурство].[Личный номер дежурного]=[Сотрудник].[Личный номер]

82

ORDER BY [Дежурство].[Дата];

83

84

CREATE PROCEDURE [Состав дежурного наряда]

85

@Дата DATE AS

86

SELECT [Дежурство].[Нпп],

87

[Дежурство].[Дата],

88

[Группа].[Номер группы],

89

[Сотрудник].[Личный номер],

90

[Сотрудник].[ФИО]

91

FROM [Дежурство],[Наряд],[Группа],[Сотрудник]

92

WHERE [Дежурство].[Дата]=@Дата

93

AND [Дежурство].[Нпп наряда]=[Наряд].[Нпп]

94

AND [Наряд].[Номер группы]=[Группа].[Номер группы]

95

AND [Группа].[Личный номер]=[Сотрудник].[Личный номер];

96

ORDER BY [Группа].[Номер группы];

Функция 5 «Учет кадров»

97

CREATE VIEW [Сведения о сотрудниках] AS

98

SELECT [Сотрудник].[Личный номер],

99

[Сотрудник].[ФИО],

100

[Сотрудник].[Дата рождения],

101

[Сотрудник].[Паспортные данные],

102

[Звание].[Звание]

103

FROM [Сотрудник],[Звание]

104

WHERE [Сотрудник].[Код звания]=[Звание].[Код]

105

GO

106

107

CREATE PROCEDURE [Сведение о карьере сотрудника]

108

@ЛичныйНомер [номер] AS

109

SELECT [Сотрудник].[Личный номер],

110

[Сотрудник].[ФИО],

111

[Место].[НПП],

112

[Место].[Дата назначения],

113

[Место].[Дата увольнения],

114

[Подразделение].[Название]

115

FROM [Сотрудник],[Место],[Подразделение]

116

WHERE [Сотрудник].[Личный номер]= @ЛичныйНомер

117

AND [Место].[Личный номер сотр.]= @ЛичныйНомер

118

AND [Место].[Код подразделения]=[Подразделение].[Код]

119

GO