본문 바로가기
SQL

[SQL] 정규화와 역정규화(반정규화)

by 스응 2023. 6. 27.
728x90
728x90

이상 현상 (Anomaly)

  - 테이블에서 일부 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 문제
  1) 삽입 이상
      · 데이터를 삽입할 때, 의도와는 상관 없이 원하지 않는 값들이 함께 삽입됨
      · 데이터가 부족해서 null 값이나 불필요한 값을 삽입해야 함
  2) 삭제 이상
      · 데이터를 삭제할 때, 원하지 않는 값들도 함께 연쇄적으로 삭제됨
  3) 갱신 이상
      · 데이터를 갱신할 때, 일부 데이터만 갱신되어 모순이 발생함
 
 


정규화 (Normalization)

  - 데이터 중복성을 제거해서 이상 현상을 방지하고, 데이터의 일관성을 유지하기 위해 무손실 분해하는 과정
  - 무손실 분해
      : 분해로 인한 정보 손실이 발생하지 않아야 함
        → JOIN을 사용하면 분해 전의 테이블로 복원 가능해야 함
 

제 1정규화 (1NF)

  - 어떤 테이블에 속한 모든 컬럼이 분해되지 않는 원자값만으로 구성됨 (다중 값 속성 제거) 
  - 모든 속성에 반복되는 그룹이 나타나지 않음
  - 기본키를 사용하며 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 함

 

제 2정규화 (2NF)

  - 테이블의 모든 컬럼이 기본키에 대해 완전 함수 종속을 만족함 (부분 함수 종속 제거)

#  함수 종속

  1) 완전 함수 종속
      : 컬럼집합 Y가 컬럼집합 X에 함수 종속되어 있지만, 컬럼집합 X의 일부분에는 종속되지 않음
      ex) {고객아이디, 이벤트번호} → {당첨여부}
  2) 부분 함수 종속
      : 컬럼집합 Y가 컬럼집합 X의 전체가 아닌 일부분에도 종속됨
      ex) {고객아이디} → {고객이름}
 

 

반응형
728x90

제 3정규화 (3NF)

  - 기본키가 아닌 모든 컬럼이 기본키에 이행적 함수 종속되지 않음

 

#  이행적 함수 종속

  - 함수 종속 관계 X → Y와 Y → Z가 존재하면 논리적으로 X → Z가 성립됨
      → Z는 X에 이행적으로 함수 종속됨

 
 


역정규화 (반정규화)

  - 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복/통합/분리를 수행하는 과정
  - 데이터 중복을 일부 허용함으로써, JOIN 쿼리를 줄여 실행 속도를 향상시킴
 

320x100
반응형

'SQL' 카테고리의 다른 글

[SQL] 날짜 포맷팅 함수 (DATE_FORMAT)  (0) 2023.08.04
[SQL] DBMS별 문법 차이  (0) 2023.08.03
[SQL] 커넥션 풀 (Connection Pool) ★  (0) 2023.05.10
[SQL] COMMENT  (0) 2023.04.21
[SQL] 쿼리 조건문 (ifnull, nullif, CASE)  (4) 2023.04.20

댓글