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

2023. 6. 27. 11:51·SQL
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
'SQL' 카테고리의 다른 글
  • [SQL] 날짜 포맷팅 함수 (DATE_FORMAT)
  • [SQL] DBMS별 문법 차이
  • [SQL] 커넥션 풀 (Connection Pool) ★
  • [SQL] COMMENT
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (383)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (10)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (14)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    SpringBoot
    php
    오블완
    cs
    Android
    zapier
    C#
    errorNote
    js
    java
    jQuery
    Wordpress
    git
    Hotkeys
    http
    티스토리챌린지
    tailwindcss
    CSS
    HTML
    Swing
    typeScript
    SEO
    개발일지
    SQL
    Codeigniter
    면접
    vuejs
    jsp
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[SQL] 정규화와 역정규화(반정규화)
상단으로

티스토리툴바