logicalAndPhysicalDesign: web3EdnevnikDDL_v1.sql

File web3EdnevnikDDL_v1.sql, 8.3 KB (added by 192063, 7 days ago)
Line 
1CREATE EXTENSION IF NOT EXISTS "pgcrypto";
2
3CREATE TABLE Admin_User (
4 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
5 e_posta VARCHAR(100) NOT NULL UNIQUE,
6 lozinka VARCHAR(255) NOT NULL,
7 ime VARCHAR(30) NOT NULL,
8 prezime VARCHAR(30) NOT NULL
9);
10
11CREATE TABLE Mon_Admin (
12 id UUID PRIMARY KEY,
13 FOREIGN KEY (id) REFERENCES Admin_User (id) ON DELETE CASCADE
14);
15
16CREATE TABLE Direktor_Admin (
17 id UUID PRIMARY KEY,
18 kreiran_Od UUID,
19 FOREIGN KEY (id) REFERENCES Admin_User (id) ON DELETE CASCADE,
20 FOREIGN KEY (kreiran_Od) REFERENCES Mon_Admin (id) ON DELETE CASCADE
21);
22
23CREATE TABLE Korisnik (
24 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
25 e_posta VARCHAR(100) NOT NULL UNIQUE,
26 lozinka VARCHAR(255) NOT NULL,
27 ime VARCHAR(30) NOT NULL,
28 prezime VARCHAR(30) NOT NULL,
29 pol VARCHAR(10) NOT NULL,
30 adresa VARCHAR(100),
31 kreiranOd_id UUID,
32 FOREIGN KEY (kreiranOd_id) REFERENCES Direktor_Admin (id)
33);
34
35CREATE TABLE Nastavnik (
36 id UUID PRIMARY KEY,
37 FOREIGN KEY (id) REFERENCES Korisnik (id) ON DELETE CASCADE
38);
39
40CREATE TABLE Klasen_Rakovoditel (
41 id UUID PRIMARY KEY,
42 FOREIGN KEY (id) REFERENCES Nastavnik (id) ON DELETE CASCADE
43);
44
45CREATE TABLE Predmeten_Nastavnik (
46 id UUID PRIMARY KEY,
47 FOREIGN KEY (id) REFERENCES Nastavnik (id) ON DELETE CASCADE
48);
49
50CREATE TABLE Blagajnik (
51 id UUID PRIMARY KEY,
52 metamusk_adresa VARCHAR(80) NOT NULL,
53 FOREIGN KEY (id) REFERENCES Korisnik (id) ON DELETE CASCADE
54);
55
56CREATE TABLE Roditel (
57 id UUID PRIMARY KEY,
58 metamusk_adresa VARCHAR(80) NOT NULL,
59 FOREIGN KEY (id) REFERENCES Korisnik (id) ON DELETE CASCADE
60);
61
62CREATE TABLE Klas (
63 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
64 godinaNa_Slusanje VARCHAR(10) NOT NULL,
65 paralelka CHAR(1) NOT NULL,
66 oddelenie INTEGER NOT NULL
67);
68
69CREATE TABLE Ucenik (
70 id UUID PRIMARY KEY,
71 mestoNa_ragjanje VARCHAR(30) NOT NULL,
72 mobilen_telefon VARCHAR(15) NOT NULL,
73 datumNa_ragjanje DATE NOT NULL,
74 staratel_id UUID,
75 imeNa_staratel VARCHAR(30) NOT NULL,
76 uciVoKlas_id UUID,
77 FOREIGN KEY (uciVoKlas_id) REFERENCES Klas (id) ON DELETE CASCADE,
78 FOREIGN KEY (staratel_id) REFERENCES Roditel (id) ON DELETE CASCADE,
79 FOREIGN KEY (id) REFERENCES Korisnik (id) ON DELETE CASCADE
80);
81
82CREATE TABLE AktivnostZa_NedelenPlan (
83 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
84 naslov VARCHAR(30) NOT NULL,
85 opis VARCHAR(80) NOT NULL,
86 denVo_Nedelata VARCHAR(10) NOT NULL
87);
88
89CREATE TABLE Cas (
90 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
91 reden_cas INTEGER NOT NULL,
92 denVo_Nedelata VARCHAR(10) NOT NULL
93);
94
95CREATE TABLE Prisustvo (
96 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
97 datum DATE NOT NULL,
98 status VARCHAR(10) NOT NULL,
99 zabeleska TEXT,
100 evidentiranoOd_Id UUID,
101 seOdnesuvaNaUcenikot_Id UUID,
102 zaCasot_Id UUID,
103 FOREIGN KEY (evidentiranoOd_Id) REFERENCES Nastavnik (id),
104 FOREIGN KEY (seOdnesuvaNaUcenikot_Id) REFERENCES Ucenik (id),
105 FOREIGN KEY (zaCasot_Id) REFERENCES Cas (id)
106);
107
108CREATE TABLE Predmet (
109 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
110 ime VARCHAR(30) NOT NULL,
111 fond_casovi INTEGER NOT NULL,
112 zaKlas_Id UUID,
113 FOREIGN KEY (zaKlas_Id) REFERENCES Klas (id)
114);
115
116CREATE TABLE Ocenka (
117 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
118 ocenka INTEGER NOT NULL,
119 datum DATE NOT NULL,
120 zabeleska TEXT,
121 vnesena_Od UUID,
122 dobienaZaUcenikot_Id UUID,
123 eZaPredmetot_Id UUID,
124 zaAktivnosta_id UUID,
125 FOREIGN KEY (eZaPredmetot_Id) REFERENCES Predmet (id),
126 FOREIGN KEY (dobienaZaUcenikot_Id) REFERENCES Ucenik (id),
127 FOREIGN KEY (zaAktivnosta_id) REFERENCES AktivnostZa_NedelenPlan (id),
128 FOREIGN KEY (vnesena_Od) REFERENCES Nastavnik (id)
129);
130
131CREATE TABLE Usna_Ocenka (
132 id UUID,
133 tema VARCHAR(50) NOT NULL,
134 osvoeni_poeni INTEGER NOT NULL,
135 max_poeni INTEGER NOT NULL,
136 vid_isprasuvanje VARCHAR(20) NOT NULL,
137 FOREIGN KEY (id) REFERENCES Ocenka (id) ON DELETE CASCADE
138);
139
140CREATE TABLE Pismena_Ocenka (
141 id UUID,
142 tema VARCHAR(50) NOT NULL,
143 osvoeni_poeni INTEGER NOT NULL,
144 max_poeni INTEGER NOT NULL,
145 vid VARCHAR(20) NOT NULL,
146 FOREIGN KEY (id) REFERENCES Ocenka (id) ON DELETE CASCADE
147);
148
149CREATE TABLE Krajna_Ocenka (
150 id UUID,
151 tip VARCHAR(20) NOT NULL,
152 FOREIGN KEY (id) REFERENCES Ocenka (id)
153);
154
155CREATE TABLE Soopstenie (
156 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
157 naslov VARCHAR(30) NOT NULL,
158 sodrzina TEXT NOT NULL,
159 kreirano_Na DATE NOT NULL,
160 zaKlas_Id UUID,
161 postiranoOd_Id UUID,
162 FOREIGN KEY (postiranoOd_Id) REFERENCES Klasen_Rakovoditel (id),
163 FOREIGN KEY (zaKlas_Id) REFERENCES Klas (id)
164);
165
166CREATE TABLE Nedelen_Plan (
167 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
168 datum_Od DATE NOT NULL,
169 datum_Do DATE NOT NULL,
170 sledenOdKlas_Id UUID,
171 FOREIGN KEY (sledenOdKlas_Id) REFERENCES Klas (id)
172);
173
174CREATE TABLE Raspored (
175 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
176 naslov VARCHAR(30) NOT NULL,
177 tip VARCHAR(10) NOT NULL,
178 izgotvenOd_Id UUID,
179 FOREIGN KEY (izgotvenOd_Id) REFERENCES Direktor_Admin (id)
180);
181
182CREATE TABLE SoopstenieZa_Plakjanje (
183 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
184 naslov VARCHAR(100) NOT NULL,
185 sodrzina TEXT NOT NULL,
186 rokZa_Plakjanje DATE NOT NULL,
187 odobrenoOd_Id UUID,
188 sozdadenoOdBlagajnik_Id UUID,
189 FOREIGN KEY (sozdadenoOdBlagajnik_Id) REFERENCES Blagajnik (id),
190 FOREIGN KEY (odobrenoOd_Id) REFERENCES Direktor_Admin (id)
191);
192
193CREATE TABLE Plakjanje (
194 id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
195 status VARCHAR(10) NOT NULL,
196 tx_hash VARCHAR(100) NOT NULL,
197 valuta VARCHAR(10) NOT NULL,
198 plateno_Na DATE NOT NULL,
199 iznos DECIMAL(38, 18) NOT NULL,
200 platenoOdRoditel_Id UUID,
201 FOREIGN KEY (platenoOdRoditel_Id) REFERENCES Roditel (id)
202);
203
204CREATE TABLE KlasSlusa_Predmet (
205 klas_Id UUID,
206 predmet_Id UUID,
207 PRIMARY KEY (klas_id, predmet_Id),
208 FOREIGN KEY (predmet_Id) REFERENCES Predmet (id),
209 FOREIGN KEY (klas_id) REFERENCES Klas (id)
210);
211
212CREATE TABLE NastavnikGoPredava_Predmetot (
213 nastavnik_Id UUID,
214 predmet_Id UUID,
215 PRIMARY KEY (nastavnik_Id, predmet_Id),
216 FOREIGN KEY (predmet_Id) REFERENCES Predmet (id),
217 FOREIGN KEY (nastavnik_Id) REFERENCES Nastavnik (id)
218);
219
220CREATE TABLE NedelenPlanOpfakja_Aktivnosti (
221 nedelenPlan_Id UUID,
222 aktivnostZaNedelenPlan_Id UUID,
223 PRIMARY KEY (
224 nedelenPlan_Id,
225 aktivnostZaNedelenPlan_Id
226 ),
227 FOREIGN KEY (aktivnostZaNedelenPlan_Id) REFERENCES AktivnostZa_NedelenPlan (id),
228 FOREIGN KEY (nedelenPlan_Id) REFERENCES Nedelen_Plan (id)
229);
230
231CREATE TABLE KlasenRakovoditelZapisuvaAktivnostZaNedelen_Plan (
232 klasenRakovoditel_Id UUID,
233 aktivnostZaNedelenPlan_Id UUID,
234 PRIMARY KEY (
235 klasenRakovoditel_Id,
236 aktivnostZaNedelenPlan_Id
237 ),
238 FOREIGN KEY (aktivnostZaNedelenPlan_Id) REFERENCES AktivnostZa_NedelenPlan (id),
239 FOREIGN KEY (klasenRakovoditel_Id) REFERENCES Klasen_Rakovoditel (id)
240);
241
242CREATE TABLE RasporedSodrzi_Cas (
243 raspored_Id UUID,
244 cas_Id UUID,
245 PRIMARY KEY (raspored_Id, cas_Id),
246 FOREIGN KEY (cas_Id) REFERENCES Cas (id),
247 FOREIGN KEY (raspored_Id) REFERENCES Raspored (id)
248);
249
250CREATE TABLE PredmetSePredavaNa_Cas (
251 predmet_Id UUID,
252 cas_Id UUID,
253 PRIMARY KEY (predmet_Id, cas_Id),
254 FOREIGN KEY (cas_Id) REFERENCES Cas (id),
255 FOREIGN KEY (predmet_Id) REFERENCES Predmet (id)
256);
257
258CREATE TABLE KlasenRakovoditelRakovodiSo_Klas (
259 klasenRakovoditel_Id UUID PRIMARY KEY,
260 klas_Id UUID,
261 FOREIGN KEY (klas_Id) REFERENCES Klas (id),
262 FOREIGN KEY (klasenRakovoditel_Id) REFERENCES Klasen_Rakovoditel (id)
263);
264
265CREATE TABLE KlasKoristi_Raspored (
266 klas_Id UUID PRIMARY KEY,
267 raspored_Id UUID,
268 FOREIGN KEY (raspored_Id) REFERENCES Raspored (id),
269 FOREIGN KEY (klas_Id) REFERENCES Klas (id)
270);
271
272CREATE TABLE SoopstenieZaPlakjanjeVklucuva_Plakjanje (
273 soopstenieZaPlakjanje_Id UUID PRIMARY KEY,
274 plakjanje_Id UUID,
275 FOREIGN KEY (plakjanje_Id) REFERENCES Plakjanje (id),
276 FOREIGN KEY (soopstenieZaPlakjanje_Id) REFERENCES SoopstenieZa_Plakjanje (id)
277);