Olá Pessoal.
No caso de uma entidade associativa, em que tenho 2 PFK's(Chaves Primárias e Estrangeiras), como faço para designá-las em SQL?
Olá Pessoal.
No caso de uma entidade associativa, em que tenho 2 PFK's(Chaves Primárias e Estrangeiras), como faço para designá-las em SQL?
Olá Júlio, tudo bem?
Em uma entidade associativa, possui duas chaves primárias que são, ao mesmo tempo, chaves estrangeiras, você poderá ter duas chaves estrangeiras que farão a ligação com as chaves primárias das outras duas tabelas.
O código das tabela associativas ficaria:
CREATE TABLE tabela_associativa (
coluna1 tipo_dado PRIMARY KEY,
coluna2 tipo_dado PRIMARY KEY,
outras_colunas tipo_dado,
FOREIGN KEY (coluna1) REFERENCES outra_tabela1(coluna_pk1),
FOREIGN KEY (coluna2) REFERENCES outra_tabela2(coluna_pk2)
);
Neste caso, coluna1
e coluna2
serão as chaves primárias compostas da tabela associativa.
Cada uma dessas colunas também será uma chave estrangeira, referenciando a chave primária de outra tabela (outra_tabela1
e outra_tabela2
).
Espero ter esclarecido.
Qualquer dúvida, compartilhe no fórum.
Abraços e bons estudos!
Tentei fazer conforme a instrução acima. Estou usando o SQLite e deu o seguinte erro:
has more than one primary key.
Como faço para resolver?
Oi Júlio.
Entendi! O erro aponta não permite definir mais de uma coluna como PRIMARY KEY
individualmente.
Júlio, você pode testar o seguinte comando abaixo:
CREATE TABLE tabela_associativa (
coluna1 tipo_dado,
coluna2 tipo_dado,
outras_colunas tipo_dado,
PRIMARY KEY (coluna1, coluna2),
FOREIGN KEY (coluna1) REFERENCES outra_tabela1(coluna_pk1),
FOREIGN KEY (coluna2) REFERENCES outra_tabela2(coluna_pk2)
);
A única mudança feita foi na sintaxe da chave composta com o comando PRIMARY KEY (coluna1, coluna2)
.
Testei aqui e funcionou! Espero que dê certo aí também!
Fico à disposição. Abraços!
Obrigado! Deu certo!