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

ligação de tabelas sem chave estrangeira

Quando foram inseridos os valores inteiros na tabela aluno_curso, sem a chave estrangeira, tal como no exemplo:

INSERT INTO aluno_curso (aluno_id, curso_id) VALUES (2,1);

entendo que não há ligação com os ids das tabelas aluno e curso. Da forma como foi falado na explicação o professor diz que os alunos foram linkados aos curos. Não compreendi como. Entendo que apenas com a criação da chave estrageira é feito o relacionamento das variáveis à tabela aluno_curso.

2 respostas

Olá, Mariana, tudo bem?

Isso mesmo, apenas quando criamos a chave estrangeira, é que realizamos o relacionamento entre as tabelas. Porém, este exemplo apresentado pelo instrutor, é apenas uma demonstração de como esse relacionamento funciona e o que pode acontecer se não criarmos um chave estrangeira para relacionar as duas tabelas, como por exemplo, inserir valores inexistentes.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!
solução!

Mariana,

Temos que observar algumas coisas ...

A ligação ente os dados das tabelasé feita pelas informações, e não pelas chaves, ok.

Falando de forma simplista, banana liga com banana, e maçã liga com maçã. As clausulas de junção de dados (leia-se os tipos de JOINs) não perguntam às tabelas se elas tem ou não chave: se o valor bate, ele é retornado e pronto.

Entendido isto, então para que eu tenho as chaves?

Os objetos DDL voltados para a restrição de informações , como são as Foreign Keys , são objetos que para garantir a integridade referencial entre as informações. No caso desta especificamente, para garantir que um valor não entrena tabela-filho sem que antes seja existente em uma tabela-pai (referencia). Isto nos dará a qualidade e a garantia de que não serão inseridos valores inválidos, e que não serão ligados à tabela que usamos como referencia.

Obseve que eu até posso dizer que uma coluna que tem uma FK que ela aceite nulo. Porém, se um valor não nulo for inserido, FICARÁ RESTRITO de que ele seja existente previamente na tabela a qual foi informado na FK para verificação (REFERENCES nome_da_tabela).

Espero ter ajudado.