[RESOLVIDO] - Erro ao adicionar tabela com foreign keys

Boa noite.
Estou criando um banco de dados em mysql no workbench. Estava dando tudo certo, todas as querys sem nenhum erro, mas na criação da tabela votacao recebi o seguinte erro:

Error Code: 1215. Cannot add foreign key constraint 1,076 sec

Essa é a query:

create table votacao(
num_zona int,
num_secao int,
num_candidato int,
qtd_votos int,
constraint fk_votacao_zona foreign key(num_zona) references zona_secao(num_zona),
constraint fk_votacao_secao foreign key(num_secao) references zona_secao(num_secao),
constraint fk_votacao_candidato foreign key(num_candidato) references candidato(num_candidato)
);

As querys que deram certo, sem nenhum erro, são essas:

create table zona_secao(
num_zona int not null,
num_secao int not null,
nome_zona_secao varchar(50) not null,
qtd_eleitores int not null
);

create table candidato(
num_candidato int not null auto_increment,
cod_cargo int,
cod_partido int,
nome_candidato varchar(50) not null,
primary key(num_candidato),
constraint fk_candidato_cargo foreign key(cod_cargo) references cargo(cod_cargo),
constraint fk_candidato_partido foreign key(cod_partido) references partido(cod_partido)
);

Algém que manja pode me ajudar por favor. Desde já agradeço!

Nada na tabela zona_seccao te garante que num_zona é único. O mesmo para num_seccao.
Na realidade acredito que nenhuma dessas colunas por si só vá ser única, mas sim o conjunto das duas.

Tens de ter uma PK na tabela zona_seccao com estas duas colunas e depois ter uma única FK sobre as duas colunas na tabela votacao para a tabela zona_seccao .

1 curtida

Valew Pela dica cara! Obrigado.
Consegui resolver da forma que você indicou, criei uma chave primária composta na tabela zona_secao, e apenas uma chave estrangeira na tabela votacao.

Obrigado!