소프트웨어 개발자/좋은 API, DB 설계하기

[좋은 DB 설계하기] 제한된 값을 설계 할 때 Enum vs 테이블

yubi5050 2024. 7. 5. 11:55

개요

상태, 유형, 타입, 등급 등의 들어갈 수 있는 값에 제한이 있는 필드들에 대해서 추가적인 참조 테이블 설계가 필요할지, 아니면 Enum 값 정도로 괜찮을지에 대한 장단 비교, 기준 등

 

 

Enum 사용시 장단점

장점

  • 추가적인 테이블이 필요 없다.
  • 조인이 불필요하여 조회 속도가 빠르다.

 

단점

  • Enum 값들에 연관된 추가적인 값들을 저장이 불가 (ex. 등급 이란 개념의 추가 필드, eng_name 등등)
  • Enum 값의 변경시 코드 등도 직접 수정되어야 함 (변경시 비용이 큼)

 

참조 테이블로 설계시 장단점

장점

  • 해당 테이블 개념에 부가적인 개념등을 테이블의 필드로 자유롭게 추가 가능하다. 
  • 제한된 값이 늘어날 때, 추가에 유연하다.

 

단점

  • 조인이 발생하여, 조회 속도가 저하될 수 있다. 

 

결론

핵심 기준은 유연성, 향후 변화가 자주 발생할 경우에는 테이블이 적절하고, 변화가 비교적 적다면 Enum 필드로 효율을 챙기는 것이 좋은 방향이라고 생각.