DatabaseCreation: ddl.sql

File ddl.sql, 18.2 KB (added by 231018, 24 hours ago)

ddl file for adding tables

Line 
1CREATE TABLE Zona
2(
3 zona_id INTEGER GENERATED ALWAYS AS IDENTITY,
4 ime VARCHAR(100),
5 dozvolena_brzina INTEGER,
6 opstina VARCHAR(100),
7 PRIMARY KEY (zona_id),
8 CONSTRAINT CHK_Zona_Brzina CHECK (dozvolena_brzina IS NULL OR dozvolena_brzina > 0),
9 CONSTRAINT CHK_Zona_Ime CHECK (ime IS NULL OR TRIM(ime) <> ''),
10 CONSTRAINT CHK_Zona_Opstina CHECK (opstina IS NULL OR TRIM(opstina) <> '')
11);
12
13CREATE TABLE Lokacija
14(
15 lokacija_id INTEGER GENERATED ALWAYS AS IDENTITY,
16 ulica VARCHAR(100),
17 latitude DECIMAL(9, 6),
18 longitude DECIMAL(9, 6),
19 zona_id INTEGER,
20 PRIMARY KEY (lokacija_id),
21 CONSTRAINT FK_Lokacija_Zona
22 FOREIGN KEY (zona_id) REFERENCES Zona (zona_id) ON DELETE SET NULL ON UPDATE CASCADE,
23 CONSTRAINT CHK_Lokacija_Ulica
24 CHECK (ulica IS NULL OR TRIM(ulica) <> ''),
25 CONSTRAINT CHK_Lokacija_Lat
26 CHECK (latitude IS NULL OR latitude BETWEEN -90 AND 90),
27 CONSTRAINT CHK_Lokacija_Long
28 CHECK (longitude IS NULL OR longitude BETWEEN -180 AND 180)
29);
30
31CREATE TABLE TipKamera
32(
33 tip_kamera_id INTEGER GENERATED ALWAYS AS IDENTITY,
34 ime VARCHAR(100),
35 opis VARCHAR(255),
36 max_opseg INTEGER,
37 multifunkcionalna BOOLEAN,
38 PRIMARY KEY (tip_kamera_id),
39 CONSTRAINT CHK_TipKamera_Ime CHECK (ime IS NULL OR TRIM(ime) <> ''),
40 CONSTRAINT CHK_TipKamera_MaxOpseg CHECK (max_opseg IS NULL OR max_opseg > 0)
41);
42
43CREATE TABLE Kamera
44(
45 kamera_id INTEGER GENERATED ALWAYS AS IDENTITY,
46 datum_instalacija DATE DEFAULT CURRENT_DATE,
47 status VARCHAR(100) DEFAULT 'aktivna',
48 seriski_broj VARCHAR(100),
49 datum_posleden_servis DATE,
50 lokacija_id INTEGER,
51 tip_kamera_id INTEGER,
52 PRIMARY KEY (kamera_id),
53 CONSTRAINT FK_Kamera_Lokacija
54 FOREIGN KEY (lokacija_id) REFERENCES Lokacija (lokacija_id)
55 ON DELETE SET NULL
56 ON UPDATE CASCADE,
57 CONSTRAINT FK_Kamera_TipKamera
58 FOREIGN KEY (tip_kamera_id) REFERENCES TipKamera (tip_kamera_id) ON DELETE RESTRICT ON UPDATE CASCADE,
59 CONSTRAINT UQ_Kamera_SeriskiBroj UNIQUE (seriski_broj),
60 CONSTRAINT CHK_Kamera_Status CHECK (status IS NULL OR status IN ('aktivna', 'neaktivna', 'servis')),
61 CONSTRAINT CHK_Kamera_DatumInstalacija CHECK (datum_instalacija IS NULL OR datum_instalacija <= CURRENT_DATE),
62 CONSTRAINT CHK_Kamera_SeriskiBroj CHECK (seriski_broj IS NULL OR TRIM(seriski_broj) <> ''),
63 CONSTRAINT CHK_Kamera_PosledenServis CHECK (
64 datum_posleden_servis IS NULL OR datum_posleden_servis <= CURRENT_DATE
65 )
66);
67
68CREATE TABLE MrezhnaKonekcija
69(
70 mrezna_konekcija_id INTEGER GENERATED ALWAYS AS IDENTITY,
71 ime VARCHAR(50),
72 opis VARCHAR(100),
73 PRIMARY KEY (mrezna_konekcija_id),
74 CONSTRAINT CHK_MrezhnaKonekcija_Ime CHECK (ime IS NULL OR TRIM(ime) <> '')
75);
76
77CREATE TABLE MrezhnaKonekcijaKamera
78(
79 mrezna_konekcija_id INTEGER,
80 kamera_id INTEGER,
81 PRIMARY KEY (mrezna_konekcija_id, kamera_id),
82 CONSTRAINT FK_MKK_MrezhnaKonekcija
83 FOREIGN KEY (mrezna_konekcija_id) REFERENCES MrezhnaKonekcija (mrezna_konekcija_id) ON DELETE CASCADE ON UPDATE CASCADE,
84 CONSTRAINT FK_MKK_Kamera
85 FOREIGN KEY (kamera_id) REFERENCES Kamera (kamera_id)
86 ON DELETE CASCADE
87 ON UPDATE CASCADE
88);
89
90CREATE TABLE Snimka
91(
92 snimka_id INTEGER GENERATED ALWAYS AS IDENTITY,
93 datum DATE DEFAULT CURRENT_DATE,
94 url_adresa VARCHAR(255),
95 arhivirana BOOLEAN DEFAULT FALSE,
96 datum_arhiviranje DATE,
97 kamera_id INTEGER,
98 PRIMARY KEY (snimka_id),
99 CONSTRAINT FK_Snimka_Kamera
100 FOREIGN KEY (kamera_id) REFERENCES Kamera (kamera_id) ON DELETE CASCADE ON UPDATE CASCADE,
101 CONSTRAINT CHK_Snimka_Url CHECK (url_adresa IS NULL OR TRIM(url_adresa) <> ''),
102 CONSTRAINT CHK_Snimka_Datum CHECK (datum IS NULL OR datum <= CURRENT_DATE),
103 CONSTRAINT CHK_Snimka_Arhiviranje CHECK (
104 datum_arhiviranje IS NULL OR datum_arhiviranje >= datum
105 )
106);
107
108CREATE TABLE Slika
109(
110 slika_id INTEGER GENERATED ALWAYS AS IDENTITY,
111 url VARCHAR(255),
112 format VARCHAR(100),
113 golemina INTEGER,
114 datum_kreiranje DATE,
115 snimka_id INTEGER,
116 PRIMARY KEY (slika_id),
117 CONSTRAINT FK_Slika_Snimka
118 FOREIGN KEY (snimka_id) REFERENCES Snimka (snimka_id)
119 ON DELETE CASCADE
120 ON UPDATE CASCADE,
121 CONSTRAINT CHK_Slika_Url CHECK (url IS NULL OR TRIM(url) <> ''),
122 CONSTRAINT CHK_Slika_Golemina CHECK (golemina IS NULL OR golemina > 0),
123 CONSTRAINT CHK_Slika_Format CHECK (format IS NULL OR format IN ('jpg', 'jpeg', 'png', 'bmp', 'gif')),
124 CONSTRAINT CHK_Slika_Datum CHECK (datum_kreiranje IS NULL OR datum_kreiranje <= CURRENT_DATE)
125);
126
127CREATE TABLE TipPrekrsok
128(
129 tip_prekrsok_id INTEGER GENERATED ALWAYS AS IDENTITY,
130 ime VARCHAR(100),
131 iznos INTEGER,
132 PRIMARY KEY (tip_prekrsok_id),
133 CONSTRAINT CHK_TipPrekrsok_Ime CHECK (ime IS NULL OR TRIM(ime) <> ''),
134 CONSTRAINT CHK_TipPrekrsok_Iznos CHECK (iznos IS NULL OR iznos > 0)
135);
136
137CREATE TABLE Kazna
138(
139 kazna_id INTEGER GENERATED ALWAYS AS IDENTITY,
140 datum DATE DEFAULT CURRENT_DATE,
141 status INTEGER DEFAULT 0,
142 rok_na_plakanje DATE,
143 iznos_za_plakanje INTEGER,
144 PRIMARY KEY (kazna_id),
145 CONSTRAINT CHK_Kazna_Status CHECK (status IS NULL OR status IN (0, 1, 2)),
146 CONSTRAINT CHK_Kazna_Rok CHECK (rok_na_plakanje IS NULL OR datum IS NULL OR rok_na_plakanje >= datum),
147 CONSTRAINT CHK_Kazna_Iznos CHECK (iznos_za_plakanje IS NULL OR iznos_za_plakanje > 0)
148);
149
150CREATE TABLE Prekrsok
151(
152 prekrsok_id INTEGER GENERATED ALWAYS AS IDENTITY,
153 opis VARCHAR(500),
154 vreme TIME,
155 status INTEGER DEFAULT 0,
156 datum DATE,
157 detektirana_brzina INTEGER,
158 tip_prekrsok_id INTEGER,
159 kamera_id INTEGER,
160 kazna_id INTEGER,
161 PRIMARY KEY (prekrsok_id),
162 CONSTRAINT FK_Prekrsok_TipPrekrsok
163 FOREIGN KEY (tip_prekrsok_id) REFERENCES TipPrekrsok (tip_prekrsok_id)
164 ON DELETE RESTRICT
165 ON UPDATE CASCADE,
166 CONSTRAINT FK_Prekrsok_Kamera
167 FOREIGN KEY (kamera_id) REFERENCES Kamera (kamera_id)
168 ON DELETE RESTRICT
169 ON UPDATE CASCADE,
170 CONSTRAINT FK_Prekrsok_Kazna
171 FOREIGN KEY (kazna_id) REFERENCES Kazna (kazna_id)
172 ON DELETE RESTRICT
173 ON UPDATE CASCADE,
174 CONSTRAINT CHK_Prekrsok_Status CHECK (status IS NULL OR status IN (0, 1, 2, 3)),
175 CONSTRAINT CHK_Prekrsok_Datum CHECK (datum IS NULL OR datum <= CURRENT_DATE),
176 CONSTRAINT CHK_Prekrsok_Brzina CHECK (detektirana_brzina IS NULL OR detektirana_brzina > 0)
177);
178
179CREATE TABLE Plakanje
180(
181 plakanje_id INTEGER GENERATED ALWAYS AS IDENTITY,
182 metod INTEGER DEFAULT 1,
183 datum DATE DEFAULT CURRENT_DATE,
184 kazna_id INTEGER UNIQUE,
185 PRIMARY KEY (plakanje_id),
186 CONSTRAINT FK_Plakanje_Kazna
187 FOREIGN KEY (kazna_id) REFERENCES Kazna (kazna_id)
188 ON DELETE RESTRICT
189 ON UPDATE CASCADE,
190 CONSTRAINT CHK_Plakanje_Metod CHECK (metod IS NULL OR metod IN (1, 2, 3)),
191 CONSTRAINT CHK_Plakanje_Datum CHECK (datum IS NULL OR datum <= CURRENT_DATE)
192);
193
194--
195-- 1-kesh
196-- 2-kartichka
197-- 3-online
198
199
200CREATE TABLE Gragjanin
201(
202 embg CHAR(13) PRIMARY KEY,
203 ime VARCHAR(100),
204 prezime VARCHAR(100),
205 adresa VARCHAR(150),
206 grad VARCHAR(100),
207 telefonski_broj VARCHAR(20),
208 datum_ragjanje DATE,
209
210 CONSTRAINT CHK_Gragjanin_Embg CHECK (embg > 0),
211 CONSTRAINT CHK_Gragjanin_Ime CHECK (ime IS NULL OR TRIM(ime) <> ''),
212 CONSTRAINT CHK_Gragjanin_Prezime CHECK (prezime IS NULL OR TRIM(prezime) <> ''),
213 CONSTRAINT CHK_Gragjanin_Adresa CHECK (adresa IS NULL OR TRIM(adresa) <> ''),
214 CONSTRAINT CHK_Gragjanin_Grad CHECK (grad IS NULL OR TRIM(grad) <> ''),
215 CONSTRAINT CHK_Gragjanin_Telefon CHECK (telefonski_broj IS NULL OR TRIM(telefonski_broj) <> ''),
216 CONSTRAINT CHK_Gragjanin_Datum CHECK (datum_ragjanje IS NULL OR datum_ragjanje <= CURRENT_DATE)
217);
218
219CREATE TABLE Sopstvenik
220(
221 embg CHAR(13),
222 PRIMARY KEY (embg),
223 CONSTRAINT FK_Sopstvenik_Gragjanin
224 FOREIGN KEY (embg) REFERENCES Gragjanin (embg) ON DELETE RESTRICT ON UPDATE CASCADE
225);
226
227CREATE TABLE Vozacka
228(
229 vozacka_id INTEGER GENERATED ALWAYS AS IDENTITY,
230 vozacki_broj BIGINT,
231 datum_izdavanje DATE,
232 datum_istekuvanje DATE,
233 status INTEGER,
234 embg CHAR(13) UNIQUE,
235 PRIMARY KEY (vozacka_id),
236 CONSTRAINT FK_Vozacka_Sopstvenik
237 FOREIGN KEY (embg) REFERENCES Sopstvenik (embg) ON DELETE RESTRICT ON UPDATE CASCADE,
238 CONSTRAINT CHK_Vozacka_Broj CHECK (vozacki_broj IS NULL OR vozacki_broj > 0),
239 CONSTRAINT CHK_Vozacka_Status CHECK (status IS NULL OR status IN (0, 1, 2)),
240 CONSTRAINT CHK_Vozacka_Datumi CHECK (
241 datum_izdavanje IS NULL OR datum_istekuvanje IS NULL OR datum_istekuvanje > datum_izdavanje
242 )
243);
244
245CREATE TABLE Kategorija
246(
247 kategorija_id INTEGER GENERATED ALWAYS AS IDENTITY,
248 ime VARCHAR(100),
249 opis VARCHAR(255),
250 PRIMARY KEY (kategorija_id),
251 CONSTRAINT CHK_Kategorija_Ime CHECK (ime IS NULL OR TRIM(ime) <> ''),
252 CONSTRAINT CHK_Kategorija_Opis CHECK (opis IS NULL OR TRIM(opis) <> '')
253);
254
255CREATE TABLE Vozacka_Kategorija
256(
257 vozacka_id INTEGER,
258 kategorija_id INTEGER,
259 PRIMARY KEY (vozacka_id, kategorija_id),
260 CONSTRAINT FK_VK_Vozacka
261 FOREIGN KEY (vozacka_id) REFERENCES Vozacka (vozacka_id) ON DELETE CASCADE ON UPDATE CASCADE,
262 CONSTRAINT FK_VK_Kategorija
263 FOREIGN KEY (kategorija_id) REFERENCES Kategorija (kategorija_id)
264 ON DELETE CASCADE
265 ON UPDATE CASCADE
266);
267
268CREATE TABLE Tip
269(
270 tip_id INTEGER GENERATED ALWAYS AS IDENTITY,
271 ime VARCHAR(100),
272 PRIMARY KEY (tip_id),
273 CONSTRAINT CHK_Tip_Ime CHECK (ime IS NULL OR TRIM(ime) <> '')
274);
275
276CREATE TABLE Vozilo
277(
278 vozilo_id INTEGER GENERATED ALWAYS AS IDENTITY,
279 marka VARCHAR(100),
280 broj_sasija BIGINT,
281 model VARCHAR(100),
282 registarska_oznaka VARCHAR(20),
283 boja VARCHAR(50),
284 tip_id INTEGER,
285 PRIMARY KEY (vozilo_id),
286 CONSTRAINT FK_Vozilo_Tip
287 FOREIGN KEY (tip_id) REFERENCES Tip (tip_id) ON DELETE SET NULL ON UPDATE CASCADE,
288 CONSTRAINT UQ_Vozilo_Registarska UNIQUE (registarska_oznaka),
289 CONSTRAINT CHK_Vozilo_Marka CHECK (marka IS NULL OR TRIM(marka) <> ''),
290 CONSTRAINT CHK_Vozilo_Model CHECK (model IS NULL OR TRIM(model) <> ''),
291 CONSTRAINT CHK_Vozilo_Boja CHECK (boja IS NULL OR TRIM(boja) <> ''),
292 CONSTRAINT CHK_Vozilo_Registarska CHECK (registarska_oznaka IS NULL OR TRIM(registarska_oznaka) <> ''),
293 CONSTRAINT CHK_Vozilo_BrojSasija CHECK (broj_sasija IS NULL OR broj_sasija > 0)
294);
295
296CREATE TABLE Registracija
297(
298 registracija_id INTEGER GENERATED ALWAYS AS IDENTITY,
299 broj INTEGER,
300 mesto INTEGER,
301 datum DATE,
302 datum_istekuvanje DATE,
303 sopstvenikEmbg BIGINT,
304 Vozilovozilo_id INTEGER,
305 PRIMARY KEY (registracija_id),
306 CONSTRAINT FK_Registracija_Sopstvenik
307 FOREIGN KEY (sopstvenikEmbg) REFERENCES Sopstvenik (embg)
308 ON DELETE RESTRICT
309 ON UPDATE CASCADE,
310 CONSTRAINT FK_Registracija_Vozilo
311 FOREIGN KEY (Vozilovozilo_id) REFERENCES Vozilo (vozilo_id) ON DELETE RESTRICT ON UPDATE CASCADE,
312 CONSTRAINT CHK_Registracija_Broj CHECK (broj IS NULL OR broj > 0),
313 CONSTRAINT CHK_Registracija_Mesto CHECK (mesto IS NULL OR mesto > 0),
314 CONSTRAINT CHK_Registracija_Datum CHECK (datum IS NULL OR datum <= CURRENT_DATE),
315 CONSTRAINT CHK_Registracija_Istek CHECK (
316 datum_istekuvanje IS NULL OR datum IS NULL OR datum_istekuvanje >= datum
317 )
318);
319
320CREATE TABLE Korisnik
321(
322 korisnik_id INTEGER GENERATED ALWAYS AS IDENTITY,
323 mail VARCHAR(100),
324 hashed_password VARCHAR(255),
325 embg CHAR(13),
326 PRIMARY KEY (korisnik_id),
327 CONSTRAINT FK_Korisnik_Gragjanin
328 FOREIGN KEY (embg) REFERENCES Gragjanin (embg) ON DELETE RESTRICT ON UPDATE CASCADE,
329 CONSTRAINT UQ_Korisnik_Embg UNIQUE (embg),
330 CONSTRAINT UQ_Korisnik_Mail UNIQUE (mail),
331 CONSTRAINT CHK_Korisnik_Mail CHECK (mail IS NULL OR mail LIKE '%@%'),
332 CONSTRAINT CHK_Korisnik_Password CHECK (hashed_password IS NULL OR LENGTH(hashed_password) >= 8)
333);
334
335CREATE TABLE Uloga
336(
337 uloga_id INTEGER GENERATED ALWAYS AS IDENTITY,
338 ime VARCHAR(100),
339 PRIMARY KEY (uloga_id),
340 CONSTRAINT CHK_Uloga_Ime CHECK (ime IS NULL OR TRIM(ime) <> '')
341);
342
343CREATE TABLE Korisnik_Uloga
344(
345 korisnik_id INTEGER,
346 uloga_id INTEGER,
347 PRIMARY KEY (korisnik_id, uloga_id),
348 CONSTRAINT FK_KU_Korisnik
349 FOREIGN KEY (korisnik_id) REFERENCES Korisnik (korisnik_id) ON DELETE CASCADE ON UPDATE CASCADE,
350 CONSTRAINT FK_KU_Uloga
351 FOREIGN KEY (uloga_id) REFERENCES Uloga (uloga_id) ON DELETE CASCADE ON UPDATE CASCADE
352);
353
354CREATE TABLE Administrator
355(
356 administrator_id INTEGER GENERATED ALWAYS AS IDENTITY,
357 datum_vrabotuvanje DATE,
358 broj_na_licenca INTEGER,
359 oddel VARCHAR(100),
360 korisnik_id INTEGER UNIQUE,
361 PRIMARY KEY (administrator_id),
362 CONSTRAINT FK_Administrator_Korisnik
363 FOREIGN KEY (korisnik_id) REFERENCES Korisnik (korisnik_id) ON DELETE RESTRICT ON UPDATE CASCADE,
364 CONSTRAINT CHK_Administrator_Licenca CHECK (broj_na_licenca IS NULL OR broj_na_licenca > 0),
365 CONSTRAINT CHK_Administrator_Oddel CHECK (oddel IS NULL OR TRIM(oddel) <> ''),
366 CONSTRAINT CHK_Administrator_Datum CHECK (datum_vrabotuvanje IS NULL OR datum_vrabotuvanje <= CURRENT_DATE)
367);
368
369CREATE TABLE Zalba
370(
371 zalba_id INTEGER GENERATED ALWAYS AS IDENTITY,
372 sodrzina VARCHAR(500),
373 datum_na_podnesuvanje DATE,
374 status VARCHAR(100),
375 administrator_id INTEGER,
376 korisnik_id INTEGER,
377 prekrsok_id INTEGER,
378 PRIMARY KEY (zalba_id),
379 CONSTRAINT FK_Zalba_Administrator
380 FOREIGN KEY (administrator_id) REFERENCES Administrator (administrator_id) ON DELETE SET NULL ON UPDATE CASCADE,
381 CONSTRAINT FK_Zalba_Korisnik
382 FOREIGN KEY (korisnik_id) REFERENCES Korisnik (korisnik_id) ON DELETE RESTRICT ON UPDATE CASCADE,
383 CONSTRAINT FK_Zalba_Prekrsok
384 FOREIGN KEY (prekrsok_id) REFERENCES Prekrsok (prekrsok_id) ON DELETE RESTRICT ON UPDATE CASCADE,
385 CONSTRAINT CHK_Zalba_Sodrzina CHECK (sodrzina IS NULL OR TRIM(sodrzina) <> ''),
386 CONSTRAINT CHK_Zalba_Status CHECK (
387 status IS NULL OR status IN ('podnesena', 'vo_postapka', 'prifatena', 'odbijena')
388 ),
389 CONSTRAINT CHK_Zalba_Datum CHECK (datum_na_podnesuvanje IS NULL OR datum_na_podnesuvanje <= CURRENT_DATE)
390);
391
392CREATE TABLE Notifikacija
393(
394 notifikacija_id INTEGER GENERATED ALWAYS AS IDENTITY,
395 sodrzina VARCHAR(500),
396 datum_isprakjanje DATE DEFAULT CURRENT_DATE,
397 procitana BOOLEAN DEFAULT FALSE,
398 slika_id INTEGER,
399 korisnik_id INTEGER,
400 PRIMARY KEY (notifikacija_id),
401 CONSTRAINT FK_Notifikacija_Slika
402 FOREIGN KEY (slika_id) REFERENCES Slika (slika_id) ON DELETE SET NULL ON UPDATE CASCADE,
403 CONSTRAINT FK_Notifikacija_Korisnik
404 FOREIGN KEY (korisnik_id) REFERENCES Korisnik (korisnik_id) ON DELETE SET NULL ON UPDATE CASCADE,
405 CONSTRAINT CHK_Notifikacija_Sodrzina CHECK (sodrzina IS NULL OR TRIM(sodrzina) <> ''),
406 CONSTRAINT CHK_Notifikacija_Datum CHECK (datum_isprakjanje IS NULL OR datum_isprakjanje <= CURRENT_DATE)
407);
408
409CREATE TABLE Notifikacija_Kazna
410(
411 notifikacija_id INTEGER,
412 kazna_id INTEGER,
413 PRIMARY KEY (notifikacija_id, kazna_id),
414 CONSTRAINT FK_NK_Notifikacija
415 FOREIGN KEY (notifikacija_id) REFERENCES Notifikacija (notifikacija_id) ON DELETE CASCADE ON UPDATE CASCADE,
416 CONSTRAINT FK_NK_Kazna
417 FOREIGN KEY (kazna_id) REFERENCES Kazna (kazna_id) ON DELETE CASCADE ON UPDATE CASCADE
418);
419
420CREATE TABLE Prekrsok_Vozilo
421(
422 prekrsok_id INTEGER,
423 vozilo_id INTEGER,
424 PRIMARY KEY (prekrsok_id, vozilo_id),
425 CONSTRAINT FK_PV_Prekrsok
426 FOREIGN KEY (prekrsok_id) REFERENCES Prekrsok (prekrsok_id) ON DELETE CASCADE ON UPDATE CASCADE,
427 CONSTRAINT FK_PV_Vozilo
428 FOREIGN KEY (vozilo_id) REFERENCES Vozilo (vozilo_id) ON DELETE CASCADE ON UPDATE CASCADE
429);
430
431CREATE TABLE Sopstvenik_Vozilo
432(
433 embg BIGINT,
434 vozilo_id INTEGER,
435 PRIMARY KEY (embg, vozilo_id),
436 CONSTRAINT FK_SV_Sopstvenik
437 FOREIGN KEY (embg) REFERENCES Sopstvenik (embg) ON DELETE CASCADE ON UPDATE CASCADE,
438 CONSTRAINT FK_SV_Vozilo
439 FOREIGN KEY (vozilo_id) REFERENCES Vozilo (vozilo_id) ON DELETE CASCADE ON UPDATE CASCADE
440);
441
442CREATE TABLE Prekrsok_Storitel
443(
444 prekrsok_id INTEGER,
445 storitel_embg BIGINT,
446 PRIMARY KEY (prekrsok_id, storitel_embg),
447 CONSTRAINT FK_PS_Prekrsok
448 FOREIGN KEY (prekrsok_id) REFERENCES Prekrsok (prekrsok_id) ON DELETE CASCADE ON UPDATE CASCADE,
449 CONSTRAINT FK_PS_Gragjanin
450 FOREIGN KEY (storitel_embg) REFERENCES Gragjanin (embg) ON DELETE RESTRICT ON UPDATE CASCADE
451);
452
453CREATE TABLE PregledSnimka
454(
455 administrator_id INTEGER,
456 snimka_id INTEGER,
457 status INTEGER DEFAULT 0,
458 PRIMARY KEY (administrator_id, snimka_id),
459 CONSTRAINT FK_PregledSnimka_Administrator
460 FOREIGN KEY (administrator_id) REFERENCES Administrator (administrator_id) ON DELETE CASCADE ON UPDATE CASCADE,
461 CONSTRAINT FK_PregledSnimka_Snimka
462 FOREIGN KEY (snimka_id) REFERENCES Snimka (snimka_id) ON DELETE CASCADE ON UPDATE CASCADE,
463 CONSTRAINT CHK_PregledSnimka_Status CHECK (status IS NULL OR status IN (0, 1, 2))
464);