1
resposta

[Dúvida] Relacionando tabelas por meio de chaves estrangeiras

No desafio que pede para incluir a chave estrangeira na tabela de produtos para relacioná-la com o fornecedor do produto, através do campo id da tabela fornecedores, a opção correta não utiliza o comando FOREIGN KEY para referencias a tabela de fornecedor.

Por que?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oii, Carlos! Como você está?

Excelente pergunta! Obrigada por compartilhar aqui no fórum, outras pessoas podem ter a mesma dúvida e encontrão seu post aqui sobre.

O código usado na atividade é uma forma mais sucinta para criar uma coluna como chave estrangeira ao mesmo tempo que adiciona à tabela. Representando pelo código ADD COLUMN fk_fornecedor INTEGER.

Usando o comando FOREIGN KEY teríamos o seguinte código:

ALTER TABLE produtos
ADD CONSTRAINT fk_fornecedor
FOREIGN KEY (fk_fornecedor)
REFERENCES fornecedores(id);

O código acima nos dá o mesmo retorno do que da atividade, porém ele é mais detalhado e com mais possibilidades de customizações ao código.

Para exemplificar, imagine que na abordagem ADD COLUMN com REFERENCES é como comprar um aparelho que já vem com a função integrada, tudo de uma vez só, sem precisar configurar nada extra. Já a abordagem ADD CONSTRAINT com FOREIGN KEY é como comprar um aparelho e, depois, adicionar acessórios específicos que personalizam e melhoram o funcionamento dele, permitindo ajustes mais detalhados.

Ambas formas estão corretas, só possuem esses detalhes em sua composição. E para saber qual usar, basta analisar o contexto e qual é o seu objetivo com a consulta para aplicar o que melhor se encaixa.

Espero ter esclarecido sua dúvida. Caso surjam outras, não deixe de compartilhar no fórum.

Bons estudos, Carlos!