20

피해야 할 안티패턴

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 제약조건 없음?