배경
현재 여러 테이블이 다른 도메인의 식별자를 Long 값으로 저장하고 있지만, DB FK가 없어 존재하지 않는 사용자·게시글 ID나 고아 데이터가 저장될 수 있습니다.
JPA 엔티티 간에는 ID 참조 방식을 유지하면서, DB에서는 FK를 통해 데이터 무결성을 보장합니다.
작업 범위
인증
프롬프트
커뮤니티·신고
결제·포인트
기존 FK 확인 대상
아래 관계는 JPA 연관관계가 있으므로 실제 DB의 FK 존재 여부를 먼저 확인합니다.
제외 및 별도 검토
event_logs.user_id: 로그 보존 정책에 따라 FK 미적용 또는 ON DELETE SET NULL 검토
event_logs.target_id: 다형 참조이므로 일반 FK 적용 제외
point_histories.reference_id: 다형 참조이므로 일반 FK 적용 제외
사전 점검
완료 조건
배경
현재 여러 테이블이 다른 도메인의 식별자를
Long값으로 저장하고 있지만, DB FK가 없어 존재하지 않는 사용자·게시글 ID나 고아 데이터가 저장될 수 있습니다.JPA 엔티티 간에는 ID 참조 방식을 유지하면서, DB에서는 FK를 통해 데이터 무결성을 보장합니다.
작업 범위
인증
social_accounts.user_id → users.user_idrefresh_token_sessions.user_id → users.user_id프롬프트
posts.user_id → users.user_id커뮤니티·신고
comments.post_id → posts.post_idcomments.user_id → users.user_idcomments.parent_comment_id → comments.comment_idpost_interactions.user_id → users.user_idpost_interactions.post_id → posts.post_idpost_reports.reporter_id → users.user_idpost_reports.post_id → posts.post_id결제·포인트
post_unlocks.post_id → posts.post_idpost_unlocks.user_id → users.user_idpost_unlocks.creator_user_id → users.user_idpoint_histories.user_id → users.user_id기존 FK 확인 대상
아래 관계는 JPA 연관관계가 있으므로 실제 DB의 FK 존재 여부를 먼저 확인합니다.
post_image.post_id → posts.post_idpost_statistics.post_id → posts.post_idpost_tags.post_id → posts.post_idpost_tags.tag_id → tags.tag_id제외 및 별도 검토
event_logs.user_id: 로그 보존 정책에 따라 FK 미적용 또는ON DELETE SET NULL검토event_logs.target_id: 다형 참조이므로 일반 FK 적용 제외point_histories.reference_id: 다형 참조이므로 일반 FK 적용 제외사전 점검
RESTRICT/NO ACTION을 우선 검토완료 조건