2008-09-17 6 views
0

나는 verry basic/멍청한 질문을 가지고있는 것처럼 느껴진다. 그러나 나는이 방향으로는 아무 것도 보지 못했다. 아무런 동작이없는 제한 조건을 런타임에 계단식으로 덮어 쓰기

내가 테이블 사용자 (userId를, 이름)이와 테이블 환경 설정 (ID, userId를, 언어)를 말한다. 예제는 간단하지만 다중 레벨 관계와 더 많은 테이블을 가진 상황으로 확장 될 수 있습니다. 내 UI가 사용자를 삭제하도록 요청하면 먼저 환경 설정이 삭제된다는 경고를 표시하려고합니다. 어떤 시점에서 데이터베이스가 더 많은 테이블과 관계로 확장되었지만 소프트웨어가 이에 맞게 조정되지 않으면 (클라이언트가 업데이트하지 않음) 일반 메시지가 표시되어야합니다.

어떻게 구현할 수 있습니까? UI는 전체 데이터 구조를 알 수 없으며, 모든 관계를 수동으로 삭제하여 모든 종속 레코드를 삭제하지 않아도됩니다.
나는 이것이 제약이 있다고 생각할 것이다. 제약 조건은 이 아니므로이 처음이므로 제약 조건에 의해 UI에서 catch 할 수있는 오류가 발생합니다. UI가 확인을 받으면 제약 조건은 캐스케이드이되어야합니다.

은 어떻게 든 내가 느끼고 내가 갖는처럼이 모든 잘못 ... 내가 무엇을 할 것은

답변

1

이 :

  1. 제약 환경 설정이 존재하는 응용 프로그램을 확인하는 경우 CASCADE
  2. 입니다.
  3. 경고 메시지가 표시되면 경고를 표시하십시오.
  4. 기본 설정이 없거나 경고가 수락 된 경우 클라이언트를 삭제하십시오.

즉석에서 데이터베이스 관계를 변경하는 것은 좋은 생각이 아닙니다!

건배,

RB.

0

사용자가 삭제의 영향을 완전히 인식하지 못한다면 실제로 데이터를 삭제하지 않는 것이 좋습니다. 대신 "marked_for_deletion"이라는 열에 플래그를 설정할 수 있습니다. (엔트리는 안전한 시간 후에 나중에 삭제 될 수 있습니다.)
단점은 다른 쿼리에서 표시된 행을 걸러 내야한다는 점입니다. 표시된 행을 필터링하여 테이블에 뷰를 만든 다음 항상 쿼리에서 뷰를 사용하면이 문제를 완화 할 수 있습니다.