RelationalDesign: web3EdnevnikDDL_v1.sql

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