본문 바로가기

자격증/SQLD

[SQLD] 강의 06. 정규화

 

2.1 정규화 (Normalization)
  

 - 정규화 절차

이상현상 (Anomaly) 방지  --> 삽입이상, 갱신이상, 삭제이상 

* 정규화
 - 데이터베이스의 이상현상(Anomaly)을 막기 위해, 데이터의 중복을 최소화하면서
   테이블을 보다 잘 조직된 상태로 분해하는 과정.

 - 정규화의 결과 : 데이터의 입력/수정/삭제 성능 향상.
                             데이터의 조회 성능 하락 가능성 증가 (무조건적인 하락X) **
                                                          정규화로 인해 join의 횟수 증가 ==> 조회 성능 하락.
                                                          정규화로 인해 불필요한 트랜잭션 감소 ==> 전체 시스템 성능 향상.

 

  • 정규화 절차

  제 1정규화 : 릴레이션의 속성값이 모두 원자값(Atomic Value)만으로 구성되어야 한다.
                       중복값 제거, 기본키 설정.

  제 2정규화 : 기본키가 2개 이상의 속성으로 이루어진 경우 부분 함수 종속성을 제거한다.

  제 3정규화 : 기본키를 제외한 컬럼 간의 종속성을 제거한다. 이행 함수 종속성을 제거한다.

  BCNF : 기본키를 제외하고 후보키가 있는 경우 후보키가 기본키를 종속시키면 분해한다.
              (후보키가 아닌 결정자가 존재할 경우 분해)

 

  • 함수종속성 (FD, Functional Dependency) _속성간의 의존성


 

 * 제1 정규화 (비정규형 --> 1차 정규형)
 - 하나의 속성이 여러 속성값을 갖거나 하나의 테이블에 유사한 속성이 반복될 때 이를 별도 테이블로 분리.
    => 하나의 속성이 하나의 속성값만 가져야함.
        스키마(테이블구조_속성자체)를 변경하는 대신 속성값을 변경할 수 있도록

 * 제2 정규화 (1차 정규형 --> 2차 정규형)
 - (복합식별자의 경우) 일반 속성이 주식별자의 일부에만 종속성을 갖는 부분 함수 종속성을 제거.

 * 제3 정규화 (2차 정규형 --> 3차 정규형)
 - 주식별자가 아닌 일반 속성 간에 함수 종속성이 존재하는 이행 함수 종속성을 제거.

 + 보이스-코드 정규화 (3차 정규형 --> BCNF 정규형)
 - 일반속성이 기본키를 결정하는 경우(결정자가 되는 경우).

 


 

https://www.youtube.com/watch?v=T5mYcnW25Fo&list=PLDI0745yTBjXFuIFYqq3vzcQYuVyajFpC&index=6