1
resposta

na minha visão não é possível realizar um join sem que haja algum relacionamento que seria uma FK

     SELECT COMPRADORES.NOME, SUM(VALOR) 
        FROM COMPRAS INNER JOIN COMPRADORES ON COMPRAS.COMPRADOR_ID = COMPRADORES.ID
        GROUP BY COMPRADORES.NOME
1 resposta

Olá Adriano,

É possível sim. O Join serve para juntar os dados de duas tabelas diferentes, e a coluna que vai associar estas duas tabelas não precisa ter uma constraint de chave estrangeira para funcionar.

Seguindo seu exemplo, a diferença é que se não tem a FK, o banco de dados permitirá que exista registros na tabela COMPRAS cujo valor da coluna COMPRADOR_ID aponta para algo que não existe na tabela COMPRADORES, na coluna ID.

Ou seja, o banco de dados permitirá uma falta de integridade e consistência da informação. Você terá um registro "quebrado", um Compra que aponta para um Comprador inexistente.

Ainda assim, como dito anteriormente, você conseguirá executar o select e fazer o join, o problema é que nesses casos inconsistente, não vai funcionar como deveria.

Por isso é importante existir a FK, ela dá toda uma segurança aos dados, pois garante a integridade e consistência dos mesmos. Com a FK, nunca poderá existir uma Compra que aponta para um Comprador que não existe.

Espero ter ajudado.

Abraço.