Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como Determinar um PFK (Primary Foreign Key)

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?

4 respostas

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. 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?

solução!

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!