[DB] 정규화 (Normalization)1

C____JIN·2022년 8월 5일
0

CS

목록 보기
1/1

정규화(Normalization)

정규화란?

정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정
이상현상이 존재하는 릴레이션을 분해하여 여러개의 릴레이션을 생성하는데 이른 단계별로 구분하여 정규형이 높아질수록 이상현상이 줄어듬

이상현상 (Anomaly)

  • 삽입 이상 (Insertion anomaly)
    특정 데이터가 존재하지 않아 중요한 데이터를 데이터베이스에 삽입할 수 없을 때 발생
  • 삭제 이상 (Deletion anomaly)
    특정 정보를 삭제하면, 원치 않는 정보도 삭제되는 현상
  • 갱신 이상 (Update anomaly)
    테이블의 특정 데이터를 갱신했는데, 정상적으로 변경되지 않는 경우
    너무 많은 행을 업데이트 하는 것

정규화 과정

제 1정규형 (1NF)

  1. 각 Column이 하나의 attribute만을 갖음
  2. 하나의 Column은 같은 종류나 type의 값을 갖음
  3. 각 칼럼이 유일한 이름을 갖음
  4. 칼럼의 순서가 상관이 없음

이 경우 첫 번째 조건을 만족하지 못한다. 하나의 과목 Column에 두 개의 값을 갖게 되어 1차 정규화가 필요하다.

이처럼 각 칼럼이 원자 값을 갖도록 테이블을 분해하면 1정규현을 만족한다.

제 2정규형 (2NF)

  1. 1정규형을 만족함
  2. 모든 칼럼이 부분적 종속(Partial Dependency)이 없어야 함
    (모든 칼럼이 완전 함수 종속을 만족)

위와 같이 학생번호과목이 복합키이고 하나의 테이블 내에서 과목을 통해 지도교사를 알 수 있을 때, 부분적 함수 종속을 없앨 수 있다.

이처럼 과목을 독립적인 기본키로 갖는 테이블로 분리할 수 있다.

제 3정규형 (3NF)

  1. 2정규형을 만족함
  2. 기본키를 제외한 속성들간의 이행적 종속성(Transitive Dependency)이 없어야함
  • 이행적 종속성 : A->B, B->C 일때, A->C

위와 같이 기본키는 ID인데 등급으로 인해 이행적 종속성이 발생하므로 제 3정규화를 수행해 분리할 수 있다.

이 처럼 분리를 통해 제 3정규형을 만족시킬 수 있다.

BCNF (Boyce-Codd Normal Form)

  1. 3정규형을 만족함
  2. 모든 결정자가 후보키 집합에 속해야함

위와 같이 후보키 집합(학생번호, 과목)이 아닌 지도교수과목에 대한 결정자가 되어 BCNF를 만족하지 않는다.

지도교수를 기본키로 갖는 테이블 분리를 통해 BCNF를 만족시킬 수 있다.

Reference

profile
개발 블로그🌐 개발일지💻

0개의 댓글