Estou prestes a criar uma tabela pai e filho. Ao planejar como fazer operações CRUD nesses dados, eu queria saber qual é o melhor design quando se trata de excluir dados.
Estou usando o SQLite. Eu sei que com muitos bancos de dados, você pode configurar exclusões em cascata. Supondo que eu configurei os relacionamentos adequadamente para suportar esse tipo de recurso, minha dúvida é a seguinte:
É melhor usar o recurso de exclusão em cascata ao excluir registros pai ou posso continuar usando transações e excluir manualmente das tabelas pai/filho, com reversões quando algo falhar?
O front-end é um aplicativo da web. Qualquer sugestão / artigo que você possa me indicar seria ótimo.
Isso depende das necessidades dos dados e também é uma preferência de design. Ter
CASCADE ON DELETE
pode ser uma implementação mais limpa e descrever melhor a relação dos dados.A pesquisa que este artigo apresenta mostra que
CASCADE ON DELETE
realmente há uma leve queda de desempenho em uma exclusão direta no SQLite. Mas, a menos que você tenha uma carga consistentemente alta, isso não deve ser um problema.http://www.codesynthesis.com/~boris/blog/2012/04/12/explicit-sql-delete-vs-on-delete-cascade/