Denis, estou fazendo diretamente pelo Workbench, abaixo é como pensei no diagrama, mas quando tento definir
Aqui os códigos:
CREATE TABLE `sgp`.`alocacoes_salas` (
`id_alocacao` INT NOT NULL,
`num_sala` INT NOT NULL,
PRIMARY KEY (`id_alocacao`, `num_sala`),
CONSTRAINT `fk_alocacoes_salas_alocacoes`
FOREIGN KEY (`id_alocacao`)
REFERENCES `sgp`.`alocacoes` (`id_alocacao`)
ON DELETE CASCADE
ON UPDATE CASCADE);
---
CREATE TABLE `sgp`.`alocacoes_colegios` (
`id_alocacao` INT NOT NULL,
`cod_colegio` INT NOT NULL,
PRIMARY KEY (`id_alocacao`, `cod_colegio`),
INDEX `fk_alocacoes_colegios_colegios_idx` (`cod_colegio` ASC),
CONSTRAINT `fk_alocacoes_colegios_alocacoes`
FOREIGN KEY (`id_alocacao`)
REFERENCES `sgp`.`alocacoes` (`id_alocacao`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_alocacoes_colegios_colegios`
FOREIGN KEY (`cod_colegio`)
REFERENCES `sgp`.`colegios` (`cod_colegio`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
---
CREATE TABLE `sgp`.`colegios_salas` (
`id_alocacao` INT NOT NULL,
`cod_colegio` INT NOT NULL,
`num_sala` INT NOT NULL,
PRIMARY KEY (`id_alocacao`, `cod_colegio`, `num_sala`),
INDEX `fk_colegios_salas_alocacoes_salas_idx` (`id_alocacao` ASC, `num_sala` ASC),
CONSTRAINT `fk_colegios_salas_alocacoes_colegios`
FOREIGN KEY (`id_alocacao` , `cod_colegio`)
REFERENCES `sgp`.`alocacoes_colegios` (`id_alocacao` , `cod_colegio`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_colegios_salas_alocacoes_salas`
FOREIGN KEY (`id_alocacao` , `num_sala`)
REFERENCES `sgp`.`alocacoes_salas` (`id_alocacao` , `num_sala`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);