여러 개의 캐스 케이 딩 경로가있는 일반적인 상황은 다음과 같습니다. 두 개의 세부 사항이있는 마스터 테이블 "Master"및 "Detail1"및 "Detail2"라고합시다. 두 세부 사항 모두 계단식 삭제입니다. 지금까지 아무런 문제가 없습니다. 그러나 두 세부 사항에 다른 테이블과 일대 다 관계가있는 경우 (예 : "SomeOtherTable") SomeOtherTable에는 Detail1ID 열과 Detail2ID 열이 있습니다.
Master { ID, masterfields }
Detail1 { ID, MasterID, detail1fields }
Detail2 { ID, MasterID, detail2fields }
SomeOtherTable {ID, Detail1ID, Detail2ID, someothertablefields }
즉, SomeOtherTable의 일부 레코드는 Detail1 레코드와 연결되고 SomeOtherTable의 일부 레코드는 Detail2 레코드와 연결됩니다. SomeOtherTable 레코드가 두 Details에 모두 속하지 않는다고 보장 되더라도 Master에서 SomeOtherTable까지의 다중 계단식 경로 (Detail1을 통해 하나와 Detail2를 통해 하나씩)가 있기 때문에 SomeOhterTable의 레코드를 두 가지 세부 정보 모두에 대해 계단식으로 삭제할 수 없습니다. 이제 당신은 이미 이것을 이해했을 것입니다. 가능한 해결책은 다음과 같습니다.
Master { ID, masterfields }
DetailMain { ID, MasterID }
Detail1 { DetailMainID, detail1fields }
Detail2 { DetailMainID, detail2fields }
SomeOtherTable {ID, DetailMainID, someothertablefields }
모든 ID 필드는 키 필드 및 자동 증분입니다. 요점은 세부 사항 테이블의 DetailMainId 필드에 있습니다. 이 필드는 핵심 및 참조 제약 조건입니다. 이제 마스터 레코드 만 삭제하여 모든 항목을 계단식으로 삭제할 수 있습니다. 단점은 각 detail1 레코드와 detail2 레코드마다 DetailMain 레코드 (정확하고 고유 한 ID를 얻기 위해 먼저 작성 됨)도 있어야한다는 것입니다.