-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdatabase.sql
More file actions
77 lines (66 loc) · 2.26 KB
/
database.sql
File metadata and controls
77 lines (66 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
CREATE SCHEMA uniexams;
CREATE TABLE uniexams.Studenti (
Nome VARCHAR(64) NOT NULL,
Cognome VARCHAR(64) NOT NULL,
DataNascita DATE NOT NULL,
Email VARCHAR(64) PRIMARY KEY,
Password VARCHAR(256) NOT NULL,
Facolta VARCHAR(64),
Matricola VARCHAR(6) CHECK(LENGTH(Matricola) = 6)
);
CREATE TABLE uniexams.Docenti(
Nome VARCHAR(64) NOT NULL,
Cognome VARCHAR(64) NOT NULL,
DataNascita DATE NOT NULL,
Password VARCHAR(256) NOT NULL,
Email VARCHAR(64) PRIMARY KEY
);
CREATE TABLE UniExams.Esami (
idEsame VARCHAR(8) PRIMARY KEY,
nome VARCHAR(40),
crediti INTEGER,
anno INTEGER CHECK (anno >= 0 AND anno <= 5)
);
CREATE TABLE UniExams.Prove(
idProva VARCHAR(10) PRIMARY KEY,
tipologia VARCHAR(10),
opzionale BOOLEAN,
dataScadenza DATE CHECK(dataScadenza > CURRENT_DATE),
dipendeDa VARCHAR(10),
FOREIGN KEY (dipendeDa) REFERENCES UniExams.Prove (idProva) ON DELETE CASCADE,
idEsame VARCHAR(8),
FOREIGN KEY (idEsame) REFERENCES UniExams.Esami (idEsame) ON DELETE CASCADE,
responsabile VARCHAR(64),
FOREIGN KEY (responsabile) REFERENCES UniExams.Docenti (email)
);
CREATE TABLE uniexams.Appelli(
idAppello SERIAL PRIMARY KEY,
idProva VARCHAR(10),
data DATE,
FOREIGN KEY(idProva) REFERENCES uniexams.Prove(idProva) ON DELETE CASCADE
);
CREATE TABLE uniexams.Iscrizioni(
idIscrizione SERIAL PRIMARY KEY,
idAppello INTEGER,
email VARCHAR(64),
voto INTEGER CHECK (voto >= 0 AND voto <= 31),
bonus INTEGER CHECK (bonus > 0),
idoneita BOOLEAN,
FOREIGN KEY(idAppello) REFERENCES uniexams.Appelli(idAppello) ON DELETE CASCADE,
FOREIGN KEY(email) REFERENCES uniexams.Studenti(email)
);
CREATE TABLE uniexams.realizza(
email VARCHAR(64),
idEsame VARCHAR(8),
PRIMARY KEY(email, idEsame),
FOREIGN KEY(email) REFERENCES uniexams.Docenti(email),
FOREIGN KEY(idEsame) REFERENCES uniexams.Esami(idEsame) ON DELETE CASCADE
);
CREATE TABLE UniExams.Libretto (
votoComplessivo INTEGER CHECK (votoComplessivo >= 0 AND votoComplessivo <= 31),
email VARCHAR(64),
idEsame VARCHAR(8),
PRIMARY KEY(email, idEsame),
FOREIGN KEY (email) REFERENCES UniExams.Studenti (email),
FOREIGN KEY (idEsame) REFERENCES UniExams.Esami (idEsame) ON DELETE CASCADE
);