· 7 years ago · Feb 14, 2019, 08:36 PM
1-- MySQL Workbench Forward Engineering
2
3SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
4SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
5SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
6
7-- -----------------------------------------------------
8-- Schema PiscineRoma
9-- -----------------------------------------------------
10
11-- -----------------------------------------------------
12-- Schema PiscineRoma
13-- -----------------------------------------------------
14CREATE SCHEMA IF NOT EXISTS `PiscineRoma` ;
15USE `PiscineRoma` ;
16
17-- -----------------------------------------------------
18-- Table `PiscineRoma`.`Piscina`
19-- -----------------------------------------------------
20DROP TABLE IF EXISTS `PiscineRoma`.`Piscina` ;
21
22CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Piscina` (
23 `Nome` VARCHAR(45) NOT NULL,
24 `NumeroDiTelefono` VARCHAR(45) NOT NULL,
25 `Indirizzo` VARCHAR(45) NOT NULL,
26 `NomeResponsabile` VARCHAR(45) NOT NULL,
27 `DataInizioDisponibilità VascaEsterna` DATE NULL,
28 `DataFineDisponibilità VascaEsterna` DATE NULL,
29 PRIMARY KEY (`Nome`),
30 UNIQUE INDEX `NumeroDiTelefono_UNIQUE` (`NumeroDiTelefono` ASC),
31 UNIQUE INDEX `Indirizzo_UNIQUE` (`Indirizzo` ASC))
32ENGINE = InnoDB;
33
34
35-- -----------------------------------------------------
36-- Table `PiscineRoma`.`Persona`
37-- -----------------------------------------------------
38DROP TABLE IF EXISTS `PiscineRoma`.`Persona` ;
39
40CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Persona` (
41 `CF` VARCHAR(16) NOT NULL,
42 `Nome` VARCHAR(45) NOT NULL,
43 `Cognome` VARCHAR(45) NOT NULL,
44 `Indirizzo` VARCHAR(45) NOT NULL,
45 `Età ` INT NOT NULL,
46 `Telefono` VARCHAR(20) NULL,
47 `Cellulare` VARCHAR(20) NULL,
48 `IndirizzoEMail` VARCHAR(45) NULL,
49 PRIMARY KEY (`CF`),
50 UNIQUE INDEX `Telefono_UNIQUE` (`Telefono` ASC),
51 UNIQUE INDEX `Cellulare_UNIQUE` (`Cellulare` ASC),
52 UNIQUE INDEX `IndirizzoEMail_UNIQUE` (`IndirizzoEMail` ASC))
53ENGINE = InnoDB;
54
55
56-- -----------------------------------------------------
57-- Table `PiscineRoma`.`IngressoSingolo`
58-- -----------------------------------------------------
59DROP TABLE IF EXISTS `PiscineRoma`.`IngressoSingolo` ;
60
61CREATE TABLE IF NOT EXISTS `PiscineRoma`.`IngressoSingolo` (
62 `NomePiscina` VARCHAR(45) NOT NULL,
63 `Persona_CF` VARCHAR(16) NOT NULL,
64 `DataIngresso` DATETIME NOT NULL,
65 PRIMARY KEY (`NomePiscina`, `Persona_CF`),
66 INDEX `fk_Piscina_has_PersonaNonIscritta_Piscina_idx` (`NomePiscina` ASC),
67 INDEX `fk_IngressoSingolo_Persona1_idx` (`Persona_CF` ASC),
68 CONSTRAINT `fk_Piscina_has_PersonaNonIscritta_Piscina`
69 FOREIGN KEY (`NomePiscina`)
70 REFERENCES `PiscineRoma`.`Piscina` (`Nome`)
71 ON DELETE NO ACTION
72 ON UPDATE CASCADE,
73 CONSTRAINT `fk_IngressoSingolo_Persona1`
74 FOREIGN KEY (`Persona_CF`)
75 REFERENCES `PiscineRoma`.`Persona` (`CF`)
76 ON DELETE NO ACTION
77 ON UPDATE NO ACTION)
78ENGINE = InnoDB;
79
80
81-- -----------------------------------------------------
82-- Table `PiscineRoma`.`Insegnante`
83-- -----------------------------------------------------
84DROP TABLE IF EXISTS `PiscineRoma`.`Insegnante` ;
85
86CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Insegnante` (
87 `CF` VARCHAR(16) NOT NULL,
88 `Nome` VARCHAR(45) NOT NULL,
89 `Cognome` VARCHAR(45) NOT NULL,
90 `Telefono` VARCHAR(20) NULL,
91 PRIMARY KEY (`CF`),
92 UNIQUE INDEX `Telefono_UNIQUE` (`Telefono` ASC))
93 ENGINE = InnoDB;
94
95
96-- -----------------------------------------------------
97-- Table `PiscineRoma`.`Qualifica`
98-- -----------------------------------------------------
99DROP TABLE IF EXISTS `PiscineRoma`.`Qualifica` ;
100
101CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Qualifica` (
102 `Nome` VARCHAR(45) NOT NULL,
103 PRIMARY KEY (`Nome`))
104ENGINE = InnoDB;
105
106
107-- -----------------------------------------------------
108-- Table `PiscineRoma`.`Possiede`
109-- -----------------------------------------------------
110DROP TABLE IF EXISTS `PiscineRoma`.`Possiede` ;
111
112CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Possiede` (
113 `Insegnante` VARCHAR(16) NOT NULL,
114 `Qualifica` VARCHAR(45) NOT NULL,
115 PRIMARY KEY (`Insegnante`, `Qualifica`),
116 INDEX `fk_Insegnante_has_Qualifica_Qualifica1_idx` (`Qualifica` ASC),
117 INDEX `fk_Insegnante_has_Qualifica_Insegnante1_idx` (`Insegnante` ASC),
118 CONSTRAINT `fk_Insegnante_has_Qualifica_Insegnante1`
119 FOREIGN KEY (`Insegnante`)
120 REFERENCES `PiscineRoma`.`Insegnante` (`CF`)
121 ON DELETE NO ACTION
122 ON UPDATE NO ACTION,
123 CONSTRAINT `fk_Insegnante_has_Qualifica_Qualifica1`
124 FOREIGN KEY (`Qualifica`)
125 REFERENCES `PiscineRoma`.`Qualifica` (`Nome`)
126 ON DELETE NO ACTION
127 ON UPDATE NO ACTION)
128ENGINE = InnoDB;
129
130
131-- -----------------------------------------------------
132-- Table `PiscineRoma`.`Impiego`
133-- -----------------------------------------------------
134DROP TABLE IF EXISTS `PiscineRoma`.`Impiego` ;
135
136CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Impiego` (
137 `Codice` INT NOT NULL AUTO_INCREMENT,
138 `Inizio` DATE NOT NULL,
139 `Fine` DATE NULL,
140 `Tipo` VARCHAR(45) NOT NULL DEFAULT 'impiego_corrente',
141 `NomePiscina` VARCHAR(45) NOT NULL,
142 `Insegnante` VARCHAR(16) NOT NULL,
143 PRIMARY KEY (`Codice`),
144 INDEX `fk_Impiego_Piscina1_idx` (`NomePiscina` ASC),
145 INDEX `fk_Impiego_Insegnante1_idx` (`Insegnante` ASC),
146 CONSTRAINT `fk_Impiego_Piscina1`
147 FOREIGN KEY (`NomePiscina`)
148 REFERENCES `PiscineRoma`.`Piscina` (`Nome`)
149 ON DELETE NO ACTION
150 ON UPDATE CASCADE,
151 CONSTRAINT `fk_Impiego_Insegnante1`
152 FOREIGN KEY (`Insegnante`)
153 REFERENCES `PiscineRoma`.`Insegnante` (`CF`)
154 ON DELETE NO ACTION
155 ON UPDATE NO ACTION)
156ENGINE = InnoDB;
157
158
159-- -----------------------------------------------------
160-- Table `PiscineRoma`.`Corso`
161-- -----------------------------------------------------
162DROP TABLE IF EXISTS `PiscineRoma`.`Corso` ;
163
164CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Corso` (
165 `NomeAttivita` VARCHAR(45) NOT NULL,
166 `NomePiscina` VARCHAR(45) NOT NULL,
167 `Costo` SMALLINT(2) NOT NULL,
168 `NumeroMinimoDiPartecipanti` SMALLINT(2) NOT NULL,
169 `NumeroMassimoDiPartecipanti` SMALLINT(2) NOT NULL,
170 PRIMARY KEY (`NomeAttivita`, `NomePiscina`),
171 INDEX `fk_Corso_Piscina1_idx` (`NomePiscina` ASC),
172 CONSTRAINT `fk_Corso_Piscina1`
173 FOREIGN KEY (`NomePiscina`)
174 REFERENCES `PiscineRoma`.`Piscina` (`Nome`)
175 ON DELETE NO ACTION
176 ON UPDATE CASCADE)
177ENGINE = InnoDB
178PACK_KEYS = DEFAULT
179ROW_FORMAT = DEFAULT;
180
181
182-- -----------------------------------------------------
183-- Table `PiscineRoma`.`Lezione`
184-- -----------------------------------------------------
185DROP TABLE IF EXISTS `PiscineRoma`.`Lezione` ;
186
187CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Lezione` (
188 `Codice` INT NOT NULL AUTO_INCREMENT,
189 `NomeAttivitaCorso` VARCHAR(45) NOT NULL,
190 `NomePiscina` VARCHAR(45) NOT NULL,
191 `Insegnante` VARCHAR(16) NOT NULL,
192 `Dat` DATETIME NOT NULL,
193 `Numero` INT NOT NULL,
194 PRIMARY KEY (`Codice`),
195 INDEX `fk_Lezione_Insegnante1_idx` (`Insegnante` ASC),
196 CONSTRAINT `fk_Lezione_Corso1`
197 FOREIGN KEY (`NomeAttivitaCorso` , `NomePiscina`)
198 REFERENCES `PiscineRoma`.`Corso` (`NomeAttivita` , `NomePiscina`)
199 ON DELETE NO ACTION
200 ON UPDATE CASCADE,
201 CONSTRAINT `fk_Lezione_Insegnante1`
202 FOREIGN KEY (`Insegnante`)
203 REFERENCES `PiscineRoma`.`Insegnante` (`CF`)
204 ON DELETE NO ACTION
205 ON UPDATE NO ACTION)
206ENGINE = InnoDB;
207
208
209-- -----------------------------------------------------
210-- Table `PiscineRoma`.`Iscrizione`
211-- -----------------------------------------------------
212DROP TABLE IF EXISTS `PiscineRoma`.`Iscrizione` ;
213
214CREATE TABLE IF NOT EXISTS `PiscineRoma`.`Iscrizione` (
215 `Codice` INT NOT NULL AUTO_INCREMENT,
216 `DataIscrizione` DATE NOT NULL,
217 `CodiceCertificato` INT NULL,
218 `DataCertificato` DATE NULL,
219 `Medico` VARCHAR(45) NULL,
220 `NomeAttivitaCorso` VARCHAR(45) NOT NULL,
221 `NomePiscina` VARCHAR(45) NOT NULL,
222 `PersonaIscritta` VARCHAR(16) NOT NULL,
223 PRIMARY KEY (`Codice`),
224 INDEX `fk_Iscrizione_Corso1_idx` (`NomeAttivitaCorso` ASC, `NomePiscina` ASC),
225 INDEX `fk_Iscrizione_PersonaIscritta1_idx` (`PersonaIscritta` ASC),
226 UNIQUE INDEX `CodiceCertificato_UNIQUE` (`CodiceCertificato` ASC),
227 CONSTRAINT `fk_Iscrizione_Corso1`
228 FOREIGN KEY (`NomeAttivitaCorso` , `NomePiscina`)
229 REFERENCES `PiscineRoma`.`Corso` (`NomeAttivita` , `NomePiscina`)
230 ON DELETE NO ACTION
231 ON UPDATE CASCADE,
232 CONSTRAINT `fk_Iscrizione_PersonaIscritta1`
233 FOREIGN KEY (`PersonaIscritta`)
234 REFERENCES `PiscineRoma`.`Persona` (`CF`)
235 ON DELETE NO ACTION
236 ON UPDATE CASCADE)
237ENGINE = InnoDB;
238
239USE `PiscineRoma` ;