RelationalDesign: schema_creation.sql

File schema_creation.sql, 4.6 KB (added by 223306, 11 days ago)
Line 
1DROP SCHEMA IF EXISTS project CASCADE;
2CREATE SCHEMA project;
3SET search_path TO project;
4
5CREATE TABLE KORISNICI (
6 korisnik_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
7 ime VARCHAR(100) NOT NULL,
8 prezime VARCHAR(100) NOT NULL,
9 email VARCHAR(255) NOT NULL UNIQUE,
10 lozinka VARCHAR(255) NOT NULL,
11 datum_registracija DATE NOT NULL,
12 uloga VARCHAR(20) NOT NULL
13);
14
15CREATE TABLE KNIGI (
16 kniga_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
17 naslov VARCHAR(255) NOT NULL,
18 isbn VARCHAR(20) NOT NULL UNIQUE,
19 opis TEXT,
20 korica_url TEXT,
21 godina_izdavanje SMALLINT,
22 kolicina_na_zaliha INTEGER NOT NULL,
23 cena NUMERIC(10,2) NOT NULL
24);
25
26CREATE TABLE AVTORI (
27 avtor_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
28 ime VARCHAR(100) NOT NULL,
29 prezime VARCHAR(100) NOT NULL,
30 biografija TEXT
31);
32
33CREATE TABLE ZHANROVI (
34 zhanr_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
35 naziv VARCHAR(100) NOT NULL,
36 opis TEXT
37);
38
39CREATE TABLE KATEGORII (
40 kategorija_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
41 naziv VARCHAR(100) NOT NULL,
42 opis TEXT
43);
44
45CREATE TABLE RASPOLOZENIJA (
46 raspolozenie_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
47 naziv VARCHAR(100) NOT NULL,
48 opis TEXT
49);
50
51CREATE TABLE NARACKI (
52 naracka_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
53 datum TIMESTAMP NOT NULL,
54 status VARCHAR(30) NOT NULL,
55 vkupna_cena NUMERIC(10,2) NOT NULL,
56 korisnik_id BIGINT NOT NULL,
57 FOREIGN KEY (korisnik_id) REFERENCES KORISNICI(korisnik_id)
58);
59
60CREATE TABLE PLAKANJA (
61 plakjanje_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
62 datum TIMESTAMP NOT NULL,
63 iznos NUMERIC(10,2) NOT NULL,
64 nacin_na_plakjanje VARCHAR(50) NOT NULL,
65 status VARCHAR(30) NOT NULL,
66 naracka_id BIGINT NOT NULL UNIQUE,
67 FOREIGN KEY (naracka_id) REFERENCES NARACKI(naracka_id)
68);
69
70CREATE TABLE SODRZI (
71 naracka_id BIGINT NOT NULL,
72 kniga_id BIGINT NOT NULL,
73 kolicina INTEGER NOT NULL,
74 edinechna_cena NUMERIC(10,2) NOT NULL,
75 PRIMARY KEY (naracka_id, kniga_id),
76 FOREIGN KEY (naracka_id) REFERENCES NARACKI(naracka_id),
77 FOREIGN KEY (kniga_id) REFERENCES KNIGI(kniga_id)
78);
79
80CREATE TABLE NAPISANA_OD (
81 kniga_id BIGINT NOT NULL,
82 avtor_id BIGINT NOT NULL,
83 PRIMARY KEY (kniga_id, avtor_id),
84 FOREIGN KEY (kniga_id) REFERENCES KNIGI(kniga_id),
85 FOREIGN KEY (avtor_id) REFERENCES AVTORI(avtor_id)
86);
87
88CREATE TABLE IMA_ZHANR (
89 kniga_id BIGINT NOT NULL,
90 zhanr_id BIGINT NOT NULL,
91 PRIMARY KEY (kniga_id, zhanr_id),
92 FOREIGN KEY (kniga_id) REFERENCES KNIGI(kniga_id),
93 FOREIGN KEY (zhanr_id) REFERENCES ZHANROVI(zhanr_id)
94);
95
96CREATE TABLE IMA_KATEGORIJA (
97 kniga_id BIGINT NOT NULL,
98 kategorija_id BIGINT NOT NULL,
99 PRIMARY KEY (kniga_id, kategorija_id),
100 FOREIGN KEY (kniga_id) REFERENCES KNIGI(kniga_id),
101 FOREIGN KEY (kategorija_id) REFERENCES KATEGORII(kategorija_id)
102);
103
104CREATE TABLE POVRZANA_SO (
105 kniga_id BIGINT NOT NULL,
106 raspolozenie_id BIGINT NOT NULL,
107 PRIMARY KEY (kniga_id, raspolozenie_id),
108 FOREIGN KEY (kniga_id) REFERENCES KNIGI(kniga_id),
109 FOREIGN KEY (raspolozenie_id) REFERENCES RASPOLOZENIJA(raspolozenie_id)
110);
111
112CREATE TABLE OMILENI (
113 korisnik_id BIGINT NOT NULL,
114 kniga_id BIGINT NOT NULL,
115 datum_dodavanje DATE NOT NULL,
116 PRIMARY KEY (korisnik_id, kniga_id),
117 FOREIGN KEY (korisnik_id) REFERENCES KORISNICI(korisnik_id),
118 FOREIGN KEY (kniga_id) REFERENCES KNIGI(kniga_id)
119);
120
121CREATE TABLE PREFERIRA_ZHANR (
122 korisnik_id BIGINT NOT NULL,
123 zhanr_id BIGINT NOT NULL,
124 datum_dodavanje DATE NOT NULL,
125 PRIMARY KEY (korisnik_id, zhanr_id),
126 FOREIGN KEY (korisnik_id) REFERENCES KORISNICI(korisnik_id),
127 FOREIGN KEY (zhanr_id) REFERENCES ZHANROVI(zhanr_id)
128);
129
130CREATE TABLE PREFERIRA_KATEGORIJA (
131 korisnik_id BIGINT NOT NULL,
132 kategorija_id BIGINT NOT NULL,
133 datum_dodavanje DATE NOT NULL,
134 PRIMARY KEY (korisnik_id, kategorija_id),
135 FOREIGN KEY (korisnik_id) REFERENCES KORISNICI(korisnik_id),
136 FOREIGN KEY (kategorija_id) REFERENCES KATEGORII(kategorija_id)
137);
138
139CREATE TABLE IZBIRA_RASPOLOZENIE (
140 korisnik_id BIGINT NOT NULL,
141 raspolozenie_id BIGINT NOT NULL,
142 datum_izbor DATE NOT NULL,
143 PRIMARY KEY (korisnik_id, raspolozenie_id),
144 FOREIGN KEY (korisnik_id) REFERENCES KORISNICI(korisnik_id),
145 FOREIGN KEY (raspolozenie_id) REFERENCES RASPOLOZENIJA(raspolozenie_id)
146);