데브허브 | DEVHUB | Avoid This Type of Database DesignAvoid This Type of Database Design
- EAV(Entity Attribute Value) 디자인은 유연하지만 데이터 타입 및 제약 조건 적용이 어렵고 쿼리 성능이 느려 피해야 합니다. 🚫
- 대안 1: 전통적인 정규화는 각 속성에 적절한 데이터 타입의 개별 컬럼을 사용하며, 속성이 안정적일 때 가장 좋습니다. ✅
- 대안 2: 수직 분할은 속성을 논리적으로 그룹화하여 여러 테이블로 나누는 방식으로, 정규화를 유지하면서 복잡성을 줄입니다. 🧩
- 대안 3: 레코드 유형별 테이블은 공통 속성을 위한 기본 테이블과 각 유형별 고유 속성을 위한 서브 테이블을 사용합니다. 📚
- 대안 4: JSON 컬럼은 속성 구조가 레코드마다 크게 다를 때 유연성을 제공하며, 최신 DB에서 쿼리 및 조작이 용이합니다. 📄
- 대안 5: 속성 테이블(타입별 컬럼을 가진 EAV)은 유연성이 필요하지만 더 강력한 데이터 타입을 원할 때 사용하며, 기존 EAV보다 약간 낫습니다. 📊
- 결론적으로, EAV 디자인은 피하고 요구사항에 따라 정규화된 모델(대안 1)을 포함한 다른 대안 중 하나를 선택하는 것이 좋습니다. 💡