데이터베이스에 대해 정의 된 올바른 RI가있는 경우 데이터 무결성이 손상되지 않아야합니다. 모든 관련 테이블에는 선언적 RI가 있어야합니다. 즉, 은 부모가 아이를 가질 때 삭제할 수 없습니다.
또한 때때로 일부 행을 삭제하는 코드가있는 경우 코딩이 잘 안되어 테스트가 불량합니다. 이러한 종류의 작업은 단일 트랜잭션이어야합니다. 저장 프로 시저 사용에 대한 귀하의 제안은 그 문제를 해결하기위한 훌륭한 접근 방법이며 매우 표준적인 방법입니다.
이미 언급했듯이 계단식 트리거는 누군가 삭제하지 않을 행을 삭제할 위험이 있습니다. 때로 사람들이 응용 프로그램 외부의 데이터에 액세스하는 경우가 있는데, 특히 데이터 문제를 수정할 때 고려해야합니다. 누군가 실수로 잘못된 학부모를 삭제하려고 시도했을 때 좋은 RI 오류가 발생했습니다. 그들이 우연히 잘못된 부모를 삭제하려고 시도했을 때 그 부모를 삭제할뿐만 아니라 다른 5 개의 테이블에있는 20 명의 어린이를 삭제하면 그것은 나쁘다.
또한 계단식 삭제는 매우 숨겨져 있습니다. 개발자가 부모에 대한 삭제를 코딩하는 경우 삭제 저장 프로 시저를 사용하여 자식을 처리해야한다는 것을 알아야합니다.개발자가 코드를 작성하지 않고 오류를 얻고 코드를 수정하면 (또는 실제로 삭제하지 않고도) 코드를 수정하면 개발자가 삭제를 던져서 코드를 수정하는 것이 훨씬 더 바람직합니다. 코드가 공개 될 때까지 어린이를 죽이는 것은 아무도 알지 못합니다.
IMO, 나는 개발자가 응용 프로그램에 대해 잘 알고있어 그들이 응용 프로그램을 모르는 사이에 쉽게 유지할 수있게하는 것을 선호합니다.
전적으로. 위대한 대답과 잘 넣어. 데이터 무결성은 항상주의를 기울이지 않고 있으며 대개 몇 년 전부터 시작되어 많은 기업을 목 졸라 죽이는 결과를 낳습니다. 데이터 수집에 관한 오래 전에 나쁜 결정으로 인해 더 이상 혁신과 변화를 가져올 수 없습니다. –
수동으로 데이터를 삭제할 때 발생할 수있는 사고로 인해 캐스케이드 삭제와 관련된 오명이있는 것 같습니다. 개인적으로 나에게는 몇 가지 나쁜 경험이 있지만 엄격한 데이터 무결성을 유지하는 것이 더 안전한 방법이라는 데 여전히 동의합니다. 반면에 저는 여전히 캐스케이드 사용을 피하려고합니다. –