1
resposta

Verificar existência de relação de entidade no banco

Boa noite,

No curso JSF 1, tópico 09 - Completando o CRUD, o professor sugeriu que fizéssemos o CRUD dos Autores no projeto,

eu fiz, porém, ao tentar apagar um autor que está associado a um livro, a aplicação não dá erro, sendo assim o usuário fica sem entender o porque não está deletando,

O usuário não sabe que não pode deletar um autor que está vinculado a um livro, então minha dúvida seria, como validar que existe relação e passar uma mensagem ao usuário? Pois não acertei fazer sozinho.

Ou seja, como seria a lógica de r no banco de dados verificar se aquele autor tem alguma relação com outra tabela e retornar pro usuário um aviso do porque ele não pode deletar aquele registro associado?

1 resposta

Olá Felipe, tudo bem?

Para verificar se um autor está associado a um livro antes de deletá-lo, você pode utilizar a lógica de consultar as tabelas relacionadas no banco de dados.

Suponha que você tenha duas tabelas: "Autores" e "Livros", onde a tabela "Livros" possui uma coluna "autor_id" que faz referência ao ID do autor na tabela "Autores".

Para verificar se um autor está associado a algum livro, você pode fazer uma consulta no banco de dados utilizando uma cláusula JOIN para fazer a junção das tabelas e verificar se existe algum registro na tabela "Livros" que faça referência ao autor que você deseja deletar.

Por exemplo, utilizando SQL, a consulta poderia ser algo como:

SELECT * FROM Autores
LEFT JOIN Livros ON Autores.id = Livros.autor_id
WHERE Autores.id = {id_do_autor};

Se essa consulta retornar algum resultado, significa que o autor está associado a pelo menos um livro. Nesse caso, você pode exibir uma mensagem ao usuário informando que ele não pode deletar o autor pois existem livros associados a ele.

No código da sua aplicação, você pode utilizar uma estrutura condicional para verificar o resultado da consulta e exibir a mensagem apropriada ao usuário.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software