· 4 years ago · Jan 14, 2021, 03:30 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(16) 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);
28
29DROP TABLE IF EXISTS Studente;
30CREATE TABLE Studente(
31 Codice_Fiscale VARCHAR(16) NOT NULL,
32 Matricola INT NOT NULL AUTO_INCREMENT,
33 FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
34 ON DELETE CASCADE ON UPDATE CASCADE
35);
36
37DROP TABLE IF EXISTS Impiegato;
38CREATE TABLE Impiegato(
39 Codice_Fiscale VARCHAR(16) NOT NULL,
40 ID_Impiegato INT NOT NULL AUTO_INCREMENT,
41 ID_Direttore INT NOT NULL,
42 FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
43 ON DELETE CASCADE ON UPDATE CASCADE,
44 FOREIGN KEY (ID_Direttore) REFERENCES Direttore(ID_Direttore)
45 ON DELETE CASCADE ON UPDATE CASCADE
46);
47
48DROP TABLE IF EXISTS Professore;
49CREATE TABLE Professore(
50 Codice_Fiscale VARCHAR(16) NOT NULL,
51 ID_Professore INT NOT NULL AUTO_INCREMENT,
52 FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
53 ON DELETE CASCADE ON UPDATE CASCADE
54
55);
56
57DROP TABLE IF EXISTS Personale_ATA;
58CREATE TABLE Personale_ATA(
59 Codice_Fiscale VARCHAR(16) NOT NULL,
60 ID_Personale INT NOT NULL AUTO_INCREMENT,
61 Tipologia VARCHAR(16) NOT NULL,
62 Laboratorio VARCHAR(16) NOT NULL,
63 Piano INT NOT NULL,
64 CONSTRAINT Fk_Personale_Impiegato FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
65 ON DELETE CASCADE ON UPDATE CASCADE
66);
67
68DROP TABLE IF EXISTS Studente;
69CREATE TABLE Studente(
70 Codice_Fiscale VARCHAR(16) NOT NULL,
71 Matricola INT NOT NULL AUTO_INCREMENT,
72 Anno INT NOT NULL,
73 Sezione VARCHAR(1) NOT NULL,
74 FOREIGN KEY (Anno, Sezione) REFERENCES Classe(Anno,Sezione)
75 ON UPDATE CASCADE ON DELETE CASCADE,
76 CONSTRAINT Fk_Studente_Persona FOREIGN KEY (Codice_Fiscale) REFERENCES Persona(Codice_Fiscale)
77 ON DELETE CASCADE ON UPDATE CASCADE
78);
79
80DROP TABLE IF EXISTS Esame;
81CREATE TABLE Esame(
82 ID_Esame INT NOT NULL AUTO_INCREMENT,
83 Data_Esame DATE NOT NULL,
84 Voto INT NOT NULL,
85 ID_Professore INT NOT NULL,
86 Matricola INT NOT NULL,
87 Nome_Materia VARCHAR(16) NOT NULL,
88 FOREIGN KEY (ID_Professore) REFERENCES Professore(ID_Professore)
89 ON UPDATE CASCADE ON DELETE CASCADE,
90 FOREIGN KEY (Matricola) REFERENCES Studente(Matricola)
91 ON UPDATE CASCADE ON DELETE CASCADE,
92 FOREIGN KEY (Nome_Materia) REFERENCES Materia(Nome_Materia)
93 ON UPDATE CASCADE ON DELETE CASCADE,
94 PRIMARY KEY(ID_Esame)
95);
96
97DROP TABLE IF EXISTS Classe;
98CREATE TABLE Classe(
99 Anno INT NOT NULL,
100 Sezione VARCHAR(1) NOT NULL,
101 Nome_Indirizzo VARCHAR(16) NOT NULL,
102 FOREIGN KEY (Nome_Indirizzo) REFERENCES Indirizzo_Di_Studio(Nome_Indirizzo)
103 ON UPDATE CASCADE ON DELETE CASCADE,
104 PRIMARY KEY(Anno, Sezione)
105);
106
107DROP TABLE IF EXISTS Materia;
108CREATE TABLE Materia(
109 Nome_Materia VARCHAR(16) NOT NULL,
110 PRIMARY KEY(Nome_Materia)
111);
112
113DROP TABLE IF EXISTS Indirizzo_Di_Studio;
114CREATE TABLE Indirizzo_Di_Studio(
115 Nome_Indirizzo VARCHAR(16) NOT NULL,
116 PRIMARY KEY(Nome_Indirizzo)
117);
118
119DROP TABLE IF EXISTS Insegna_In;
120CREATE TABLE Insegna_In(
121 ID_Professore INT NOT NULL,
122 Anno INT NOT NULL,
123 Sezione VARCHAR(1) NOT NULL,
124 FOREIGN KEY (ID_Professore) REFERENCES Professore(ID_Professore)
125 ON UPDATE CASCADE ON DELETE CASCADE,
126 FOREIGN KEY (Anno, Sezione) REFERENCES Classe(Anno,Sezione)
127 ON UPDATE CASCADE ON DELETE CASCADE
128);
129
130DROP TABLE IF EXISTS Istruisce_Su;
131CREATE TABLE Istruisce_Su(
132 ID_Professore INT NOT NULL,
133 Nome_Materia VARCHAR(16),
134 FOREIGN KEY (ID_Professore) REFERENCES Professore(ID_Professore)
135 ON UPDATE CASCADE ON DELETE CASCADE,
136 FOREIGN KEY (Nome_Materia) REFERENCES Materia(Nome_Materia)
137 ON UPDATE CASCADE ON DELETE CASCADE
138);
139
140DROP TABLE IF EXISTS Compresa_In;
141CREATE TABLE Compresa_In(
142 Nome_Materia INT NOT NULL,
143 Nome_Indirizzo VARCHAR(16),
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);
149
150
151
152
153