· 4 years ago · Feb 02, 2021, 05:04 PM
1USE mysql;
2DROP USER IF EXISTS 'scuolauser'@'localhost';
3CREATE USER 'scuolauser'@'localhost' IDENTIFIED BY 'scuolapass';
4DROP DATABASE IF EXISTS scuola;
5CREATE DATABASE scuola;
6GRANT ALL ON scuola.* TO 'scuolauser'@'localhost';
7
8USE scuola;
9
10DROP TABLE IF EXISTS Direttore;
11CREATE TABLE Direttore(
12 ID_Direttore INT NOT NULL AUTO_INCREMENT,
13 Data_Servizio DATE NOT NULL,
14 Codice_Fiscale CHAR(16) NOT NULL,
15 Nome VARCHAR(16) NOT NULL,
16 Cognome VARCHAR(16) NOT NULL,
17 Recapito VARCHAR(16) NOT NULL,
18 Data_Nascita DATE NOT NULL,
19 PRIMARY KEY(ID_Direttore)
20);
21
22DROP TABLE IF EXISTS Indirizzo_Di_Studio;
23CREATE TABLE Indirizzo_Di_Studio(
24 Nome_Indirizzo VARCHAR(16) NOT NULL,
25 PRIMARY KEY(Nome_Indirizzo)
26);
27
28DROP TABLE IF EXISTS Classe;
29CREATE TABLE Classe(
30 Anno INT NOT NULL,
31 Sezione VARCHAR(1) NOT NULL,
32 Nome_Indirizzo VARCHAR(16) NOT NULL,
33 FOREIGN KEY (Nome_Indirizzo) REFERENCES Indirizzo_Di_Studio(Nome_Indirizzo)
34 ON UPDATE CASCADE ON DELETE CASCADE,
35 PRIMARY KEY(Anno, Sezione)
36);
37
38DROP TABLE IF EXISTS Studente;
39CREATE TABLE Studente(
40 Matricola INT NOT NULL AUTO_INCREMENT,
41 Anno INT NOT NULL,
42 Sezione VARCHAR(1) NOT NULL,
43 Codice_Fiscale CHAR(16) NOT NULL,
44 Nome VARCHAR(16) NOT NULL,
45 Cognome VARCHAR(16) NOT NULL,
46 Recapito VARCHAR(16) NOT NULL,
47 Data_Nascita DATE NOT NULL,
48 FOREIGN KEY (Anno, Sezione) REFERENCES Classe(Anno,Sezione)
49 ON UPDATE CASCADE ON DELETE CASCADE,
50 PRIMARY KEY(Matricola)
51);
52
53DROP TABLE IF EXISTS Professore;
54CREATE TABLE Professore(
55 ID_Professore INT NOT NULL AUTO_INCREMENT,
56 ID_Direttore INT NOT NULL,
57 Codice_Fiscale CHAR(16) NOT NULL,
58 Nome VARCHAR(16) NOT NULL,
59 Cognome VARCHAR(16) NOT NULL,
60 Recapito VARCHAR(16) NOT NULL,
61 Data_Nascita DATE NOT NULL,
62 FOREIGN KEY (ID_Direttore) REFERENCES Direttore(ID_Direttore)
63 ON DELETE CASCADE ON UPDATE CASCADE,
64 PRIMARY KEY(ID_Professore)
65);
66
67DROP TABLE IF EXISTS Personale_ATA;
68CREATE TABLE Personale_ATA(
69 ID_Personale INT NOT NULL AUTO_INCREMENT,
70 ID_Direttore INT NOT NULL,
71 Codice_Fiscale CHAR(16) NOT NULL,
72 Nome VARCHAR(16) NOT NULL,
73 Cognome VARCHAR(16) NOT NULL,
74 Recapito VARCHAR(16) NOT NULL,
75 Data_Nascita DATE NOT NULL,
76 Tipologia VARCHAR(16) NOT NULL,
77 Piano INT,
78 FOREIGN KEY (ID_Direttore) REFERENCES Direttore(ID_Direttore)
79 ON DELETE CASCADE ON UPDATE CASCADE,
80 PRIMARY KEY(ID_Personale)
81);
82
83DROP TABLE IF EXISTS Laboratorio;
84CREATE TABLE Laboratorio(
85 Codice_Laboratorio INT NOT NULL AUTO_INCREMENT,
86 Nome_Laboratorio VARCHAR(16),
87 ID_Personale INT NOT NULL,
88 PRIMARY KEY(Codice_Laboratorio),
89 FOREIGN KEY (ID_Personale) REFERENCES Personale_ATA(ID_Personale)
90 ON DELETE CASCADE ON UPDATE CASCADE
91 );
92
93DROP TABLE IF EXISTS Materia;
94CREATE TABLE Materia(
95 Nome_Materia VARCHAR(16) NOT NULL,
96 PRIMARY KEY(Nome_Materia)
97);
98
99DROP TABLE IF EXISTS Esame;
100CREATE TABLE Esame(
101 ID_Esame INT NOT NULL AUTO_INCREMENT,
102 Data_Esame DATE NOT NULL,
103 Voto INT NOT NULL,
104 ID_Professore INT NOT NULL,
105 Matricola INT NOT NULL,
106 Nome_Materia VARCHAR(16) NOT NULL,
107 FOREIGN KEY (ID_Professore) REFERENCES Professore(ID_Professore)
108 ON UPDATE CASCADE ON DELETE CASCADE,
109 FOREIGN KEY (Matricola) REFERENCES Studente(Matricola)
110 ON UPDATE CASCADE ON DELETE CASCADE,
111 FOREIGN KEY (Nome_Materia) REFERENCES Materia(Nome_Materia)
112 ON UPDATE CASCADE ON DELETE CASCADE,
113 PRIMARY KEY(ID_Esame)
114);
115
116DROP TABLE IF EXISTS Insegna_In;
117CREATE TABLE Insegna_In(
118 ID_Professore INT NOT NULL,
119 Anno INT NOT NULL,
120 Sezione VARCHAR(1) NOT NULL,
121 PRIMARY KEY (Anno, Sezione, ID_Professore),
122 FOREIGN KEY (ID_Professore) REFERENCES Professore(ID_Professore)
123 ON UPDATE CASCADE ON DELETE CASCADE,
124 FOREIGN KEY (Anno, Sezione) REFERENCES Classe(Anno,Sezione)
125 ON UPDATE CASCADE ON DELETE CASCADE
126);
127
128DROP TABLE IF EXISTS Istruisce_Su;
129CREATE TABLE Istruisce_Su(
130 ID_Professore INT NOT NULL,
131 Nome_Materia VARCHAR(16),
132 PRIMARY KEY (Nome_Materia, ID_Professore),
133 FOREIGN KEY (ID_Professore) REFERENCES Professore(ID_Professore)
134 ON UPDATE CASCADE ON DELETE CASCADE,
135 FOREIGN KEY (Nome_Materia) REFERENCES Materia(Nome_Materia)
136 ON UPDATE CASCADE ON DELETE CASCADE
137);
138
139DROP TABLE IF EXISTS Compresa_In;
140CREATE TABLE Compresa_In(
141 Nome_Materia VARCHAR(16) NOT NULL,
142 Nome_Indirizzo VARCHAR(16) NOT NULL,
143 PRIMARY KEY (Nome_Materia, Nome_Indirizzo),
144 FOREIGN KEY (Nome_Indirizzo) REFERENCES Indirizzo_Di_Studio(Nome_Indirizzo)
145 ON UPDATE CASCADE ON DELETE CASCADE,
146 FOREIGN KEY (Nome_Materia) REFERENCES Materia(Nome_Materia)
147 ON UPDATE CASCADE ON DELETE CASCADE
148);