20분
피해야 할 안티패턴
Day 4: 이 테이블 설계 누가 했어요? - ERD 패턴
피해야 할 안티패턴
데이터 모델링 > Day 4: 이 테이블 설계 누가 했어요? - ERD 패턴
학습 목표
흔한 설계 안티패턴을 인식한다 안티패턴을 피하는 방법을 익힌다
안티패턴 1: God Table
하나의 테이블에 모든 것을 담음
에디터 로딩 중...
문제:
- 중복 데이터 많음
- 업데이트 이상
- 성능 저하
해결: 정규화로 분리
안티패턴 2: EAV (Entity-Attribute-Value)
컬럼 대신 행으로 속성 저장
에디터 로딩 중...
문제:
- 데이터 타입 강제 불가 (모두 VARCHAR)
- JOIN 복잡
- 인덱스 비효율
언제 OK?: 속성이 매우 동적일 때 (설문조사 답변 등) 대안: JSON 컬럼 (PostgreSQL JSONB)
안티패턴 3: 다중 컬럼 ID
여러 컬럼을 구분자로 연결
에디터 로딩 중...
해결: 각 요소를 별도 컬럼으로
에디터 로딩 중...
안티패턴 4: 컬럼 복제
phone1, phone2, phone3...
에디터 로딩 중...
해결: 1NF - 별도 테이블
에디터 로딩 중...
안티패턴 5: FK 없는 참조
에디터 로딩 중...
해결: FK 제약조건 추가
에디터 로딩 중...
안티패턴 체크리스트
| 체크 | 안티패턴 |
|---|---|
| [ ] | 테이블 컬럼이 30개 이상? (God Table) |
| [ ] | key-value 형태로 속성 저장? (EAV) |
| [ ] | ID에 여러 정보 연결? (다중 컬럼 ID) |
| [ ] | phone1, phone2... 패턴? (컬럼 복제) |
| [ ] | FK 제약조건 없음? |