안녕하세요?
MySQL 사용하다 최근 MSSQL 을 사용하는데 질문이 있어 문의 드립니다.
MSSQL 2008 기준 디자이너를 통해 데이터베이스 다이어그램을 이용하는 도중 문득 문제가 생겼습니다..
Member 테이블이 부모 입니다.
Product.Comment 테이블 MemberID 는 Member 테이블의 MemberID 를 참조(외래키) 하고 있고,
Product.Comment.Reply 테이블 CommentID 는 Product.Comment 테이블의 CommentID 를 참조(외래키) 하고 있습니다.
여기 까지는 당연히 문제 없습니다.
A사용자가 남겼던 코멘트 게시물에 대해 A사용자가 탈퇴를 한경우 A사용자의 코멘트는 모두 삭제되어야 하니까요.
근데 문제는 다음 입니다.
Product.Comment.Reply 테이블의 MemberID 가 Member 테이블의 MemberID 를 참조하는경우
상호 참조에러로 외래키를 지정할 수 없습니다.
B사용자가 A사용자의 게시물에 대한 댓글을 남겼는데 만약 B사용자가 탈퇴를 하는 경우 당연히 남겼던 리플은 삭제되야 합니다.
1. 리플은 해당 코멘트게시물이 삭제되는경우 삭제
2. 사용자가 탈퇴시 남겼던 코멘트 리플 삭제
위 두가지 요건을 만족해야 참조무결성이 보장되는게 맞는거 같은데
어째서 상호참조 에러를 뿜는건가요?
CASCADE 를 주는 대신 NO ACTION, NULL 을 하게 되면 해당 사용자가 탈퇴해도
찌꺼기 리플은 남게되는데 꼭 CASCADE 를 주고 싶습니다.
해결 방안이 있을까요?