source: schema.sql@ e6c1c76

Last change on this file since e6c1c76 was e6c1c76, checked in by Valerija Andrijeska <valerija.andrijeska@…>, 3 days ago

Add database schema

  • Property mode set to 100644
File size: 7.6 KB
Line 
1-- project.avtori definition
2
3-- Drop table
4
5-- DROP TABLE project.avtori;
6
7CREATE TABLE project.avtori (
8 avtor_id int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY,
9 ime varchar(100) NOT NULL,
10 prezime varchar(100) NOT NULL,
11 biografija text NULL,
12 CONSTRAINT avtori_pkey PRIMARY KEY (avtor_id)
13);
14
15
16-- project.kategorii definition
17
18-- Drop table
19
20-- DROP TABLE project.kategorii;
21
22CREATE TABLE project.kategorii (
23 kategorija_id int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY,
24 naziv varchar(100) NOT NULL,
25 opis text NULL,
26 CONSTRAINT kategorii_pkey PRIMARY KEY (kategorija_id)
27);
28
29
30-- project.knigi definition
31
32-- Drop table
33
34-- DROP TABLE project.knigi;
35
36CREATE TABLE project.knigi (
37 kniga_id int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY,
38 naslov varchar(255) NOT NULL,
39 isbn varchar(20) NOT NULL,
40 opis text NULL,
41 korica_url text NULL,
42 godina_izdavanje int2 NULL,
43 kolicina_na_zaliha int4 NOT NULL,
44 cena numeric(10, 2) NOT NULL,
45 CONSTRAINT knigi_isbn_key UNIQUE (isbn),
46 CONSTRAINT knigi_pkey PRIMARY KEY (kniga_id)
47);
48CREATE INDEX idx_knigi_naslov_trgm ON project.knigi USING gin (lower((naslov)::text) gin_trgm_ops);
49
50
51-- project.korisnici definition
52
53-- Drop table
54
55-- DROP TABLE project.korisnici;
56
57CREATE TABLE project.korisnici (
58 korisnik_id int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY,
59 ime varchar(100) NOT NULL,
60 prezime varchar(100) NOT NULL,
61 email varchar(255) NOT NULL,
62 lozinka varchar(255) NOT NULL,
63 datum_registracija date NOT NULL,
64 uloga varchar(20) NOT NULL,
65 CONSTRAINT korisnici_email_key UNIQUE (email),
66 CONSTRAINT korisnici_pkey PRIMARY KEY (korisnik_id)
67);
68
69
70-- project.raspolozenija definition
71
72-- Drop table
73
74-- DROP TABLE project.raspolozenija;
75
76CREATE TABLE project.raspolozenija (
77 raspolozenie_id int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY,
78 naziv varchar(100) NOT NULL,
79 opis text NULL,
80 CONSTRAINT raspolozenija_pkey PRIMARY KEY (raspolozenie_id)
81);
82
83
84-- project.zhanrovi definition
85
86-- Drop table
87
88-- DROP TABLE project.zhanrovi;
89
90CREATE TABLE project.zhanrovi (
91 zhanr_id int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY,
92 naziv varchar(100) NOT NULL,
93 opis text NULL,
94 CONSTRAINT zhanrovi_pkey PRIMARY KEY (zhanr_id)
95);
96
97
98-- project.ima_kategorija definition
99
100-- Drop table
101
102-- DROP TABLE project.ima_kategorija;
103
104CREATE TABLE project.ima_kategorija (
105 kniga_id int8 NOT NULL,
106 kategorija_id int8 NOT NULL,
107 CONSTRAINT ima_kategorija_pkey PRIMARY KEY (kniga_id, kategorija_id),
108 CONSTRAINT ima_kategorija_kategorija_id_fkey FOREIGN KEY (kategorija_id) REFERENCES project.kategorii(kategorija_id),
109 CONSTRAINT ima_kategorija_kniga_id_fkey FOREIGN KEY (kniga_id) REFERENCES project.knigi(kniga_id)
110);
111
112
113-- project.ima_zhanr definition
114
115-- Drop table
116
117-- DROP TABLE project.ima_zhanr;
118
119CREATE TABLE project.ima_zhanr (
120 kniga_id int8 NOT NULL,
121 zhanr_id int8 NOT NULL,
122 CONSTRAINT ima_zhanr_pkey PRIMARY KEY (kniga_id, zhanr_id),
123 CONSTRAINT ima_zhanr_kniga_id_fkey FOREIGN KEY (kniga_id) REFERENCES project.knigi(kniga_id),
124 CONSTRAINT ima_zhanr_zhanr_id_fkey FOREIGN KEY (zhanr_id) REFERENCES project.zhanrovi(zhanr_id)
125);
126
127
128-- project.izbira_raspolozenie definition
129
130-- Drop table
131
132-- DROP TABLE project.izbira_raspolozenie;
133
134CREATE TABLE project.izbira_raspolozenie (
135 korisnik_id int8 NOT NULL,
136 raspolozenie_id int8 NOT NULL,
137 datum_izbor date NOT NULL,
138 CONSTRAINT izbira_raspolozenie_pkey PRIMARY KEY (korisnik_id, raspolozenie_id),
139 CONSTRAINT izbira_raspolozenie_korisnik_id_fkey FOREIGN KEY (korisnik_id) REFERENCES project.korisnici(korisnik_id),
140 CONSTRAINT izbira_raspolozenie_raspolozenie_id_fkey FOREIGN KEY (raspolozenie_id) REFERENCES project.raspolozenija(raspolozenie_id)
141);
142
143
144-- project.napisana_od definition
145
146-- Drop table
147
148-- DROP TABLE project.napisana_od;
149
150CREATE TABLE project.napisana_od (
151 kniga_id int8 NOT NULL,
152 avtor_id int8 NOT NULL,
153 CONSTRAINT napisana_od_pkey PRIMARY KEY (kniga_id, avtor_id),
154 CONSTRAINT napisana_od_avtor_id_fkey FOREIGN KEY (avtor_id) REFERENCES project.avtori(avtor_id),
155 CONSTRAINT napisana_od_kniga_id_fkey FOREIGN KEY (kniga_id) REFERENCES project.knigi(kniga_id)
156);
157
158
159-- project.naracki definition
160
161-- Drop table
162
163-- DROP TABLE project.naracki;
164
165CREATE TABLE project.naracki (
166 naracka_id int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY,
167 datum timestamp NOT NULL,
168 status varchar(30) NOT NULL,
169 vkupna_cena numeric(10, 2) NOT NULL,
170 korisnik_id int8 NOT NULL,
171 CONSTRAINT naracki_pkey PRIMARY KEY (naracka_id),
172 CONSTRAINT naracki_korisnik_id_fkey FOREIGN KEY (korisnik_id) REFERENCES project.korisnici(korisnik_id)
173);
174CREATE INDEX idx_naracki_status ON project.naracki USING btree (status);
175
176-- Table Triggers
177
178create trigger trg_proveri_i_namali_zaliha before
179update
180 of status on
181 project.naracki for each row execute function project.proveri_i_namali_zaliha();
182
183
184-- project.omileni definition
185
186-- Drop table
187
188-- DROP TABLE project.omileni;
189
190CREATE TABLE project.omileni (
191 korisnik_id int8 NOT NULL,
192 kniga_id int8 NOT NULL,
193 datum_dodavanje date NOT NULL,
194 CONSTRAINT omileni_pkey PRIMARY KEY (korisnik_id, kniga_id),
195 CONSTRAINT omileni_kniga_id_fkey FOREIGN KEY (kniga_id) REFERENCES project.knigi(kniga_id),
196 CONSTRAINT omileni_korisnik_id_fkey FOREIGN KEY (korisnik_id) REFERENCES project.korisnici(korisnik_id)
197);
198
199
200-- project.plakanja definition
201
202-- Drop table
203
204-- DROP TABLE project.plakanja;
205
206CREATE TABLE project.plakanja (
207 plakjanje_id int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY,
208 datum timestamp NOT NULL,
209 iznos numeric(10, 2) NOT NULL,
210 nacin_na_plakjanje varchar(50) NOT NULL,
211 status varchar(30) NOT NULL,
212 naracka_id int8 NOT NULL,
213 CONSTRAINT plakanja_naracka_id_key UNIQUE (naracka_id),
214 CONSTRAINT plakanja_pkey PRIMARY KEY (plakjanje_id),
215 CONSTRAINT plakanja_naracka_id_fkey FOREIGN KEY (naracka_id) REFERENCES project.naracki(naracka_id)
216);
217
218
219-- project.povrzana_so definition
220
221-- Drop table
222
223-- DROP TABLE project.povrzana_so;
224
225CREATE TABLE project.povrzana_so (
226 kniga_id int8 NOT NULL,
227 raspolozenie_id int8 NOT NULL,
228 CONSTRAINT povrzana_so_pkey PRIMARY KEY (kniga_id, raspolozenie_id),
229 CONSTRAINT povrzana_so_kniga_id_fkey FOREIGN KEY (kniga_id) REFERENCES project.knigi(kniga_id),
230 CONSTRAINT povrzana_so_raspolozenie_id_fkey FOREIGN KEY (raspolozenie_id) REFERENCES project.raspolozenija(raspolozenie_id)
231);
232
233
234-- project.preferira_kategorija definition
235
236-- Drop table
237
238-- DROP TABLE project.preferira_kategorija;
239
240CREATE TABLE project.preferira_kategorija (
241 korisnik_id int8 NOT NULL,
242 kategorija_id int8 NOT NULL,
243 datum_dodavanje date NOT NULL,
244 CONSTRAINT preferira_kategorija_pkey PRIMARY KEY (korisnik_id, kategorija_id),
245 CONSTRAINT preferira_kategorija_kategorija_id_fkey FOREIGN KEY (kategorija_id) REFERENCES project.kategorii(kategorija_id),
246 CONSTRAINT preferira_kategorija_korisnik_id_fkey FOREIGN KEY (korisnik_id) REFERENCES project.korisnici(korisnik_id)
247);
248
249
250-- project.preferira_zhanr definition
251
252-- Drop table
253
254-- DROP TABLE project.preferira_zhanr;
255
256CREATE TABLE project.preferira_zhanr (
257 korisnik_id int8 NOT NULL,
258 zhanr_id int8 NOT NULL,
259 datum_dodavanje date NOT NULL,
260 CONSTRAINT preferira_zhanr_pkey PRIMARY KEY (korisnik_id, zhanr_id),
261 CONSTRAINT preferira_zhanr_korisnik_id_fkey FOREIGN KEY (korisnik_id) REFERENCES project.korisnici(korisnik_id),
262 CONSTRAINT preferira_zhanr_zhanr_id_fkey FOREIGN KEY (zhanr_id) REFERENCES project.zhanrovi(zhanr_id)
263);
264
265
266-- project.sodrzi definition
267
268-- Drop table
269
270-- DROP TABLE project.sodrzi;
271
272CREATE TABLE project.sodrzi (
273 naracka_id int8 NOT NULL,
274 kniga_id int8 NOT NULL,
275 kolicina int4 NOT NULL,
276 edinechna_cena numeric(10, 2) NOT NULL,
277 CONSTRAINT sodrzi_pkey PRIMARY KEY (naracka_id, kniga_id),
278 CONSTRAINT sodrzi_kniga_id_fkey FOREIGN KEY (kniga_id) REFERENCES project.knigi(kniga_id),
279 CONSTRAINT sodrzi_naracka_id_fkey FOREIGN KEY (naracka_id) REFERENCES project.naracki(naracka_id)
280);
Note: See TracBrowser for help on using the repository browser.