99클럽 TIL

99클럽 코테 스터디 16일차 TIL DB DB 정규화

차가리 2024. 6. 4. 21:14
728x90
  • DB
    • Index
      • Index 작동 원리
      • Index 종류
        • B-Tree 인덱스
        • Hash Indexes
        • Bitmap Index
        • GIST(Generalized Search Tree)
        • R-Tree
        • Full Text Index
        • Spatial Index
        • Trie(Prefix Tree) Index
        • Covering Index
  • 영속성
  • 트랜잭션
  • ORM
  • ACID
  • N+1 문제
  • DB 정규화
  • Data Replication
  • sharding 전략
  • CAP 이론

란?

  • 관계형 데이터베이스의 설계 과정에서 데이터를 구조화하여 데이터 중복을 최소화 하고 데이터 무결성을 보장하는 방법
  • DB 의 성능을 향상 시키고, 데이터 삽입, 삭제 및 갱신 시 발생할 수 있는 이상현상을 방지함.

목표

  1. 데이터 중복 최소화
    • 동일한 정보를 여러 곳에 저장하지 않음으로써 저장 공간을 절약하고 데이터의 일관성을 유지함.
  2. 데이터 무결성 보장
    • 데이터의 일관성을 유지하고 데이터 갱신 시 불일치가 발생하지 않도록 함.
  3. 갱신 이상 방지
    • 삽입, 삭제, 갱신 작업에서 발생할 수 있는 이상 현상을 방지함.

정규화 단계

  • 정규화는 여러 단계로 이루어지며, 각 단계는 특정한 조건을 만족시켜야함. 일반적으로 1NF 에서 시작하여 2NF,3NF,BCNF(Boyce-Codd Normal Form) 등의 단계로 진행됨.
  1. 제 1 정규형(1NF)
    • 1NF 는 모든 컬럼의 값이 원자값(Atomic Value) 를 가져야 하며, 반복되는 그룹이 없어야 함.
    • 조건
      • 각 컬럼이 원자값을 가져야한다.
      • 테이블 내 각 행이 고유해야한다.

예시

  • 반복되는 그룹이 있는 테이블
학생ID | 이름   | 수강 과목
-------|--------|-----------------
1      | 홍길동 | 수학, 영어
2      | 이순신 | 과학
  • 1NF 로 변환한 테이블
학생ID | 이름   | 수강 과목
-------|--------|---------
1      | 홍길동 | 수학
1      | 홍길동 | 영어
2      | 이순신 | 과학
  1. 제 2 정규형
    • 2NF 는 1NF 를 만족하며, 기본 키의 모든 부분집합에 대해 함수적 종속이 없는 상태를 의미함. 즉, 부분 함수 종속성을 제거해야한다.
    • 조건
      • 1NF 를 만족해야한다.
      • 기본 키가 아닌 모든 컬럼이 기본 키에 대해 완전 함수 종속적이여야 한다.

예시

  • 부분 함수 종속성이 있는 테이블
학생ID | 과목ID | 성적 | 학생 이름
-------|--------|------|---------
1      | 101    | A    | 홍길동
1      | 102    | B    | 홍길동
2      | 101    | B    | 이순신
  • 2NF 로 변환한 테이블
학생 테이블:
학생ID | 학생 이름
-------|---------
1      | 홍길동
2      | 이순신

성적 테이블:
학생ID | 과목ID | 성적
-------|--------|------
1      | 101    | A
1      | 102    | B
2      | 101    | B
  1. 제 3 정규형
    • 3NF 는 2NF 를 만족하며, 기본 키가 아닌 모든 컬럼이 기본 키에 대해 이행적 종속성을 갖지 않는 상태를 의미
    • 조건
      • 2NF 를 만족해야 한다.
      • 기본 키가 아닌 모든 컬럼이 기본 키에 대해 이행적 종속성을 갖지 않아야 한다.

예시

  • 이행적 종속성이 있는 테이블
학생ID | 과목ID | 성적 | 과목 이름 | 교수 이름
-------|--------|------|----------|---------
1      | 101    | A    | 수학     | 김교수
1      | 102    | B    | 영어     | 이교수
2      | 101    | B    | 수학     | 김교수
  • 3NF 로 변환한 테이블
학생 테이블:
학생ID | 학생 이름
-------|---------
1      | 홍길동
2      | 이순신

성적 테이블:
학생ID | 과목ID | 성적
-------|--------|------
1      | 101    | A
1      | 102    | B
2      | 101    | B

과목 테이블:
과목ID | 과목 이름 | 교수 이름
-------|----------|---------
101    | 수학     | 김교수
102    | 영어     | 이교수
  1. BCNF(Boyce and Codd Normal Form)
    • 제 3정규형을 조금 더 강화시킨 개념
    • 3NF 를 만족하며, 모든 결정자가 후보 키가 되도록 하는 조건을 추가로 가짐. 즉, 기본 키가 아닌 결정자를 제거함.
    • 조건
      • 3NF 를 만족해야함.
      • 모든 결정자가 후보 키여야 한다.

예시

  • 3NF 를 만족하지만 BCNF 를 만족하지 않는 테이블
학생ID | 과목ID | 교수 이름
-------|--------|---------
1      | 101    | 김교수
1      | 102    | 이교수
2      | 101    | 김교수
  • BCNF 로 변환한 테이블
학생 테이블:
학생ID | 학생 이름
-------|---------
1      | 홍길동
2      | 이순신

교수 테이블:
과목ID | 교수 이름
-------|---------
101    | 김교수
102    | 이교수

성적 테이블:
학생ID | 과목ID | 성적
-------|--------|------
1      | 101    | A
1      | 102    | B
2      | 101    | B
728x90