SQL

데이터 모델과 SQL 정규화

피갓자 2025. 3. 2. 09:00

데이터 모델과 SQL 정규화
데이터 모델과 SQL 정규화

성능 데이터 모델링

성능 데이터 모델링이란?

데이터베이스의 성능을 향상시키기 위해 설계 단계부터 성능과 관련된 사항들이 모델링에 반영될 수 있도록 하는 것

성능 데이터 모델링 수행 시점

성능 향상을 위한 비용은 프로젝트 수행에 있어 사전에 할수록 비용이 들지 않음

특히 분석/설계 단계에서 데이터 모델에 성능을 고려한 데이터 모델링을 수행할 때 성능저하에 따른 재업무 비용을 최소화할 기회를 가지게 됨

성능 데이터 모델링 순서

  1. 데이터 모델에 맞게 정규화 수행
  2. 데이터베이스의 용량 산정 수행
  3. 데이터베이스에 발생하는 트랜잭션의 유형 파악
  4. 데이터베이스의 성능을 고려하여 반정규화 수행
  5. PK/FK 등을 조정하여 인덱스를 반영함으로써 성능 향상
  6. 데이터 모델의 성능 검증

정규화(Normalization)

정규화란?

데이터 정합성(데이터의 정확성과 일관성을 유지하고 보장)을 위해 엔티티를 작은 단위로 분리하는 과정

정규화 절차

1차 정규화(1NF, First Normal Form)

  • 어떤 릴레이션 R에 속한 모든 도메인이 원자값(Atomic Value)만으로 되어 있다면 제1정규형에 속함
  • 릴레이션 내의 속성은 원자값을 가지고 있어야 함

2차 정규화(2NF, Second Normal Form)

  • 어떤 릴레이션 R이 1NF이고, 키(기본 키)에 속하지 않은 애트리뷰트 모두가 기본 키에 완전 함수 종속이면 제2정규형에 속함
  • 특정 컬럼에만 종속되는 부분 함수 종속(Partial Dependency) 제거

3차 정규화(3NF, Third Normal Form)

  • 어떤 릴레이션 R이 2NF이고, 기본 키에 속하지 않은 모든 애트리뷰트들이 기본 키에 이행적 함수 종속이 아닐 때 제3정규형에 속함
  • 주 식별자에 이행 함수 종속(Transitive Dependency) 제거. 주 식별자를 제외한 일반 속성 중에서 함수적 종속 속성들을 상위 개체로 도출함

BCNF 정규화(3.5NF, Boyce-Codd Normal Form)

  • 릴레이션 R의 결정자(determinant)가 모든 후보 키(Candidate Key)이면 릴레이션 R은 보이스-코드 정규형에 속함
  • 결정자이면서 후보 키가 아닌 것 제거

4차 정규화(4NF, Fourth Normal Form)

  • 하나의 애트리뷰트가 다른 애트리뷰트의 값을 결정하는 것이 아니라, 여러 개의 값, 즉 값이 집합을 결정하는 속성임
  • 하나의 릴레이션에 두 개 이상의 다치 종속(MVD, Multi-Valued Dependency)이 발생하면 이를 제거하는 과정임

5차 정규화(5NF, Fifth Normal Form, PJ/NF, Projection-Join Normal Form)

  • 릴레이션 R에 존재하는 모든 조인 종속(JD, Join Dependency)이 릴레이션 R의 후보 키를 통해서만 만족한다면 릴레이션 R은 제5정규형에 속함
  • 5차 정규화는 프로젝션-조인 정규화라고도 함

이상 현상의 유형

삽입 이상(Insertion Anomaly) : 어떤 데이터를 삽입하려고 할 때 불필요하고 원하지 않는 데이터를 함께 삽입해야만 하는 현상. 예를 들어, 새로운 주문을 추가할 때 고객 정보도 삽입해야 하는 경우

삭제 이상(Delete Anomaly) : 튜플 삭제 시 유지해야 할 정보도 삭제되는 연쇄 삭제(Triggered Detection) 현상이 일어나 정보 손실(Loss of Information)이 발생하는 현상. 예를 들어, 고객 정보 삭제 시 고객의 모든 주문 기록이 삭제되는 경우

갱신 이상(Update Anomaly) : 중복된 튜플 중에서 일부 튜플의 애트리뷰트 값만 갱신시켜 정보의 모순성(Inconsistency) 생기는 현상. 예를 들어, 여러 곳에 존재하는 고객 주소 정보를 일부만 갱신하는 경우