[정보처리산업기사] 73강 정규화(Normalization)

DongHo Im·2022년 1월 27일
0

정보처리산업기사

목록 보기
73/86
post-custom-banner

1. 정규화의 개요

정규화란 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정이다. 바람직한 스키마로 만들어간다는 것은 데이터베이스 설계를 논리적으로 재구성한다는 것으로 이해하면 된다. 이렇게 정규화를 수행하면 불필요한 데이터를 없애거나 삽입/삭제 등의 쿼리 수행 시 발생할 수 있는 각종 이상현상을 방지할 수 있다.

  • 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정

  • 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형,제5정규형이 있음

  • 차수가 높아질수록 만족시켜야 할 제약조건이 많아짐

  • 정규화는 데이터베이스 논리적 설계 단계에서 수행함


2. 정규화의 목적

  • 데이터 구조의 안정성, 무결성을 유지

  • 데이터 중복을 배제해 이상 발생 방지

  • 자료 저장 공간의 최소화

  • 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄여줌


3. 이상(Abnormaly)의 개념 및 종류

정규화를 거치리 않으면 데이터베이스 내의 데이터들이 불필요하게 중복되어 릴레이션 조작 시 이상 현상이 발생하게 된다. 이러한 이상의 종류에는 삽입이상, 삭제이상, 갱신이상이 있다.

삽입이상 (Insertion Anomaly)

  • 데이터 삽입 시 원하지 않은 값들도 함께 삽입됨
  • 새로운 교수의 경우 아직 맡은 강의가 없어서 새 교수를 테이블에 추가할 수 없음

삭제이상 (Deletion Anomaly)

  • 한 튜플을 삭제할 때 다른 값들도 함께 삭제되는 연쇄 현상
  • 한 교수가 강의를 중단하고자할 때, 강의를 지우면 교수 자체가 사라지게 됨

갱신이상 (Update Anomaly)

  • 튜플의 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보의 모순이 생기는 현상

5. 데이터베이스 정규화 과정

1NF (제1정규형)

  • 릴레이션에 속한 모든 도메인이 원자값만으로(1개) 되어있는 정규형
    • 하나의 속성이 단일값을 갖도록 하는 정규화 과정
  • 아래 테이블의 경우, Adam의 Subject가 두개이기 때문에 1차정규형을 만족하지 못한다. 따라서 1차 정규화를 위해선 아래와 같이 1개의 행을 더 추가하게 된다. 혹은 Subject1, Subject2로 속성을 추가할 수도 있다.
    • 1차 정규화 전
    • 1차 정규화 후

2NF (제2정규형)

  • 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 정규형
  • 완전 함수적 종속이란, 특정 속성에 완전히 종속된 속성이 없어져야 한다는 것을 말함
  • 기본키가 복합키일 때, 특정 속성이 복합키 전체가 아닌 일부 속성에 의존적인 경우 따로 분리해 새로운 테이블을 만들어야 함
  • (Student+Subject)가 기본키가 될 수 있는데 Age의 경우 Student에 종속되어 있다. 그 이유는 Student 값을 알면, Age 값을 알 수 있기 때문이다. 따라서 2차 정규화를 위해선 아래와 같이 테이블을 쪼개야 한다.
    • 2차 정규화 전
    • 2차 정규화 후

3NF (제3정규형)

  • 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형
  • 주 식별자가 아닌 속성 중 종속관계가 있는 속성을 제거하는 과정 (기본키 외의 속성이 그 외의 속성을 결정할 수 없어야 함)
  • 아래 테이블의 경우 Student_id가 기본키인데 기본키 외의 속성을 봐보면 Street, City, State, Zip이 있다. 이 중 Zip 을 알면 Street, City, State가 결정되기 때문에 종속관계가 있다고 볼 수 있다.
    • 3차 정규화 전
  • 따라서 아래와 같이 테이블을 쪼갬으로써 3차 정규형을 만족시킬 수 있다. 즉, 기본키를 제외한 속성들 간에 이행적 함수 종속이 없게 되는 것이고 이 뜻은 기본키 외의 다른 속성이 그 외 다른 속성을 결정할 수 없다는 것이다.
    • 3차 정규화 후

BCNF (Boyce-Codd 정규형)

  • 릴레이션에서 결정자가 모두 후보키인 정규형

  • 강한 제3정규형이라고도 함

4NF (제4정규형)

  • 릴레이션 R에 다치 종속 A --> B가 성립하는 경우 R의 모든 속성이 A의 함수적 종속 관계를 만족하는 정규형이다.
    • 다치 종속 : a, b, c 3개의 속성을 가진 릴레이션 r 에서 어떤 복합 속성(a,c)에 대응하는 b 값의 집합이 a 값에만 종속되고 c 값에는 무관하면, b는 a 의 다치 종속이라 한다.

5NF (제5정규형)

릴레이션 R의 모든 조인 종속이 R의 후보기를 통해서만 성립되는 정규형이다.

정리

  • 제1정규형 만족 : 모든 속성값이 원자값

  • 제1정규형 -> 제2정규형 만족 : 부분적 함수 종속 제거 (=완전 함수 종속적이어야 함)

  • 제2정규형 -> 제3정규형 만족 : 이행적 함수 종속 제거 (A->B, B->C일때, A->C인 것을 제거)

  • 제3정규형 -> BCNF 만족 : 결정자이면서 후보키가 아닌 것 제거

  • BCNF -> 제4정규형 만족 : 다치 종속

  • 제4정규형 -> 제5정규형 : 조인 종속성 이용

profile
[DATABASE] 비전공자 출신의 개발 도전!
post-custom-banner

0개의 댓글