- •2005.552800.Бд.Кп.Пз т28-320.6
- •5 Проектирование реляционной и внешних моделей
- •5.1 Устранение категорий и явных связей
- •5.3 Разработка моделей внешних представлений
- •5.4 Вывод
- •6 Разработка sql-кода базы данных
- •6.1 Sql-код создания таблиц
- •6.2 Sql-код создания триггеров базы данных
- •6.2 Sql-код реализации внешних представлений
- •6.4 Вывод
- •Заключение
- •Список литературы
6.1 Sql-код создания таблиц
В данном подразделе в соответствии с реляционной моделью записываются SQL-операторы CREATE TABLE, обеспечивающие создание таблиц базы данных. При этом с помощью средств задания табличных ограничений реализуются стандартные ограничения, специфицированные на предыдущем этапе в таблицах 5.1–5.3 и 5.6. При программировании ориентировались на стандартный SQL2 или на диалект Transact-SQL для Microsoft SQL Server 2000. Результаты приведены в таблице 6.1.
Таблица 6.1. SQL-код создания таблиц базы данных
№ п/п |
Источник |
SQL-операторы |
1 |
|
EXEC sp_addtype N'код', N'int', N'not null' |
2 |
|
GO |
3 |
|
EXEC sp_addtype N'номер', N'nchar (6)', N'not null' |
4 |
|
GO |
5 |
|
EXEC sp_addtype N'номер паспорта', N'nchar (11)', N'not null' |
6 |
|
GO |
7 |
|
EXEC sp_addtype N'номер прав', N'nchar (8)', N'not null' |
8 |
|
GO |
9 |
|
EXEC sp_addtype N'фио', N'varchar (40)', N'not null' |
10 |
|
GO |
11 |
|
CREATE TABLE [Курсант]( |
12 |
|
[Паспортные данные] [номер паспорта] NOT NULL, |
13 |
|
[Номер автошколы] [номер] NOT NULL, |
14 |
|
[ФИО] [фио] NOT NULL |
15 |
|
CONSTRAINT PK_Курсант |
16 |
|
PRIMARY KEY ([Паспортные данные]) |
17 |
|
) |
18 |
|
CREATE TABLE [Заявитель] ( |
19 |
|
[Паспортные данные] [номер паспорта] NOT NULL, |
20 |
|
[Дата рождения] DATETIME NOT NULL, |
21 |
|
[ФИО] [фио] NOT NULL, |
22 |
|
[Телефон] [номер] NOT NULL, |
23 |
|
[Адрес] [VARCHAR] (30) NOT NULL |
24 |
|
CONSTRAINT PK_Заявитель |
25 |
|
PRIMARY KEY ([Паспортные данные]) |
26 |
|
) |
27 |
|
CREATE TABLE Подразделение ( |
28 |
|
[Код] [код] NOT NULL, |
29 |
|
[Название] [VARCHAR] (30) NOT NULL |
30 |
|
CONSTRAINT PK_Подразделение |
31 |
|
PRIMARY KEY ([Код]) |
32 |
|
|
33 |
|
) |
34 |
|
CREATE TABLE Звание( |
35 |
|
[Код] [код] NOT NULL, |
36 |
|
[Звание] [VARCHAR] (30) NOT NULL |
37 |
|
CONSTRAINT ch_Звание |
38 |
|
CHECK ([Звание] BETWEEN 'A' AND 'я'), |
39 |
|
CONSTRAINT PK_Звание |
40 |
|
PRIMARY KEY ([Код]) |
41 |
|
) |
42 |
|
CREATE TABLE Должность( |
43 |
|
[Код] [код] NOT NULL, |
44 |
|
[Название должности] [VARCHAR] (30) NOT NULL |
45 |
|
CONSTRAINT PK_Должность |
46 |
|
PRIMARY KEY ([Код]) |
47 |
|
) |
48 |
|
|
49 |
|
CREATE TABLE Сотрудник ( |
50 |
|
[Личный номер] [номер] NOT NULL, |
51 |
|
[ФИО] [фио] NOT NULL, |
52 |
|
[Паспортные данные] [номер паспорта] NOT NULL, |
53 |
|
[Телефон] [номер] NOT NULL, |
54 |
|
[Семейное положение] [BIT] NOT NULL, |
55 |
|
[Образование] [VARCHAR] (30) NOT NULL, |
56 |
|
CONSTRAINT ch_Образование |
57 |
|
CHECK ([Образование] BETWEEN 'A' AND 'я'), |
58 |
|
[Зарплата] [BIGINT] NOT NULL, |
59 |
|
[Дата рождения] [DATETIME] NOT NULL, |
60 |
|
[Группа крови] [NCHAR] (2) NOT NULL, |
61 |
|
CONSTRAINT ch_ГруппаКрови |
62 |
|
CHECK ([Группа крови] LIKE '[1-4][+-]'), |
63 |
|
[Код звания] [код] NOT NULL, |
64 |
|
[Код должности] [код] NOT NULL |
65 |
|
|
66 |
|
CONSTRAINT PK_Сотрудник |
67 |
|
PRIMARY KEY ([Личный номер]) |
68 |
|
CONSTRAINT FK_Сотрудник_Звание |
69 |
|
FOREIGN KEY ([Код звания]) |
70 |
|
REFERENCES Звание ([Код]) |
71 |
|
ON UPDATE CASCADE, |
72 |
|
CONSTRAINT FK_Сотрудник_Должность |
73 |
|
FOREIGN KEY ([Код должности]) |
74 |
|
REFERENCES Должность ([Код]) |
75 |
|
ON UPDATE CASCADE |
76 |
|
) |
77 |
|
CREATE TABLE [Права] ( |
78 |
|
[Номер прав] [номер прав] NOT NULL, |
79 |
|
[Личный номер сотр.] [номер] NOT NULL, |
80 |
|
[Срок действия] DATETIME NOT NULL, |
81 |
|
[Категория] [CHAR] NOT NULL, |
82 |
|
CONSTRAINT ch_Категория |
83 |
|
CHECK ([Категория] LIKE '[A-D]'), |
84 |
|
CONSTRAINT ch_ДатаВыдачи |
85 |
|
CHECK ([Дата выдачи] < [Срок действия]), |
86 |
|
[Дата выдачи] DATETIME NOT NULL |
87 |
|
CONSTRAINT PK_Права |
88 |
|
PRIMARY KEY ([Номер прав]) |
89 |
|
CONSTRAINT FK_Права_Сотрудник |
90 |
|
FOREIGN KEY ([Личный номер сотр.]) |
91 |
|
REFERENCES Сотрудник([Личный номер]) |
92 |
|
ON UPDATE CASCADE |
93 |
|
) |
94 |
|
CREATE TABLE [Владелец прав] ( |
95 |
|
[Номер прав] [номер прав] NOT NULL, |
96 |
|
[Паспортные данные] [номер паспорта] NOT NULL, |
97 |
|
[Место рождения] [VARCHAR] (100) NOT NULL, |
98 |
|
[ФИО] [фио] NOT NULL, |
99 |
|
[Дата рождения] DATETIME NOT NULL |
100 |
|
CONSTRAINT PK_ВладелецПрав |
101 |
|
PRIMARY KEY ([Номер прав],[Паспортные данные]) |
102 |
|
CONSTRAINT FK_ВладелецПрав_Прав |
103 |
|
FOREIGN KEY ([Номер прав]) |
104 |
|
REFERENCES Права([Номер прав]) |
105 |
|
ON UPDATE CASCADE |
106 |
|
) |
107 |
|
CREATE TABLE [Практический экзамен] ( |
108 |
|
[НПП] [номер] NOT NULL, |
109 |
|
[Зачет первого этапа] BIT NOT NULL, |
110 |
|
[Зачет второго этапа] BIT NOT NULL, |
111 |
|
[Примечания] [VARCHAR] (255) NOT NULL, |
112 |
|
CONSTRAINT ch_ПрактПримечания |
113 |
|
CHECK ([Примечания] BETWEEN 'A' AND 'я'), |
114 |
|
[Личный номер сотр.] [номер] NOT NULL, |
115 |
|
[Дата сдачи] DATETIME NOT NULL, |
116 |
|
[Паспорт курсанта] [номер паспорта] NOT NULL |
117 |
|
CONSTRAINT PK_ПрактическийЭкзамен |
118 |
|
PRIMARY KEY ([НПП],[Паспорт курсанта],[Личный номер сотр.]) |
119 |
|
CONSTRAINT FK_ПрактическийЭкзамен_Курсант |
120 |
|
FOREIGN KEY ([Паспорт курсанта]) |
121 |
|
REFERENCES Курсант([Паспортные данные]) |
122 |
|
ON UPDATE CASCADE , |
123 |
|
|
124 |
|
CONSTRAINT FK_ПрактическийЭкзамен_Сотрудник |
125 |
|
FOREIGN KEY ([Личный номер сотр.]) |
126 |
|
REFERENCES Сотрудник([Личный номер]) |
127 |
|
ON UPDATE CASCADE |
128 |
|
) |
129 |
|
CREATE TABLE [Теоретический экзамен] ( |
130 |
|
[НПП] [номер] NOT NULL, |
131 |
|
[Кол-во неправ. ответов] [INT] NOT NULL, |
132 |
|
[Примечания] [VARCHAR] (255) NOT NULL, |
133 |
|
CONSTRAINT ch_ТеорПримечания |
134 |
|
CHECK ([Примечания] BETWEEN 'A' AND 'я'), |
135 |
|
[Личный номер сотр.] [номер] NOT NULL, |
136 |
|
[Дата сдачи] DATETIME NOT NULL, |
137 |
|
[Паспорт курсанта] [номер паспорта] NOT NULL |
138 |
|
CONSTRAINT PK_ТеоретическийЭкзамен |
139 |
|
PRIMARY KEY ([НПП],[Паспорт курсанта],[Личный номер сотр.]) |
140 |
|
CONSTRAINT FK_ТеоретическийЭкзамен_Курсант |
141 |
|
FOREIGN KEY ([Паспорт курсанта]) |
142 |
|
REFERENCES Курсант([Паспортные данные]) |
143 |
|
ON UPDATE CASCADE, |
144 |
|
CONSTRAINT FK_ТеоретическийЭкзамен_Сотрудник |
145 |
|
FOREIGN KEY ([Личный номер сотр.]) |
146 |
|
REFERENCES Сотрудник([Личный номер]) |
147 |
|
ON UPDATE CASCADE |
148 |
|
) |
149 |
|
CREATE TABLE [Заявление] ( |
150 |
|
[Номер заявления] [номер] NOT NULL, |
151 |
|
[Паспорт заявителя] [номер паспорта] NOT NULL, |
152 |
|
[Личный номер сотр.] [номер] NOT NULL, |
153 |
|
[Текст] [TEXT] NOT NULL, |
154 |
|
[Основание] [VARCHAR] (255) NOT NULL, |
155 |
|
CONSTRAINT ch_Основание |
156 |
|
CHECK ([Основание] BETWEEN 'A' AND 'я'), |
157 |
|
[Дата заявления] DATETIME NOT NULL |
158 |
|
CONSTRAINT PK_Заявление |
159 |
|
PRIMARY KEY ([Номер заявления],[Личный номер сотр.]) |
160 |
|
CONSTRAINT FK_Заявление_Сотрудник |
161 |
|
FOREIGN KEY ([Личный номер сотр.]) |
162 |
|
REFERENCES Сотрудник([Личный номер]) |
163 |
|
ON UPDATE CASCADE, |
164 |
|
CONSTRAINT FK_Заявление_Заявитель |
165 |
|
FOREIGN KEY ([Паспорт заявителя]) |
166 |
|
REFERENCES Заявитель([Паспортные данные]) |
167 |
|
ON UPDATE CASCADE |
168 |
|
) |
169 |
|
CREATE TABLE [Дети] ( |
170 |
|
[Личный номер сотр.] [номер] NOT NULL, |
171 |
|
[НПП] [код] NOT NULL, |
172 |
|
[Дата рождения] DATETIME NOT NULL, |
173 |
|
[Пол] BIT NOT NULL |
174 |
|
CONSTRAINT PK_Дети |
175 |
|
PRIMARY KEY ([НПП],[Личный номер сотр.]) |
176 |
|
CONSTRAINT FK_Дети_Сотрудник |
177 |
|
FOREIGN KEY ([Личный номер сотр.]) |
178 |
|
REFERENCES Сотрудник([Личный номер]) |
179 |
|
ON UPDATE CASCADE |
180 |
|
) |
181 |
|
CREATE TABLE [Место] ( |
182 |
|
[НПП] [код] NOT NULL, |
183 |
|
[Код подразделения] [код] NOT NULL, |
184 |
|
[Личный номер сотр.] [номер] NOT NULL, |
185 |
|
[Дата назначения] DATETIME NOT NULL, |
186 |
|
[Дата увольнения] DATETIME |
187 |
|
CONSTRAINT ch_ДатаНазнач |
188 |
|
CHECK ([Дата назначения] < [Дата увольнения]), |
189 |
|
CONSTRAINT PK_Место |
190 |
|
PRIMARY KEY ([Нпп],[Личный номер сотр.],[Код подразделения]) |
191 |
|
CONSTRAINT FK_Место_Сотрудник |
192 |
|
FOREIGN KEY ([Личный номер сотр.]) |
193 |
|
REFERENCES Сотрудник([Личный номер]) |
194 |
|
ON UPDATE CASCADE, |
195 |
|
CONSTRAINT FK_Место_Подразделение |
196 |
|
FOREIGN KEY ([Код подразделения]) |
197 |
|
REFERENCES Подразделение([Код]) |
198 |
|
ON UPDATE CASCADE |
199 |
|
) |