· 4 years ago · Feb 02, 2021, 03: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;
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 Laboratorio;
68CREATE TABLE Laboratorio(
69 Codice_Laboratorio INT NOT NULL AUTO_INCREMENT,
70 Nome_Laboratorio VARCHAR(16),
71 PRIMARY KEY(Codice_Laboratorio)
72 );
73
74DROP TABLE IF EXISTS Personale_ATA;
75CREATE TABLE Personale_ATA(
76 ID_Personale INT NOT NULL AUTO_INCREMENT,
77 ID_Direttore INT NOT NULL,
78 Codice_Fiscale CHAR(16) NOT NULL,
79 Nome VARCHAR(16) NOT NULL,
80 Cognome VARCHAR(16) NOT NULL,
81 Recapito VARCHAR(16) NOT NULL,
82 Data_Nascita DATE NOT NULL,
83 Tipologia VARCHAR(16) NOT NULL,
84 Codice_Laboratorio INT,
85 Piano INT,
86 FOREIGN KEY (ID_Direttore) REFERENCES Direttore(ID_Direttore)
87 ON DELETE CASCADE ON UPDATE CASCADE,
88 FOREIGN KEY (Codice_Laboratorio) REFERENCES Laboratorio(Codice_Laboratorio)
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);