데이터베이스에서 레코드를 삭제할 때 가장 좋은 방법은 무엇입니까?데이터베이스에서 레코드를 삭제할 때 가장 좋은 방법
예를 들어 온라인 예약 여행 신청서가있는 경우
제거 할 레코드가있는 둘러보기 테이블이 있지만 둘러보기 테이블은 예약 테이블 및 고객 테이블에도 연결됩니다. 이제는 기록을 삭제할 수 있어야하며, 보관소 등을 나타내는 깃발과 같은 필드가 있어야합니다.
모범 사례는 무엇인가요?
감사합니다. 차.
데이터베이스에서 레코드를 삭제할 때 가장 좋은 방법은 무엇입니까?데이터베이스에서 레코드를 삭제할 때 가장 좋은 방법
예를 들어 온라인 예약 여행 신청서가있는 경우
제거 할 레코드가있는 둘러보기 테이블이 있지만 둘러보기 테이블은 예약 테이블 및 고객 테이블에도 연결됩니다. 이제는 기록을 삭제할 수 있어야하며, 보관소 등을 나타내는 깃발과 같은 필드가 있어야합니다.
모범 사례는 무엇인가요?
감사합니다. 차.
Branko가 말한 것처럼 요구 사항 (및 데이터베이스 레이아웃)에 따라 다릅니다.
전체 기록을 유지하려면 많은 것을 삭제하지 않는 것이 좋습니다. 취소 된 플래그를 설정하는 것이 가장 좋을 것입니다.
귀하의 예제 데이터베이스 디자인에 관해서는 투어가 예약에 연결되어야한다고 말하고 싶지만 고객에게는 아닙니다 (예약은 고객에게 투어의 다 대다 맵핑을 제공해야 함).
예를 기반으로 여행을 예약 한 고객을 삭제할 수 없거나 예약을 삭제해야 할 수도 있습니다. 둘러보기가 삭제되면 해당 둘러보기의 모든 예약이 삭제되어야합니다 (고객 예약이 취소되었음을 고객에게 알리려면 예약 (또는 둘러보기) 삭제시 트리거가 필요할 수도 있고이 방아쇠를 데이터베이스).
위에서 볼 수 있듯이 구체적인 규칙은 없으므로 특정 데이터베이스 디자인에 허용되거나 허용되지 않아야하는 사항과 무언가가 삭제 될 때 발생할 필요가있는 사항을 논리적으로 생각해야합니다.
가장 안전한 설정 인 외래 키에 대한 기본값은 ON DELETE NO ACTION입니다. 특별히 설정의 각 인스턴스에 대해 생각하지 않고 해당 설정을 사용하는 것이 정당한 지 여부에 상관없이 ON DELETE CASCADE 또는 기본 설정이 아닌 다른 설정을 자유롭게 사용하면 안됩니다.
데이터베이스를 디자인 할 때 항상 누군가를 인수해야한다면 실수로 잘못된 것을 삭제하기가 어려울 것입니다.이 사람은 해당 데이터베이스를 사용하는 정확한 방법을 알지 못하기 때문입니다. 데이터베이스 (예 : 어떤 순서로 수행되어야하는지). 외래 키에 대한보다 엄격하거나 안전한 설정은 이러한 일이 더욱 힘들게 만듭니다.
귀하의 요구 사항에 따라 다릅니다. 아마도 간단한 ON DELETE CASCADE (또는 SET NULL)이 필요에 맞습니까? –