본문 바로가기
Database/MYSQL

MySQL - 외래키(Foreign Key) 의견.

by 반화넬 2025. 3. 12.
반응형

 

외래키를 쓰지 않는 이유 

 

JPA에 연관관계는 만들지만, FK는 만들지 않는 옵션도 있다.

 

결론

  • 기본적으로 외래키를 사용하지 않고 필요한 테이블에만 인덱스 또는 FK를 만들어 사용하는 것이 좋다.
    • 외래키가 주는 편익도 분명 크다.
  • 경험상 FK를 걸어도 정합성이 깨지는 곳은 깨진다.
  • 개발시 Validation을 최대한 꼼꼼하게 하여 불변식을 지킨다. (Domain단 또는 Controller단) 
  • 단, 외래키 없이 사용하고자 한다면 모든 Table에 audit 데이터를 남긴다. (createdAt, lastModifiedAt, 필요시 작성자, 수정자도) 또한 모든 테이블은 soft delete 상태 값을 가진다. (그래야 추적이 될 것 같다.)
  • 특히 초기 스타트업이라면 피봇팅으로 인해 설계가 변경될 일이 빈번하여 FK가 없는 편이 좋다고 생각한다. 
    • JPA 연관관계도 맺지 않고 유연하게 데이터를 관리한다. 
    • (JPA ManyToOne의 Many는 few지 Many가 아니다. 운영하며 데이터가 쌓이고 few가 확정되면 그때 JPA 연관관계를 맺어도 늦지 않다. 라고 Hibernate쪽에서 유명한 분이 하신 말에 동의한다. https://vladmihalcea.com/)

 

원본 : https://yeoon.tistory.com/165

반응형