CREATE SCHEMA IF NOT EXISTS universita; CREATE TABLE IF NOT EXISTS universita.citta ( codice INT NOT NULL, nome VARCHAR(45) NOT NULL, provincia VARCHAR(45) NOT NULL, regione VARCHAR(45) NOT NULL, PRIMARY KEY (codice)) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS universita.studente ( matricola INT NOT NULL, cognome VARCHAR(45) NOT NULL, nome VARCHAR(45) NOT NULL, citta_residenza INT NOT NULL, corso_laurea INT NOT NULL, PRIMARY KEY (matricola), CONSTRAINT fk_corso_laurea FOREIGN KEY (corso_laurea) REFERENCES universita.corso_laurea (codice) ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT fk_citta FOREIGN KEY (citta_residenza) REFERENCES universita.citta (codice) ON DELETE RESTRICT ON UPDATE NO ACTION) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS universita.docente ( matricola INT NOT NULL, cognome VARCHAR(45) NOT NULL, nome VARCHAR(45) NOT NULL, citta_residenza INT NOT NULL, ruolo ENUM('Professore Ordinario', 'Professore Associato', 'Ricercatore') NOT NULL, PRIMARY KEY (matricola), CONSTRAINT fk_citta FOREIGN KEY (citta_residenza) REFERENCES universita.citta (codice) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS `universita`.`Corso_Laurea` ( `Codice` INT NOT NULL, `Nome` VARCHAR(45) NOT NULL, `Tipologia` ENUM('triennale', 'magistrale') NOT NULL, `Presidente` INT NOT NULL, PRIMARY KEY (`Codice`), INDEX `Presidente_idx` (`Presidente` ASC) VISIBLE, CONSTRAINT `Presidente_key` FOREIGN KEY (`Presidente`) REFERENCES `universita`.`Docente` (`Matricola`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; SHOW WARNINGS; -- ----------------------------------------------------- -- Table `universita`.`Studente` -- ----------------------------------------------------- SHOW WARNINGS; -- ----------------------------------------------------- -- Table `universita`.`Corso` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `universita`.`Corso` ( `Codice` INT NOT NULL, `Nome` VARCHAR(45) NOT NULL, `Ore_lezione` INT NOT NULL, `Ore_esercitazione` INT NULL, `Crediti_lezione` INT NOT NULL, `Crediti_esercitazione` INT NULL, `Docente` INT NOT NULL, PRIMARY KEY (`Codice`), INDEX `Docente_idx` (`Docente` ASC) VISIBLE, CONSTRAINT `Docente_key` FOREIGN KEY (`Docente`) REFERENCES `universita`.`Docente` (`Matricola`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; SHOW WARNINGS; -- ----------------------------------------------------- -- Table `universita`.`Esame` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `universita`.`Esame` ( `Matricola_studente` INT NOT NULL, `Codice_corso` INT NOT NULL, `Data` DATETIME NOT NULL, `Voto` INT NOT NULL, PRIMARY KEY (`Matricola_studente`, `Codice_corso`), INDEX `Matricola_idx` (`Matricola_studente` ASC) VISIBLE, INDEX `Corso_idx` (`Codice_corso` ASC) VISIBLE, CONSTRAINT `Matricola_key` FOREIGN KEY (`Matricola_studente`) REFERENCES `universita`.`Studente` (`Matricola`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `Corso_key` FOREIGN KEY (`Codice_corso`) REFERENCES `universita`.`Corso` (`Codice`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SHOW WARNINGS; -- ----------------------------------------------------- -- Table `universita`.`Corso_Laurea_Corsi` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `universita`.`Corso_Laurea_Corsi` ( `Codice_Corso_Laurea` INT NOT NULL, `Codice_Corso` INT NOT NULL, INDEX `CdL_key_idx` (`Codice_Corso_Laurea` ASC) VISIBLE, INDEX `Codice_c_key_idx` (`Codice_Corso` ASC) VISIBLE, PRIMARY KEY (`Codice_Corso`, `Codice_Corso_Laurea`), CONSTRAINT `CdL_key` FOREIGN KEY (`Codice_Corso_Laurea`) REFERENCES `universita`.`Corso_Laurea` (`Codice`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `Codice_c_key` FOREIGN KEY (`Codice_Corso`) REFERENCES `universita`.`Corso` (`Codice`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SHOW WARNINGS; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;