Stop Using ENUMs in Your Database (Use This Instead)
- 데이터베이스에서 ENUM을 사용하는 것은 초기에는 간단해 보이지만, 여러 가지 문제점을 야기할 수 있음 😫
- ENUM은 새로운 상태 값을 추가하거나 정렬 순서를 변경할 때 테이블 구조 변경이 필요하며, 이는 데이터베이스 성능 저하를 초래할 수 있음 🐌
- ENUM은 데이터베이스 벤더 종속성을 높이고, 추가적인 메타데이터를 포함하기 어려움 vendor lock-in 🔒
- ENUM 대신 정수형 외래 키와 별도의 룩업 테이블을 사용하는 것이 더 나은 접근 방식임 ✨
- 룩업 테이블을 사용하면 스키마 변경 없이 새로운 상태 값을 추가할 수 있고, 관리자 인터페이스를 통해 유연하게 관리할 수 있음 🛠️
- 룩업 테이블은 정렬 순서, 색상 등 추가적인 메타데이터를 포함할 수 있어 데이터 표시를 더욱 풍부하게 할 수 있음 🎨
- 룩업 테이블을 사용하면 데이터베이스 이식성이 높아지고, 다양한 시스템에서 일관된 방식으로 데이터를 처리할 수 있음 ✈️
- 룩업 테이블은 데이터 정규화를 유지하고, 데이터를 깔끔하고 변경하기 쉽게 만들어줌 🧹
- ENUM은 예/아니오와 같은 이진 선택에 사용될 수 있지만, boolean 또는 tinyint를 사용하는 것이 더 나은 선택일 수 있음 🤔
- 결론적으로, ENUM은 거의 항상 문제를 일으키므로 피하고, 룩업 테이블을 사용하여 관계형 데이터베이스 구조를 유지하는 것이 좋음 👍