본문으로 바로가기

[DB] 2. 정규화 (Nomalization)

category CS/Database 2019. 1. 20. 21:51
2_정규화

2. 정규화 (Nomalization)

  1. 정규화의 배경
  2. 정규화의 개념
  3. 정규화 과정

 

1. 정규화의 배경

1.1. 데이터 이상 (Data Anomaly)

  • 삽입 이상

    원하지 않은 데이터가 삽입되거나, 다른 데이터가 부족해 삽입이 되지 않아 발생하는 이상

  • 삭제 이상

    데이터를 삭제할 때, 원하지 않는 값 또한 삭제되어 발생하는 이상

  • 갱신 이상

    데이터를 갱신할 때, 다른 튜플의 데이터는 갱신되지 않아 일관성이 없어져 발생하는 이상

 

 

2. 정규화의 개념

2.1. 정규화란?

  • 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
  • 중복을 최소화 하기 위해 데이터를 구조화 하는 작업
  • 나쁜 릴레이션의 애트리뷰트를 나눠 좋은 릴레이션으로 분해하는 작업

 

2.2. 나쁜 릴레이션 파악하기

  • 엔티티를 구성하고 있는 애트리뷰트 간에 함수적 종속성을 판단
  • 각각의 정규형마다 어떠한 함수적 종속성을 만족하는지에 따라 정규형이 정의

 

2.3. 함수적 종속성 (Functional Dependency)

  • 애트리뷰트 데이터들의 의미와 애트리뷰트들 간의 상호 관계로부터 유도되는 제약조건
  • X 와 Y 를 어떤 애트리뷰트 집합이라고 할 때, X 의 값이 Y 의 값을 유일하게 결정한다면 X 가 Y 를 함수적으로 결정한다 또는 Y 는 X 에 함수적 종속 이라한다 (X → Y)
  • X → Y 관계에서 X 를 결정자 (Determinant), Y 를 종속자 (Dependent) 라고 한다

 

2.4. 무손실 분해 (Nonloss Decomposition)

  • 테이블 R 의 프로젝션 (일부 속성만 추출하여 만든 테이블) R1, R2 를 조인했을 때, 정보 손실 없이 다시 테이블 R 로 복귀되는 경우

 

 

3. 정규화 과정

3.1. 제 1 정규형

  • 모든 속성의 도메인이 오직 원자값 으로만 되어있는 정규형

도메인(Domain) : 하나의 속성이 갖는 값들의 집합


 

3.2. 제 2 정규형

  • 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속 을 만족하는 정규형

완전 함수적 종속

  • 어떤 속성이 기본키에 대해 완전히 종속일 때

부분 함수적 종속

  • 어떤 속성이 기본키의 일부에 의해서도 종속일 때


 

3.3. 제 3 정규형

  • 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속 을 만족하지 않는 정규형

이행적 함수 종속

  • A → B , B → C 인 경우 A → C 가 성립될 때


 

3.4. BCNF

  • 모든 결정자후보키 인 정규형


 

전체적인 정규화 과정은 아래와 같다


 

3.5. 비정규화

  • 지나친 정규화로 인해 릴레이션이 여러개로 분리가 된 경우, 원하는 정보를 위해 많은 조인을 사용해야 하기 때문에 속도가 저하됨
  • 따라서 정규화에 위배되지만 다시 테이블을 합치는 과정을 비정규화 라고 함


'CS > Database' 카테고리의 다른 글

[DB] 4. SQL  (0) 2019.01.21
[DB] 3. 트랜잭션 (Transaction)  (0) 2019.01.20
[DB] 1. 데이터베이스 (Database)  (0) 2019.01.20