Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Relacionar duas tabelas que possuem uma chave primária est


Túlio Orlandi

Pergunta

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 por Túlio Orlandi
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Denis, estou fazendo diretamente pelo Workbench, abaixo é como pensei no diagrama, mas quando tento definir

11021076_1045632435450591_83026685113156

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

  • 0

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

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...