Túlio Orlandi Postado Fevereiro 20, 2015 Denunciar Share Postado Fevereiro 20, 2015 (editado) Boa tarde, Tenho as tabelas: alocacoes_colegios(id_alocacao PK, cod_colegio PK) alocacoes_salas(id_alocacao PK, num_sala PK) e preciso criar uma tabela que relaciona a alocação dos colégios com as salas de um mesmo "id_alocacao", na teoria ficaria assim: colegios_salas(id_alocacao PK, cod_colegio PK, cod_sala PK) mas apresenta erro quando crio as tabelas, alguém poderia me ajudar? Obrigado :) Editado Fevereiro 26, 2015 por Túlio Orlandi Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Fevereiro 21, 2015 Denunciar Share Postado Fevereiro 21, 2015 Passe o script do create que você está usando para as tabelas alocacoes_salas alocacoes_colegios colegios_salas Link para o comentário Compartilhar em outros sites More sharing options...
0 Túlio Orlandi Postado Fevereiro 21, 2015 Autor Denunciar Share Postado Fevereiro 21, 2015 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); Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Fevereiro 26, 2015 Denunciar Share Postado Fevereiro 26, 2015 Se as tabelas forem criadas na ordem abaixo vai funcionar. create table `colegios`( `cod_colegio` INT NOT NULL, PRIMARY KEY (`cod_colegio`)); create table alocacoes( `id_alocacao` INT NOT NULL, PRIMARY KEY (`id_alocacao`)); CREATE TABLE `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 `alocacoes` (`id_alocacao`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_alocacoes_colegios_colegios` FOREIGN KEY (`cod_colegio`) REFERENCES `colegios` (`cod_colegio`) ON DELETE NO ACTION ON UPDATE NO ACTION); CREATE TABLE `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 `alocacoes` (`id_alocacao`) ON DELETE CASCADE ON UPDATE CASCADE); CREATE TABLE `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 `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 `alocacoes_salas` (`id_alocacao` , `num_sala`) ON DELETE NO ACTION ON UPDATE NO ACTION); Link para o comentário Compartilhar em outros sites More sharing options...
0 Túlio Orlandi Postado Fevereiro 26, 2015 Autor Denunciar Share Postado Fevereiro 26, 2015 Nesse caso fica garantido a restrição de que a chave compartilhada (id_alocacao) seja a mesma né? Obrigado Dênis. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Túlio Orlandi
Boa tarde,
Tenho as tabelas:
alocacoes_colegios(id_alocacao PK, cod_colegio PK)
alocacoes_salas(id_alocacao PK, num_sala PK)
e preciso criar uma tabela que relaciona a alocação dos colégios com as salas de um mesmo "id_alocacao", na teoria ficaria assim:
colegios_salas(id_alocacao PK, cod_colegio PK, cod_sala PK)
mas apresenta erro quando crio as tabelas, alguém poderia me ajudar?
Obrigado :)
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados