-- MySQL Script generated by MySQL Workbench -- Thu Apr 30 16:49:00 2020 -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @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'; -- ----------------------------------------------------- -- Schema scuola -- ----------------------------------------------------- -- ----------------------------------------------------- -- Schema scuola -- ----------------------------------------------------- CREATE SCHEMA IF NOT EXISTS `scuola` ; USE `scuola` ; -- ----------------------------------------------------- -- Table `scuola`.`comune` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`comune` ( `codice` INT NOT NULL, `nome` VARCHAR(45) NOT NULL, `regione` VARCHAR(45) NOT NULL, PRIMARY KEY (`codice`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`classe` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`classe` ( `anno` TINYINT NOT NULL, `sezione` CHAR(1) NOT NULL, PRIMARY KEY (`anno`, `sezione`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`studente` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`studente` ( `codice_fiscale` CHAR(16) NOT NULL, `nome` VARCHAR(45) NOT NULL, `cognome` VARCHAR(45) NOT NULL, `comune_residenza` INT NOT NULL, `classe_anno` TINYINT NOT NULL, `classe_sezione` CHAR(1) NOT NULL, `nazione` VARCHAR(45) NULL, PRIMARY KEY (`codice_fiscale`), INDEX `ResidenzaStudente_idx` (`comune_residenza` ASC) VISIBLE, INDEX `ClasseFK_idx` (`classe_anno` ASC, `classe_sezione` ASC) VISIBLE, CONSTRAINT `ResidenzaStudente` FOREIGN KEY (`comune_residenza`) REFERENCES `scuola`.`comune` (`codice`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `ClasseFK` FOREIGN KEY (`classe_anno` , `classe_sezione`) REFERENCES `scuola`.`classe` (`anno` , `sezione`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`insegnante` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`insegnante` ( `codice_fiscale` CHAR(16) NOT NULL, `nome` VARCHAR(45) NOT NULL, `cognome` VARCHAR(45) NOT NULL, `comune_residenza` INT NOT NULL, `comune_nascita` INT NOT NULL, PRIMARY KEY (`codice_fiscale`), INDEX `ResidenzaInsegnante_idx` (`comune_residenza` ASC) VISIBLE, INDEX `NascitaInsegnante_idx` (`comune_nascita` ASC) VISIBLE, CONSTRAINT `NascitaInsegnante` FOREIGN KEY (`comune_nascita`) REFERENCES `scuola`.`comune` (`codice`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `ResidenzaInsegnante` FOREIGN KEY (`comune_residenza`) REFERENCES `scuola`.`comune` (`codice`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`scuola` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`scuola` ( `codice` INT NOT NULL, `nome` VARCHAR(45) NOT NULL, `comune` INT NOT NULL, PRIMARY KEY (`codice`), INDEX `ScuolaRisiede_idx` (`comune` ASC) VISIBLE, CONSTRAINT `ScuolaRisiede` FOREIGN KEY (`comune`) REFERENCES `scuola`.`comune` (`codice`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`materia` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`materia` ( `codice` INT NOT NULL, `nome` VARCHAR(45) NOT NULL, PRIMARY KEY (`codice`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`argomento` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`argomento` ( `codice` INT NOT NULL AUTO_INCREMENT, `codice_materia` INT NOT NULL, `nome` VARCHAR(45) NOT NULL, `ore` TINYINT NOT NULL, PRIMARY KEY (`codice`, `codice_materia`), INDEX `MateriaArgomento_idx` (`codice_materia` ASC) VISIBLE, CONSTRAINT `MateriaArgomento` FOREIGN KEY (`codice_materia`) REFERENCES `scuola`.`materia` (`codice`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`valutazione` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`valutazione` ( `codice_argomento` INT NOT NULL, `codice_materia` INT NOT NULL, `studente` CHAR(16) NOT NULL, `voto` TINYINT NOT NULL, INDEX `ArgomentoStudente1_idx1` (`codice_argomento` ASC, `codice_materia` ASC) VISIBLE, INDEX `ArgomentoStudente3_idx` (`studente` ASC) VISIBLE, PRIMARY KEY (`codice_argomento`, `codice_materia`, `studente`), CONSTRAINT `ArgomentoStudente1` FOREIGN KEY (`codice_argomento` , `codice_materia`) REFERENCES `scuola`.`argomento` (`codice` , `codice_materia`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `ArgomentoStudente3` FOREIGN KEY (`studente`) REFERENCES `scuola`.`studente` (`codice_fiscale`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`parentela` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`parentela` ( `studente1` CHAR(16) NOT NULL, `studente2` CHAR(16) NOT NULL, `grado` VARCHAR(45) NOT NULL, INDEX `StudenteParente1_idx` (`studente1` ASC) VISIBLE, INDEX `StudenteParente2_idx` (`studente2` ASC) VISIBLE, PRIMARY KEY (`studente1`, `studente2`), CONSTRAINT `StudenteParente1` FOREIGN KEY (`studente1`) REFERENCES `scuola`.`studente` (`codice_fiscale`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `StudenteParente2` FOREIGN KEY (`studente2`) REFERENCES `scuola`.`studente` (`codice_fiscale`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`insegnamento` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`insegnamento` ( `insegnante` CHAR(16) NOT NULL, `codice_materia` INT NOT NULL, `classe_anno` TINYINT NOT NULL, `classe_sezione` CHAR(1) NOT NULL, `ore_settimanali` TINYINT NOT NULL, INDEX `DocenteMateriaClasse1_idx` (`insegnante` ASC) VISIBLE, INDEX `DocenteMateriaClasse2_idx` (`codice_materia` ASC) VISIBLE, INDEX `ClasseAnnoFK_1_idx` (`classe_anno` ASC, `classe_sezione` ASC) VISIBLE, PRIMARY KEY (`insegnante`, `codice_materia`, `classe_anno`, `classe_sezione`), CONSTRAINT `DocenteMateriaClasse1` FOREIGN KEY (`insegnante`) REFERENCES `scuola`.`insegnante` (`codice_fiscale`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `DocenteMateriaClasse2` FOREIGN KEY (`codice_materia`) REFERENCES `scuola`.`materia` (`codice`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `ClasseAnnoFK_1` FOREIGN KEY (`classe_anno` , `classe_sezione`) REFERENCES `scuola`.`classe` (`anno` , `sezione`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`insegnamento_altra_scuola` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`insegnamento_altra_scuola` ( `insegnante` CHAR(16) NOT NULL, `codice_scuola` INT NOT NULL, INDEX `InsegnanteAltraScuola_idx` (`insegnante` ASC) VISIBLE, INDEX `AltraScuola_idx` (`codice_scuola` ASC) VISIBLE, PRIMARY KEY (`insegnante`, `codice_scuola`), CONSTRAINT `InsegnanteAltraScuola` FOREIGN KEY (`insegnante`) REFERENCES `scuola`.`insegnante` (`codice_fiscale`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `AltraScuola` FOREIGN KEY (`codice_scuola`) REFERENCES `scuola`.`scuola` (`codice`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `scuola`.`propedeuticita` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `scuola`.`propedeuticita` ( `materia` INT NOT NULL, `argomento_prima` INT NOT NULL, `argomento_dopo` INT NOT NULL, INDEX `Argomento_prima_idx` (`materia` ASC, `argomento_dopo` ASC) VISIBLE, INDEX `Argomento_dopo_idx` (`materia` ASC, `argomento_prima` ASC) VISIBLE, PRIMARY KEY (`argomento_prima`, `argomento_dopo`, `materia`), CONSTRAINT `Argomento_prima` FOREIGN KEY (`argomento_prima` , `materia`) REFERENCES `scuola`.`argomento` (`codice` , `codice_materia`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `Argomento_dopo` FOREIGN KEY (`argomento_dopo` , `materia`) REFERENCES `scuola`.`argomento` (`codice` , `codice_materia`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;