· 4 years ago · Jan 15, 2021, 02:02 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;
9DROP TABLE IF EXISTS Persona;
10CREATE TABLE Persona(
11 Codice_Fiscale VARCHAR(16) NOT NULL,
12 Nome VARCHAR(16) NOT NULL,
13 Cognome VARCHAR(16) NOT NULL,
14 Indirizzo VARCHAR(40) NOT NULL,
15 Recapito VARCHAR(16) NOT NULL,
16 Data_Nascita DATE NOT NULL,
17 PRIMARY KEY(Codice_Fiscale)
18);
19
20DROP TABLE IF EXISTS Direttore;
21CREATE TABLE Direttore(
22 Codice_Fiscale VARCHAR(16) NOT NULL,
23 ID_Direttore INT NOT NULL AUTO_INCREMENT,
24 Data_Servizio DATE,
25 FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
26 ON DELETE CASCADE ON UPDATE CASCADE,
27 PRIMARY KEY(ID_Direttore)
28);
29
30
31DROP TABLE IF EXISTS Impiegato;
32CREATE TABLE Impiegato(
33 Codice_Fiscale VARCHAR(16) NOT NULL,
34 ID_Impiegato INT NOT NULL AUTO_INCREMENT,
35 ID_Direttore INT NOT NULL,
36 FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
37 ON DELETE CASCADE ON UPDATE CASCADE,
38 FOREIGN KEY (ID_Direttore) REFERENCES Direttore(ID_Direttore)
39 ON DELETE CASCADE ON UPDATE CASCADE,
40 PRIMARY KEY(ID_Impiegato)
41);
42
43DROP TABLE IF EXISTS Indirizzo_Di_Studio;
44CREATE TABLE Indirizzo_Di_Studio(
45 Nome_Indirizzo VARCHAR(16) NOT NULL,
46 PRIMARY KEY(Nome_Indirizzo)
47);
48
49DROP TABLE IF EXISTS Classe;
50CREATE TABLE Classe(
51 Anno INT NOT NULL,
52 Sezione VARCHAR(1) NOT NULL,
53 Nome_Indirizzo VARCHAR(16) NOT NULL,
54 FOREIGN KEY (Nome_Indirizzo) REFERENCES Indirizzo_Di_Studio(Nome_Indirizzo)
55 ON UPDATE CASCADE ON DELETE CASCADE,
56 PRIMARY KEY(Anno, Sezione)
57);
58
59DROP TABLE IF EXISTS Studente;
60CREATE TABLE Studente(
61 Codice_Fiscale VARCHAR(16) NOT NULL,
62 Matricola INT NOT NULL AUTO_INCREMENT,
63 Anno INT NOT NULL,
64 Sezione VARCHAR(1) NOT NULL,
65 FOREIGN KEY (Anno, Sezione) REFERENCES Classe(Anno,Sezione)
66 ON UPDATE CASCADE ON DELETE CASCADE,
67 FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
68 ON DELETE CASCADE ON UPDATE CASCADE,
69 PRIMARY KEY(Matricola)
70);
71
72DROP TABLE IF EXISTS Professore;
73CREATE TABLE Professore(
74 Codice_Fiscale VARCHAR(16) NOT NULL,
75 ID_Professore INT NOT NULL AUTO_INCREMENT,
76 FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
77 ON DELETE CASCADE ON UPDATE CASCADE,
78 PRIMARY KEY(ID_Professore)
79);
80
81DROP TABLE IF EXISTS Personale_ATA;
82CREATE TABLE Personale_ATA(
83 Codice_Fiscale VARCHAR(16) NOT NULL,
84 ID_Personale INT NOT NULL AUTO_INCREMENT,
85 Tipologia VARCHAR(16) NOT NULL,
86 Laboratorio VARCHAR(16),
87 Piano INT,
88 FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
89 ON DELETE CASCADE ON UPDATE CASCADE,
90 PRIMARY KEY(ID_Personale)
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);