- •2005.552800.Бд.Кп.Пз т28-320.13
- •5 Проектирование реляционной и внешних моделей
- •5.1 Устранение категорий и явных связей
- •5.3 Разработка моделей внешних представлений
- •5.4 Вывод
- •6 Разработка sql-кода базы данных
- •6.1 Sql-код создания таблиц
- •6.2 Sql-код создания триггеров базы данных
- •6.3 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 |
|
CREATE TABLE Сотрудник ( |
2 |
|
[Личный номер] [INT] (6) NOT NULL, |
3 |
|
[ФИО] [VARCHAR (40) NOT NULL, |
4 |
|
[Паспортные данные] [INTEGER (11) NOT NULL, |
5 |
|
[Телефон] [INTEGER (6) NOT NULL, |
6 |
|
[Семейное положение] [BIT] NOT NULL, |
7 |
|
[Образование] [VARCHAR (30) NOT NULL, |
8 |
|
[Зарплата] [BIGINT] NOT NULL, |
9 |
|
[Дата рождения] [DATE NOT NULL, |
10 |
|
[Группа крови] [INTEGER (2) NOT NULL, |
11 |
|
[Код звания] [INTEGER (3) NOT NULL, |
12 |
|
[Код должности] [INTEGER (3) NOT NULL, |
13 |
|
CONSTRAINT PK_Сотрудник |
14 |
|
PRIMARY KEY ([Личный номер]), |
15 |
|
CONSTRAINT FK_Сотрудник_Звание |
16 |
|
FOREIGN KEY ([Код звания]) |
17 |
|
REFERENCES Звание([Код]) |
18 |
|
ON UPDATE CASCADE |
19 |
|
ON DELETE RESTRICTED, |
20 |
|
CONSTRAINT FK_Сотрудник_Должность |
21 |
|
FOREIGN KEY ([Код Должности]) |
22 |
|
REFERENCES Должность([Код]) |
23 |
|
ON UPDATE CASCADE |
24 |
|
ON DELETE RESTRICTED, |
25 |
|
CONSTRAINT UN_ФИО |
26 |
|
UNIQUE (ФИО), |
27 |
|
CONSTRAINT UN_Пасп |
28 |
|
UNIQUE (Паспортные данные), |
29 |
|
CONSTRAINT CH_ФИО |
30 |
|
CHECK (ФИО BETWEEN “А” AND “яя”), |
31 |
|
CONSTRAINT CH_ГрКрови |
32 |
|
CHECK (Группа крови (BETWEEN 1 AND 4) OR “+” OR “-“), |
33 |
|
CONSTRAINT CH_Дата_рождения |
34 |
|
CHECK ([Дата рождения]- GETDATE >=20 AND [Дата рождения]- GETDATE <=100) |
35 |
|
}; |
36 |
|
|
37 |
|
CREATE TABLE [Имущество] ( |
38 |
|
[Инвентарный номер] INTEGER (6) NOT NULL, |
39 |
|
[Название] INTEGER (6) NOT NULL, |
40 |
|
[Личный номер] INTEGER (6) NOT NULL, |
41 |
|
CONSTRAINT PK_ИнвНомер |
42 |
|
PRIMARY KEY ([Инвентарный номер]), |
43 |
|
CONSTRAINT FK_Имущество_Сотрудник |
44 |
|
FOREIGN KEY ([Личный номер]) |
45 |
|
REFERENCES Сотрудник ([Личный номер]) |
46 |
|
ON UPDATE CASCADE |
47 |
|
ON DELETE RESTRICTED |
48 |
|
); |
49 |
|
CREATE TABLE [Место] ( |
50 |
|
[Нпп] COUNTER NOT NULL, |
51 |
|
[Код подразделения] INTEGER (6) NOT NULL, |
52 |
|
[Личный номер] INTEGER (6) NOT NULL, |
53 |
|
[Дата назначения] DATE NOT NULL, |
54 |
|
[Дата увольнения] DATE, |
55 |
|
CONSTRAINT PK_Нпп |
56 |
|
PRIMARY KEY ([Нпп]), |
57 |
|
CONSTRAINT FK_Место_Подразделение |
58 |
|
FOREIGN KEY ([Код подразделения]) |
59 |
|
REFERENCES Подразделение ([Код]) |
60 |
|
ON UPDATE CASCADE |
61 |
|
ON DELETE RESTRICTED |
62 |
|
CONSTRAINT FK_Место_Сотрудник |
63 |
|
FOREIGN KEY ([Личный номер]) |
64 |
|
REFERENCES Сотрудник ([Личный номер]) |
65 |
|
ON UPDATE CASCADE |
66 |
|
ON DELETE CASCADE |
67 |
|
CONSTRAINT CH_Дата_назначения |
68 |
|
CHECK ([Дата назначения]- GETDATE <=0) |
69 |
|
CONSTRAINT CH_Дата_увольнения |
70 |
|
CHECK ([Дата увольнения]- GETDATE <=0) |
71 |
|
); |
72 |
|
CREATE TABLE Подразделение ( |
73 |
|
[Код] INTEGER (6) NOT NULL, |
74 |
|
[Название] VARCHAR (30) NOT NULL, |
75 |
|
CONSTRAINT PK_Подразделение |
76 |
|
PRIMARY KEY ([Код подразделения]) |
77 |
|
); |
78 |
|
CREATE TABLE Должность ( |
79 |
|
[Код] INTEGER (6) NOT NULL, |
80 |
|
[Название] VARCHAR (30) NOT NULL, |
81 |
|
CONSTRAINT PK_Должность |
82 |
|
PRIMARY KEY ([Код]) |
83 |
|
); |
84 |
|
|
85 |
|
CREATE TABLE [Дети] ( |
86 |
|
[Личный номер] INTEGER (6) NOT NULL, |
87 |
|
[Нпп] COUNTER NOT NULL, |
88 |
|
[Дата рождения] DATE NOT NULL, |
89 |
|
[Пол] BIT NOT NULL, |
90 |
|
CONSTRAINT PK_Дети |
91 |
|
PRIMARY KEY ([Нпп]), |
92 |
|
CONSTRAINT FK_Дети_Сотрудник |
93 |
|
FOREIGN KEY ([Личный номер]) |
94 |
|
REFERENCES Сотрудник ([Личный номер]) |
95 |
|
ON UPDATE CASCADE |
96 |
|
ON DELETE CASCADE, |
97 |
|
CONSTRAINT CH_Дата |
98 |
|
CHECK ([Дата ухода]- GETDATE >=0) |
99 |
|
); |
100 |
|
CREATE TABLE Дежурство ( |
101 |
|
[Нпп дежурства] COUNTER NOT NULL, |
102 |
|
[Личный номер дежурного] INTEGER (6) NOT NULL, |
103 |
|
[Нпп наряда] INTEGER (6) NOT NULL, |
104 |
|
[Дата] DATA NOT NULL, |
105 |
|
CONSTRAINT PK_Дежурство |
106 |
|
PRIMARY KEY ([Нпп дежурства]), |
107 |
|
CONSTRAINT FK_Дежурство_Сотрудник |
108 |
|
FOREIGN KEY ([Личный номер дежурного]) |
109 |
|
REFERENCES Сотрудник ([Личный номер]) |
110 |
|
ON UPDATE CASCADE |
111 |
|
ON DELETE CASCADE, |
112 |
|
CONSTRAINT FK_Дежурство_Наряд |
113 |
|
FOREIGN KEY ([Нпп наряда]) |
114 |
|
REFERENCES Наряд ([Нпп]) |
115 |
|
ON UPDATE CASCADE |
116 |
|
ON DELETE CASCADE, |
117 |
|
CONSTRAINT UN_Дата |
118 |
|
UNIQUE (Дата), |
119 |
|
); |
120 |
|
CREATE TABLE Наряд ( |
121 |
|
[Нпп] COUNTER NOT NULL, |
122 |
|
[Номер группы] INTEGER (3) NOT NULL, |
123 |
|
CONSTRAINT PK_Наряд |
124 |
|
PRIMARY KEY ([Нпп]) |
125 |
|
CONSTRAINT FK_Наряд_Группа |
126 |
|
FOREIGN KEY ([Номер группы]) |
127 |
|
REFERENCES Группа ([Номер группы]) |
128 |
|
ON UPDATE CASCADE |
129 |
|
ON DELETE CASCADE, |
130 |
|
); |
131 |
|
CREATE TABLE Вызов ( |
132 |
|
[Нпп вызова] COUNTER NOT NULL, |
133 |
|
[Личный номер дежурного] INTEGER (6) NOT NULL, |
134 |
|
[Номер опер.группы] INTEGER NOT NULL, |
135 |
|
[Телефон звонившего] INTEGER (10) NOT NULL, |
136 |
|
[Дата вызова] DATE NOT NULL, |
137 |
|
[Время вызова] DATE NOT NULL, |
138 |
|
[Причина] VARCHAR (50) NOT NULL, |
139 |
|
[Адрес] VARCHAR (100) NOT NULL, |
140 |
|
[Степень риска] INTEGER (1) NOT NULL, |
141 |
|
CONSTRAINT PK_Вызов |
142 |
|
PRIMARY KEY ([Нпп вызова]), |
143 |
|
CONSTRAINT FK_Вызов_Сотрудник |
144 |
|
FOREIGN KEY ([Личный номер дежурного]) |
145 |
|
REFERENCES Сотрудник ([Личный номер]) |
146 |
|
ON UPDATE CASCADE |
147 |
|
ON DELETE CASCADE, |
148 |
|
CONSTRAINT FK_Вызов_Группа |
149 |
|
FOREIGN KEY ([Номер опер.группы]) |
150 |
|
REFERENCES Группа ([Номер группы]) |
151 |
|
ON UPDATE CASCADE |
152 |
|
ON DELETE RESTRICTED |
153 |
|
CONSTRAINT FK_Вызов_Звонивший |
154 |
|
FOREIGN KEY ([Телефон звонившего]) |
155 |
|
REFERENCES Звонивший ([Телефон]) |
156 |
|
ON UPDATE CASCADE |
157 |
|
ON DELETE CASCADE |
158 |
|
); |
159 |
|
CREATE TABLE Звонивший ( |
160 |
|
[Телефон] INTEGER (10) NOT NULL, |
161 |
|
[ФИО] VARCHAR (40), |
162 |
|
CONSTRAINT PK_Звонивший |
163 |
|
PRIMARY KEY ([Телефон]), |
164 |
|
CONSTRAINT CH_ФИО |
165 |
|
CHECK (ФИО BETWEEN “А” AND “яя”), |
166 |
|
); |
167 |
|
CREATE TABLE [Отчет] ( |
168 |
|
[Нпп вызова] INTEGER NOT NULL, |
169 |
|
[Номер протокола] INTEGER (6) NOT NULL, |
170 |
|
[Мероприятия] МЕМО NOT NULL, |
171 |
|
[Примечание] МЕМО, |
172 |
|
CONSTRAINT PK_Отчет |
173 |
|
PRIMARY KEY (Номер протокола), |
174 |
|
CONSTRAINT FK_Отчет_Вызов |
175 |
|
FOREIGN KEY ([Нпп вызова]) |
176 |
|
REFERENCES Вызов ([Нпп вызова]) |
177 |
|
ON UPDATE CASCADE |
178 |
|
ON DELETE CASCADE, |
179 |
|
); |