DB 정규화

Kim Dong Kyun·2023년 4월 13일
1
post-custom-banner

DB 정규화?

구어체로 설명!

데이터베이스 정규화(Database Normalization)는

  1. 관계형 데이터베이스에서
  2. 데이터 중복을 최소화하고
  3. 데이터의 일관성과 무결성을 유지하기 위한 과정이다.

정규화의 장점은

  1. 정규화는 데이터를 효율적이고 구조화된 방식으로 저장하여
  2. 데이터베이스의 성능, 유지보수성, 확장성을 개선하고
  3. 데이터 중복과 모순을 방지하는데 도움을 준다.

일반적으로 1차 정규화(1NF), 2차 정규화(2NF), 3차 정규화(3NF) 등의 단계로 이루어진다.

각 단계에서는 특정 종류의 종속성(dependency)을 제거하여 데이터베이스를 더 정규화된 상태로 만든다.


1차 정규화 (1NF)

1차 정규화는 테이블의 각 속성들이 원자값(Atomic Value)을 가지도록 분해하는 과정이다. 각 속성들은 더 이상 중복된 값을 가지지 않게 되며, 각 속성은 하나의 값을 가지게 된다.

  1. 비정규화된 상태

    주문번호고객명주소상품명가격
    1홍길동서울TV1000
    2홍길동서울냉장고2000
    3김철수부산냉장고1800
  1. 1차 정규화된 상태

    <주문 테이블>

    주문번호고객명주소
    1홍길동서울
    2홍길동서울
    3김철수부산

    <상품 테이블>

    주문번호상품명가격
    1TV1000
    2냉장고2000
    3냉장고1800

2차 정규화 (2NF)

2차 정규화는 1차 정규화를 만족하면서 부분 함수 종속을 제거하는 과정이다.

부분 함수 종속이란 테이블의 기본키가 아닌 속성들이 기본키에 대해 함수적으로 종속되는 것을 의미한다.

  1. 비정규화된 상태

    학번강의번호강의명교수명
    101001수학김교수
    102001수학김교수
    103002영어박교수
  2. 2차 정규화된 상태

    <학생 테이블>

    학번학생명
    101홍길동
    102김철수
    103박영희

    <강의 테이블>

    강의번호강의명교수번호
    001수학001
    002영어002

    <교수 테이블>

    교수번호교수명
    001김교수
    002박교수

3차 정규화 (3NF)

3차 정규화는 2차 정규화를 만족하면서 이행적 함수 종속을 제거하는 과정이다.

이행적 함수 종속이란 A -> B -> C와 같이 A가 B를 함수적으로, B가 C를 함수적으로 결정하는 경우를 의미한다.

  1. 비정규화된 상태

    주문번호고객명고객주소제품번호제품명제품가격
    001홍길동서울P001노트북1000
    002김철수부산P002스마트폰800
    003박영희대구P003테블릿600
  2. 3차 정규화된 상태

    <주문 테이블>

    주문번호고객명고객주소
    001홍길동서울
    002김철수부산
    003박영희대구

    <제품 테이블>

    제품번호제품명제품가격
    P001노트북1000
    P002스마트폰800
    P003테블릿600
post-custom-banner

0개의 댓글