간단히 생각하면 FK가 Nullable 인경우 나중에 무결성이 깨질 가능성이 많을 거라고 생각되는데..

예를 들어, 나중에 사용자가 탈퇴할 경우에 대비해 사용자를 FK 로 하는 필드는 Nullable 로 하는게 일반적인가요?


단지 논리적으로는 Nullable 이 아닌데 참조 대상을 삭제해야 할 경우가 참 애매하더군요

(예를 들어 A가 B에게 아이템을 선물했는데 A가 이후 탈퇴한 경우, 논리적으로는 선물한 당사자가 없을 수 없기에 Null 이 될수 없지만 A 탈퇴후 참조문제가 생깁니다.)

회원이 탈퇴하더라도 레코드를 남겨둘 수도 있겠지만 탈퇴한 회원의 개인정보를 보관하고 있는 것이 문제될 수 있을 것 같고요

꼭 회원이 아니더라도 특정 아이템의 경우 계속 만들어지고 제거되는 과정이 반복되는데 참조문제 때문에 레코드는 남겨두고 제거필드 등을 이용한다면 그 테이블은 갈수로 데이터가 쌓여가기만 할 거구요.


그렇다고 삭제가능한 엔터티를 참조하는 필드를 무조건 Nullable로 하면 제약조건의 의미 자체가 없어지는 듯 하고요..

RDB의 가장 큰 장점이 무결성과 중복 최소화인줄 알았는데 이러면...


이런 경우가 굉장히 많을 것 같은데.. 실무상 관례라던가? 그런 건 없나요?