2012-02-17 4 views
0

페이스 북과 같은 '피드 항목'으로 만든 페이지가 있습니다. 현재 내가 직면하고있는 문제는 '논리 삭제'를 파악하는 가장 좋은 방법입니다.연결된 메시지가있는 페이지를 삭제하는 가장 좋은 방법은 무엇입니까?

  1. 피드 항목
  2. 의견
  3. 등 나는이

: I는이 페이지에 "연결된 메시지"를 제거 할 - 즉 사용자가 페이지를 삭제하는 경우입니다 feedItems, 코멘트 등을 보유하고있는 MySQL 테이블의 수 - 그러나 사용자가 페이지를 삭제하는 경우이 모든 것을 제거하는 가장 "최적의 방법"을 확신하지 못합니까?

누구에게 조언을 줄 수 있습니까? I에 유래과의 유사를 추측 - 질문 삭제할 경우,

  1. 질문
  2. 답변
  3. 모든 의견

등을 삭제하는 가장 좋은 방법은 무엇입니까?

답변

0

InnoDB를 사용하는 경우 가장 쉬운 방법은 ON DELETE CASCADE 외래 키를 사용하는 것입니다. 이 옵션은 외래 키가 참조하는 행이 삭제 될 때 MySQL이 테이블에서 행을 삭제하도록합니다.

예를 들어 기본 키 ID가있는 "question"테이블이 있고 외래 키가 "question_id"인 테이블이 "answers"인 경우 질문이 삭제되면 "answers"에있는 모든 행 동일한 question_id가 포함되어 삭제됩니다.

그렇지 않으면 각 테이블마다 하나씩 삭제 명령문을 여러 개 작성해야합니다.

+0

답장을 보내 주셔서 감사합니다. 실제로 '질문'[예를 들어]을 삭제하거나 '데이터 숨기기'를 실제로하는 것이 좋습니다. 즉, 사용자가 'delete'를 누르지 만 숨겨져 있습니다. – Andy

+0

글쎄, 정말로 대답 할 수 없습니다. 이는 애플리케이션의 요구 사항에 달려 있습니다. 나중에 데이터를 삭제 취소하거나 링크 된 항목에 대한 정보가 필요한 경우 데이터를 숨기려면 (소프트 삭제) 좋습니다. 일반적인 예는 삭제 된 사용자의 게시물을 유지하면서 데이터베이스의 사용자 행을 유지하면서 사용자 이름 ("삭제 된"태그와 함께)을 표시 할 수있게하는 것입니다. 이것을 달성하는 좋은 방법은'deleted_at DATETIME NULL DEFAULT NULL' 칼럼을 추가하고 삭제 타임 스탬프를 저장하는 것입니다. – rlanvin