2013-05-29 4 views
0

이것은 기술적 인 질문이 아니라 오히려 외래 키 제약 조건을 사용하여 삭제를 처리하는 올바른 논리에 관한 것입니다. 우선, 임씨는 프로그래밍에 익숙하지 않고 소프트웨어 엔지니어링에 대해서는 모범적입니다. 아직도 1 학년 학생입니다. 내 운동 응용 프로그램에서 다른 레코드와 OneToMany 관계로 레코드를 계단식으로 연결했습니다. 즉, 레코드를 삭제할 때, Hibernate는 연관된 레코드들을 자동으로 삭제할 것이다. 내 문제는, 선생님이 계단식이 옳지 않다고 말해 줬어. 그는 사용자가 먼저 관련 레코드를 삭제해야한다고 말했고 그는 세부 정보를 말하지 않았으며 그가 우리에게 말했을 때 다소 화가 났다고 말했다. (그는 항상 그렇게 생각하고, 학생들을 협박하기를 원합니다. Idk는 자신의 문제가 무엇인지는 모르겠지만, 나는 정말로 배울 것입니다.) 나는 내 마음을 결정할 수 없기 때문에 조언을 좀 해주세요.관련 레코드가있는 레코드를 삭제하는 방법은 무엇입니까?

1) 삭제를 클릭 한 후 시스템이 관련된 기록하고 그것은 그가 계속되면 함께 삭제됩니다 사용자를 말할 것이다 :

지금까지 이러한 나의 생각이다. 그는 계속 될 것인지 묻습니다.

2) 삭제를 클릭하면 시스템에서 관련 레코드가 있으며 사용자가 페이지로 리디렉션 될 수 있음을 알리거나 관련된 모든 레코드를 표시하고 수동으로 삭제할 수있는 팝업이 표시됩니다.

3) 사용자가 삭제할 수 없도록하십시오.

+1

삭제 프로세스의 내부 작업 (개별 엔터티에 대한 문을 설정하는 것과 같은)입니까? 아니면 삭제 프로세스의 UX/UI에 관한 것입니까? – Carsten

+0

당신의 생각은 모두 좋고 옳습니다. 선생님은 캐스 케이 딩을 사용해서는 안된다는 말을 잘 듣고 있습니다. 나는 '관리자'사용자가 삭제 되었기 때문에 시스템의 모든 데이터가 삭제 된 것을 보았습니다. 이것은 나쁜 디자인입니다. 이 솔루션은 시스템 목적 및 삭제 된 데이터에 대한 민감성에 따라 달라집니다. 사용 가능한 실행 취소 프로세스가 있습니까? @ 카 스텐 (Caster)은 사용자 경험 (Cascading), 트랜잭션, 또는 운영 거부 및 대안 제공과 같은 구현보다는 삭제 프로세스에 대한 사용자 경험에 유의해야한다고 말했다. – darlinton

답변

1

계단식 삭제 문제는 제거중인 것을 제어 할 수 없다는 것입니다. 종속 개체가 실제로 삭제되는 개체의 논리적 확장이 아닌 한 으로 강력하게 권고합니다.

예를 들어 주문을 삭제하는 경우 머리글과 일부 줄로 구성된이 주문을 분명히 삭제해야하기 때문에 항상 모든 주문 행을 삭제하고 싶다고 생각할 수 있습니다. 반면 주문을 자체적으로 중요하게 생각하기 때문에 고객을 삭제하면 관련 주문이 삭제되지 않아야합니다. 주문은 고객의 속성이 아닙니다.

언제 사용하는 것이 일반적인 규칙이라고 생각하지 않습니다. 그러나 당신이 의심 스러울 때, 당신이 통제 할 수있는 옵션을 선택하십시오.

+0

고맙습니다. – TheOnlyIdiot