· 8 years ago · Dec 08, 2017, 03:48 PM
1/* ---------------------------------------------------- */
2/* Generated by Enterprise Architect Version 12.1 */
3/* Created On : 08-dets-2017 17:45:22 */
4/* DBMS : PostgreSQL */
5/* ---------------------------------------------------- */
6
7/* Drop Sequences for Autonumber Columns */
8
9
10
11/* Drop Tables */
12
13DROP TABLE IF EXISTS Isiku_seisundi_liik CASCADE
14;
15
16DROP TABLE IF EXISTS Kliendi_seisundi_liik CASCADE
17;
18
19DROP TABLE IF EXISTS Tootaja_seisundi_liik CASCADE
20;
21
22DROP TABLE IF EXISTS Kauba_seisundi_liik CASCADE
23;
24
25DROP TABLE IF EXISTS Riik CASCADE
26;
27
28DROP TABLE IF EXISTS Amet CASCADE
29;
30
31DROP TABLE IF EXISTS Brand CASCADE
32;
33
34DROP TABLE IF EXISTS Klaviatuur CASCADE
35;
36
37DROP TABLE IF EXISTS Kovaketas CASCADE
38;
39
40DROP TABLE IF EXISTS Op_systeem CASCADE
41;
42
43DROP TABLE IF EXISTS Operatiivmalu CASCADE
44;
45
46DROP TABLE IF EXISTS Resolutsioon CASCADE
47;
48
49DROP TABLE IF EXISTS USB_arv CASCADE
50;
51
52DROP TABLE IF EXISTS Kauba_kategooria_tyyp CASCADE
53;
54
55DROP TABLE IF EXISTS Kauba_kategooria CASCADE
56;
57
58DROP TABLE IF EXISTS Isik CASCADE
59;
60
61DROP TABLE IF EXISTS Klient CASCADE
62;
63
64DROP TABLE IF EXISTS Tootaja CASCADE
65;
66
67DROP TABLE IF EXISTS Kaup CASCADE
68;
69
70DROP TABLE IF EXISTS Kauba_kategooria_omamine CASCADE
71;
72
73DROP TABLE IF EXISTS Arvuti CASCADE
74;
75
76/* Create Tables */
77
78CREATE TABLE Isiku_seisundi_liik
79(
80 isiku_seisundi_liik_kood smallint NOT NULL,
81 nimetus varchar(50) NOT NULL,
82 CONSTRAINT PK_Isiku_seisundi_liik PRIMARY KEY (isiku_seisundi_liik_kood),
83 CONSTRAINT AK_Isiku_seisundi_liik_nimetus UNIQUE (nimetus),
84 CONSTRAINT chk_ISL_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
85)
86;
87
88CREATE TABLE Kliendi_seisundi_liik
89(
90 kliendi_seisundi_liik_kood smallint NOT NULL,
91 nimetus varchar(50) NOT NULL,
92 CONSTRAINT PK_Kliendi_seisundi_liik PRIMARY KEY (kliendi_seisundi_liik_kood),
93 CONSTRAINT AK_Kliendi_seisundi_liik_nimetus UNIQUE (nimetus),
94 CONSTRAINT chk_KlientSL_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
95)
96;
97
98CREATE TABLE Tootaja_seisundi_liik
99(
100 tootaja_seisundi_liik_kood smallint NOT NULL,
101 nimetus varchar(50) NOT NULL,
102 CONSTRAINT PK_Tootaja_seisundi_liik PRIMARY KEY (tootaja_seisundi_liik_kood),
103 CONSTRAINT AK_Tootaja_seisundi_liik_nimetus UNIQUE (nimetus),
104 CONSTRAINT chk_TSL_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
105)
106;
107
108CREATE TABLE Kauba_seisundi_liik
109(
110 kauba_seisundi_liik_kood smallint NOT NULL,
111 nimetus varchar(50) NOT NULL,
112 CONSTRAINT PK_Kauba_seisundi_liik PRIMARY KEY (kauba_seisundi_liik_kood),
113 CONSTRAINT AK_Kauba_seisundi_liik_nimetus UNIQUE (nimetus),
114 CONSTRAINT chk_KaupSL_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
115)
116;
117
118CREATE TABLE Riik
119(
120 riigi_kood char(3) NOT NULL,
121 nimetus varchar(50) NOT NULL,
122 CONSTRAINT PK_Riik PRIMARY KEY (riigi_kood),
123 CONSTRAINT AK_Riik_nimetus UNIQUE (nimetus),
124 CONSTRAINT chk_Riik_riigi_kood_ei_koosne_tyhikutest CHECK (riigi_kood!~'^[[:space:]]*$'),
125 CONSTRAINT chk_Riik_riigi_kood_kolm_suurt2hte CHECK (riigi_kood~'^[A-Z]{3}$'),
126 CONSTRAINT chk_Riik_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
127)
128;
129
130CREATE TABLE Amet
131(
132 ametikood smallint NOT NULL,
133 nimetus varchar(50) NOT NULL,
134 kirjeldus varchar(255) NULL,
135 CONSTRAINT PK_Amet PRIMARY KEY (ametikood),
136 CONSTRAINT AK_Amet_nimetus UNIQUE (nimetus),
137 CONSTRAINT chk_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
138 CONSTRAINT chk_nimetus_ei_koosne_thikutest_ja_pole_tyhi CHECK (kirjeldus!~'^[[:space:]]*$')
139)
140;
141
142CREATE TABLE Brand
143(
144 brand_kood smallint NOT NULL,
145 nimetus varchar(50) NOT NULL,
146 CONSTRAINT PK_Brand PRIMARY KEY (brand_kood),
147 CONSTRAINT AK_Brand_nimetus UNIQUE (nimetus),
148 CONSTRAINT chk_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
149)
150;
151
152CREATE TABLE Klaviatuur
153(
154 klaviatuur_kood char(2) NOT NULL,
155 nimetus varchar(50) NOT NULL,
156 CONSTRAINT PK_Klaviatuur PRIMARY KEY (klaviatuur_kood),
157 CONSTRAINT AK_Klaviatuur_nimetus UNIQUE (nimetus),
158 CONSTRAINT chk_Klaviatuur_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
159 CONSTRAINT chk_Klaviatuur_kood_kaks_v2ikest_t2hte CHECK (klaviatuur_kood~'^[a-z]{2}$')
160)
161;
162
163CREATE TABLE Kovaketas
164(
165 kovaketas_kood smallint NOT NULL,
166 nimetus varchar(50) NOT NULL,
167 CONSTRAINT PK_Kovaketas PRIMARY KEY (kovaketas_kood),
168 CONSTRAINT AK_Kovaketas_nimetus UNIQUE (nimetus),
169 CONSTRAINT chk_Kovaketas_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
170)
171;
172
173CREATE TABLE Op_systeem
174(
175 op_systeem_kood smallint NOT NULL,
176 nimetus varchar(50) NOT NULL,
177 CONSTRAINT PK_Op_systeem PRIMARY KEY (op_systeem_kood),
178 CONSTRAINT AK_Op_systeem_nimetus UNIQUE (nimetus),
179 CONSTRAINT chk_OPsys_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
180)
181;
182
183CREATE TABLE Operatiivmalu
184(
185 operatiivmalu_kood smallint NOT NULL,
186 nimetus varchar(50) NOT NULL,
187 CONSTRAINT PK_Operatiivmalu PRIMARY KEY (operatiivmalu_kood),
188 CONSTRAINT AK_Operatiivmalu_nimetus UNIQUE (nimetus),
189 CONSTRAINT chk_Opmalu_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
190)
191;
192
193CREATE TABLE Resolutsioon
194(
195 resolutsioon_kood smallint NOT NULL,
196 nimetus varchar(50) NOT NULL,
197 laius integer NOT NULL,
198 pikkus integer NOT NULL,
199 CONSTRAINT PK_Resolutsioon PRIMARY KEY (resolutsioon_kood),
200 CONSTRAINT AK_Resolutsioon_nimetus UNIQUE (nimetus),
201 CONSTRAINT chk_R_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
202 CONSTRAINT chk_Resolutsioon_laius_mittenegatiivne CHECK (laius >= 0),
203 CONSTRAINT chk_Resolutsioon_pikkus_mittenegatiivne CHECK (pikkus >= 0)
204)
205;
206
207CREATE TABLE USB_arv
208(
209 USB_arv_kood smallint NOT NULL,
210 nimetus varchar(50) NOT NULL,
211 CONSTRAINT PK_USB_arv PRIMARY KEY (USB_arv_kood),
212 CONSTRAINT AK_USB_arv_nimetus UNIQUE (nimetus),
213 CONSTRAINT chk_USB_arv_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
214 CONSTRAINT chk_USB_arv_kood_mittenegatiivne CHECK (USB_arv_kood >= 0)
215)
216;
217
218CREATE TABLE Kauba_kategooria_tyyp
219(
220 kauba_kategooria_tyyp_kood smallint NOT NULL,
221 nimetus varchar(50) NOT NULL,
222 CONSTRAINT PK_Kauba_kategooria_tyyp PRIMARY KEY (kauba_kategooria_tyyp_kood),
223 CONSTRAINT AK_Kauba_kategooria_tyyp_nimetus UNIQUE (nimetus),
224 CONSTRAINT chk_KKT_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$')
225)
226;
227
228CREATE TABLE Kauba_kategooria
229(
230 kauba_kategooria_kood smallint NOT NULL,
231 kauba_kategooria_tyyp_kood smallint NOT NULL,
232 nimetus varchar(50) NOT NULL,
233 CONSTRAINT PK_Kauba_kategooria PRIMARY KEY (kauba_kategooria_kood),
234 CONSTRAINT AK_Kauba_kategooria_nimetus UNIQUE (nimetus),
235 CONSTRAINT chk_KK_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
236 CONSTRAINT FK_Kauba_kategooria_Kauba_kategooria_tyyp FOREIGN KEY (kauba_kategooria_tyyp_kood) REFERENCES Kauba_kategooria_tyyp (kauba_kategooria_tyyp_kood) ON DELETE No Action ON UPDATE No Action
237)
238;
239CREATE INDEX idxFK_Kauba_kategooria_Kauba_kategooria_tyyp ON Kauba_kategooria (kauba_kategooria_tyyp_kood ASC)
240;
241
242
243CREATE TABLE Isik
244(
245 isik_id serial NOT NULL,
246 e_meil varchar(254) NOT NULL,
247 isikukood varchar(20) NOT NULL,
248 isikukoodi_riik char(3) NOT NULL,
249 isiku_seisundi_liik_kood smallint NOT NULL DEFAULT 1,
250 parool varchar(60) NOT NULL,
251 reg_aeg timestamp NOT NULL DEFAULT LOCALTIMESTAMP(0),
252 synni_kp date NOT NULL,
253 eesnimi varchar(1000) NULL,
254 perenimi varchar(1000) NULL,
255 elukoht varchar(1000) NULL,
256 CONSTRAINT PK_Isik PRIMARY KEY (isik_id),
257 CONSTRAINT AK_Isik_riik_isikukoodi_riik UNIQUE (isikukoodi_riik,isikukood),
258 CONSTRAINT AK_Isik_e_meil UNIQUE (e_meil),
259 CONSTRAINT chk_Isik_eesnimi_voi_perenimi_registreeritud CHECK (eesnimi~'\w+' or perenimi~'\w+'),
260 CONSTRAINT chk_Isik_eesnimi CHECK (eesnimi!~'^[[:space:]]+$' and eesnimi!~'^[[:digit:]]+$),
261 CONSTRAINT chk_Isik_perenimi CHECK (perenimi!~'^[[:space:]]+$' and perenimi!~'^[[:digit:]]+$),
262 CONSTRAINT chk_Isik_synni_kp_vahemik CHECK (synni_kp BETWEEN '1900-01-01' AND '2100-12-31'),
263 CONSTRAINT chk_Isik_synni_kp_ei_ole_peale_reg_aega CHECK (synni_kp <= reg_aeg),
264 CONSTRAINT chk_Isik_elukoht_ei_ole_tyhi_string CHECK (elukoht!~'^[[:space:]]*$'),
265 CONSTRAINT chk_Isik_elukoht_ei_koosne_ainult_numbritest CHECK (elukoht!~'^\d+$'),
266 CONSTRAINT chk_Isik_emeil_formaat CHECK (emeil LIKE '%@%'),
267 CONSTRAINT chk_Isik_reg_aeg_vahemik CHECK (reg_aeg BETWEEN '2010-01-01 00:00:00' AND '2100-12-31 23:59:59'),
268 CONSTRAINT chk_Isik_parool_ei_koosne_tyhikutest_pole_tyhi CHECK (parool!~'^[[:space:]]*$'),
269 CONSTRAINT FK_Isik_Isiku_seisundi_liik FOREIGN KEY (isiku_seisundi_liik_kood) REFERENCES Isiku_seisundi_liik (isiku_seisundi_liik_kood) ON DELETE No Action ON UPDATE Cascade,
270 CONSTRAINT FK_isikukoodi_riik FOREIGN KEY (isikukoodi_riik) REFERENCES Riik (riigi_kood) ON DELETE No Action ON UPDATE Cascade
271)
272;
273CREATE INDEX idxFK_Isik_isiku_seisundi_liik ON Isik (isiku_seisundi_liik_kood ASC)
274;
275
276
277CREATE TABLE Klient
278(
279 isik_id integer NOT NULL,
280 kliendi_seisundi_liik_id smallint NOT NULL DEFAULT 1,
281 on_nous_tylitamisega boolean NOT NULL DEFAULT false,
282 CONSTRAINT PK_Klient PRIMARY KEY (isik_id),
283 CONSTRAINT FK_Klient_Kliendi_seisundi_liik FOREIGN KEY (kliendi_seisundi_liik_id) REFERENCES Kliendi_seisundi_liik (kliendi_seisundi_liik_kood) ON DELETE No Action ON UPDATE Cascade,
284 CONSTRAINT FK_Klient_Isik FOREIGN KEY (isik_id) REFERENCES Isik (isik_id) ON DELETE Cascade ON UPDATE No Action
285)
286;
287CREATE INDEX idxFK_Klient_Kliendi_seisundi_liik ON Klient (kliendi_seisundi_liik_id ASC)
288;
289
290
291CREATE TABLE Tootaja
292(
293 isik_id integer NOT NULL,
294 ametikood smallint NOT NULL,
295 tootaja_seisundi_liik_id smallint NOT NULL DEFAULT 1,
296 CONSTRAINT PK_Tootaja PRIMARY KEY (isik_id),
297 CONSTRAINT FK_Tootaja_Amet FOREIGN KEY (ametikood) REFERENCES Amet (ametikood) ON DELETE No Action ON UPDATE Cascade,
298 CONSTRAINT FK_Tootaja_Tootaja_seisundi_liik FOREIGN KEY (tootaja_seisundi_liik_id) REFERENCES Tootaja_seisundi_liik (tootaja_seisundi_liik_kood) ON DELETE No Action ON UPDATE Cascade,
299 CONSTRAINT FK_Tootaja_Isik FOREIGN KEY (isik_id) REFERENCES Isik (isik_id) ON DELETE Cascade ON UPDATE No Action
300)
301;
302CREATE INDEX idxFK_Tootaja_Amet ON Tootaja (ametikood ASC)
303;
304CREATE INDEX idxFK_Tootaja_Tootaja_seisundi_liik ON Tootaja (tootaja_seisundi_liik_id ASC)
305;
306
307
308CREATE TABLE Kaup
309(
310 kauba_kood integer NOT NULL,
311 nimetus varchar(50) NOT NULL,
312 registreerija_id integer NOT NULL,
313 brand_kood smallint NOT NULL,
314 hind decimal(19,2) NOT NULL,
315 pilt varchar(300) NOT NULL,
316 reg_aeg timestamp NOT NULL DEFAULT LOCALTIMESTAMP(0),
317 kirjeldus varchar(1000) NOT NULL,
318 kauba_seisundi_liik_kood smallint NOT NULL DEFAULT 1,
319 CONSTRAINT PK_Kaup PRIMARY KEY (kauba_kood),
320 CONSTRAINT AK_Kaup_nimetus UNIQUE (nimetus),
321 CONSTRAINT chk_Kaup_nimetus_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (nimetus!~'^[[:space:]]*$'),
322 CONSTRAINT chk_Kaup_reg_aeg_vahemik CHECK (reg_aeg BETWEEN '2010-01-01 00:00:00' AND '2100-12-31 23:59:59'),
323 CONSTRAINT chk_Kaup_hind_on_positiivne CHECK (hind > 0),
324 CONSTRAINT chk_Kaup_pilt_ei_koosne_tyhikutest_ja_pole_tyhi CHECK (pilt!~'^[[:space:]]*$'),
325 CONSTRAINT chk_Kaup_pilt_url_formaat CHECK (pilt~'^((https?):\/\/)w{3}\.\w+\.\w+'),
326 CONSTRAINT chk_Kaup_kirjeldus_ei_koosne_ainult_numbritest CHECK (kirjeldus!~'^\d+$'),
327 CONSTRAINT FK_Kaup_Brand FOREIGN KEY (brand_kood) REFERENCES Brand (brand_kood) ON DELETE No Action ON UPDATE Cascade,
328 CONSTRAINT FK_Kaup_Kauba_seisundi_liik FOREIGN KEY (kauba_seisundi_liik_kood) REFERENCES Kauba_seisundi_liik (kauba_seisundi_liik_kood) ON DELETE No Action ON UPDATE Cascade,
329 CONSTRAINT FK_Kaup_Tootaja FOREIGN KEY (registreerija_id) REFERENCES Tootaja (isik_id) ON DELETE No Action ON UPDATE No Action
330)
331;
332CREATE INDEX idxFK_Kaup_Isik ON Kaup (registreerija_id ASC)
333;
334CREATE INDEX idxFK_Kaup_Brand ON Kaup (brand_kood ASC)
335;
336CREATE INDEX idxFK_Kaup_Kauba_seisundi_liik ON Kaup (kauba_seisundi_liik_kood ASC)
337;
338
339
340CREATE TABLE Kauba_kategooria_omamine
341(
342 kauba_kood integer NOT NULL,
343 kauba_kategooria_kood smallint NOT NULL,
344 CONSTRAINT PK_Kauba_kategooria_omamine PRIMARY KEY (kauba_kood,kauba_kategooria_kood),
345 CONSTRAINT FK_Kauba_kategooria_omamine_Kaup FOREIGN KEY (kauba_kood) REFERENCES Kaup (kauba_kood) ON DELETE Cascade ON UPDATE Cascade,
346 CONSTRAINT FK_Kauba_kategooria_omamine_Kauba_kategooria FOREIGN KEY (kauba_kategooria_kood) REFERENCES Kauba_kategooria (kauba_kategooria_kood) ON DELETE Cascade ON UPDATE Cascade
347)
348;
349CREATE INDEX idxFK_Kauba_kategooria_omamine_Kauba_kategooria ON Kauba_kategooria_omamine (kauba_kategooria_kood ASC)
350;
351
352
353CREATE TABLE Arvuti
354(
355 kauba_kood integer NOT NULL,
356 kovaketas_kood smallint NOT NULL,
357 operatiivmalu_kood smallint NOT NULL,
358 klaviatuur_kood char(2) NOT NULL,
359 op_systeem_kood smallint NOT NULL,
360 resolutsioon_kood smallint NOT NULL,
361 USB_arv_kood smallint NOT NULL,
362 kaal decimal(2,1) NOT NULL,
363 on_bluetooth boolean NOT NULL DEFAULT false,
364 on_dvi boolean NOT NULL DEFAULT false,
365 on_ethernet boolean NOT NULL DEFAULT false,
366 on_hdmi boolean NOT NULL DEFAULT false,
367 on_sdkaart boolean NOT NULL DEFAULT false,
368 on_sormejalje_lugeja boolean NOT NULL DEFAULT false,
369 on_vga boolean NOT NULL DEFAULT false,
370 on_wifi boolean NOT NULL DEFAULT false,
371 CONSTRAINT PK_Arvuti PRIMARY KEY (kauba_kood),
372 CONSTRAINT chk_kaal_mittenegatiivne CHECK (kaal >= 0),
373 CONSTRAINT FK_Arvuti_Klaviatuur FOREIGN KEY (klaviatuur_kood) REFERENCES Klaviatuur (klaviatuur_kood) ON DELETE No Action ON UPDATE Cascade,
374 CONSTRAINT FK_Arvuti_Kovaketas FOREIGN KEY (kovaketas_kood) REFERENCES Kovaketas (kovaketas_kood) ON DELETE No Action ON UPDATE Cascade,
375 CONSTRAINT FK_Arvuti_Op_systeem FOREIGN KEY (op_systeem_kood) REFERENCES Op_systeem (op_systeem_kood) ON DELETE No Action ON UPDATE Cascade,
376 CONSTRAINT FK_Arvuti_Operatiivmalu FOREIGN KEY (operatiivmalu_kood) REFERENCES Operatiivmalu (operatiivmalu_kood) ON DELETE No Action ON UPDATE Cascade,
377 CONSTRAINT FK_Arvuti_Resolutsioon FOREIGN KEY (resolutsioon_kood) REFERENCES Resolutsioon (resolutsioon_kood) ON DELETE No Action ON UPDATE Cascade,
378 CONSTRAINT FK_Arvuti_USB_arv FOREIGN KEY (USB_arv_kood) REFERENCES USB_arv (USB_arv_kood) ON DELETE No Action ON UPDATE Cascade,
379 CONSTRAINT FK_Arvuti_Kaup FOREIGN KEY (kauba_kood) REFERENCES Kaup (kauba_kood) ON DELETE Cascade ON UPDATE Cascade
380)
381;
382CREATE INDEX idxFK_Arvuti_Klaviatuur ON Arvuti (klaviatuur_kood ASC)
383;
384CREATE INDEX idxFK_Arvuti_Kovaketas ON Arvuti (kovaketas_kood ASC)
385;
386CREATE INDEX idxFK_Arvuti_Op_systeem ON Arvuti (op_systeem_kood ASC)
387;
388CREATE INDEX idxFK_Arvuti_Operatiivmalu ON Arvuti (operatiivmalu_kood ASC)
389;
390CREATE INDEX idxFK_Arvuti_Resolutsioon ON Arvuti (resolutsioon_kood ASC)
391;
392CREATE INDEX idxFK_Arvuti_USB_arv ON Arvuti (USB_arv_kood ASC)
393;
394
395
396/* Create Table Comments, Sequences for Autonumber Columns */