[DB] DB 모델링 (2)

배창민·2025년 8월 26일
post-thumbnail

DB 모델링 (2)

1) 개념 모델 (Conceptual Model)

  • 정의: 요구분석에서 핵심 엔터티/주요 속성/엔터티 간 관계를 도출해 상위 수준 ERD로 표현. 데이터의 범위·구조를 빠르게 파악하기 위한 단계.

  • 목적: 사용자·개발자·모델러 등 이해관계자가 같은 그림을 보도록 데이터를 간결하게 표현; 대규모 프로젝트의 큰 틀, 이후 유지보수의 공통 레퍼런스로 활용.

  • 주의사항

    • 데이터 관점만 표현(프로세스/화면 X)
    • 충분한 의사소통으로 모호성 제거
    • 과도한 복잡성 지양(논리 모델링 기간의 1/3 투자도 가치 있음)

2) 논리 모델 (Logical Model)

  • 정의: 개념 모델을 상세화하여 모든 속성/엔터티/관계를 정리하고 정규화 수행. 목적은 중복 제거이상(Anomaly) 방지.

  • 이상 현상

    • 삽입 이상: 불필요 정보를 함께 넣지 않으면 저장 불가
    • 갱신 이상: 중복 일부만 수정되어 불일치 발생
    • 삭제 이상: 필요한 정보가 연쇄 삭제
  • 정규화 요약

    • 함수 종속: 결정자 → 종속자 관계로 속성 종속성 정의
    • 1NF: 모든 속성 원자값(다가/복합 속성 분해)
    • 2NF: 복합키 부분 종속 제거
    • 3NF: 이행 종속 제거(일반 속성↔일반 속성 종속 분리)
  • 주의사항

    • 업무 요건을 누락 없이 반영, 불필요 엔터티/속성 제거 완료
    • PK는 유일·최소·불변·NOT NULL, 필요 시 인조키 채택
    • 성능 튜닝은 물리 단계에서 검토

3) 물리 모델 (Physical Model)

  • 정의: 실제 DBMS에 이식 가능한 설계. 인덱스/뷰/데이터 타입/비정규화물리 요소 중심. (논리→물리 전환 시 구조 변화는 10% 이내 권장)

  • 슈퍼타입/서브타입 변환

    • 통합 테이블 1개: 조인 無, 뷰로 서브타입 제공 가능 / 컬럼 수 증가, 서브타입별 NOT NULL 제약 어려움
    • 서브타입별 개별 테이블: 서브타입 단위 단순 / 전체 조회는 UNION, UID 관리 복잡
    • 배타관계·NULL 처리: 배타적 서브타입 속성은 NULL 허용 고려
  • 성능 설계 포인트

    • 뷰(View): 복잡 쿼리 단순화, 권한 제어에 유용
    • 인덱스(Index): WHERE/JOIN 컬럼에 적용, 결과 건수가 전체의 10~15% 미만일 때 효과 큼. PK는 자동 인덱스.
  • 비정규화(Denormalization)

    • 수직 분할: 컬럼 그룹화(부서/화면별)로 1:1 분할 → 테이블 크기 축소, 주 사용 패스 최적화
    • 수평 분할: 인기 데이터와 기타 데이터 분리(예: 상위 20% vs 80%) → 자주 조회 영역 가속
    • 속성 중복: 조인 제거 위해 일부 속성 중복 저장(무결성 관리 주의)
    • 엔터티 통합: 항상 함께 조인되는 테이블 결합(조인 비용↓, 이상 가능성↑)
  • 데이터 타입(예)

    • 문자: CHAR, VARCHAR2, CLOB/NCLOB
    • 숫자: NUMBER(P,S), FLOAT(P), BINARY_FLOAT/DOUBLE
    • 날짜/시간: DATE, TIMESTAMP
    • LOB: CLOB, BLOB, BFILE
profile
개발자 희망자

0개의 댓글