데이터베이스 정규화

주형(Jureamer)·2022년 1월 10일
0
post-custom-banner

정규화 목적

  • 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지
  • 각 릴레이션에 중복된 종속성을 여러개의 릴레이션에 분할
  • 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 함
  • 데이터 삽입 시 릴레이션을 재구성할 필요성 감소
  • 효과적인 검색 알고리즘을 생성 가능

이상(Anomaly) 현상

  • 정규화를 거치지 않은 데이터베이스에서 발생할 수 있는 현상
  • 데이터들이 불필요하게 중복되어 릴레이션 조작에 예기치 못한 문제 발생
  • 애트리뷰트들의 종속관계를 하나의 릴레이션에 표현하기 때문에 발생

이상 종류

  • 삽입 이상(Insertion Anomaly)
    • 데이터 삽입 시 의도와 다른 값들도 삽입 됨

      Untitled

다음과 같은 경우 새로운 직원이 들어왔을 때, Dr. Newsome이 가르칠 수업이 아직 정해지지 않았다면 데이터를 추가하지 못한다. 수업을 NULL 값으로 지정하지 않는 이상, 담당 수업이 있어야만 테이블에 추가할 수 있는 이상 현상이 발생함

  • 삭제 이상(Delete Anomaly)
    • 데이터 삭제 시 의도와 다른 값들도 연쇄 삭제 됨

      Untitled

다음과 같은 경우 한 직원이 담당하는 수업을 삭제한다. 그러나 이 수업 데이터를 삭제하려면, 레코드 전체가 사라지고 결국에는 의도치 않게 직원의 다른 데이터도 함께 삭제되는 현상이 발생한다.

  • 갱신 이상(Update Anomaly)
    • 속성값 갱신 시 일부 튜플만 갱신되어 모순 발생

      Untitled

다음과 같은 테이블이 존재하고 두 개의 레코드가 동일한 사람일 때, 519번을 갱신하는 경우 어떤 행의 데이터를 갱신해야 하는지 알 수 없음

정규화 과정

1NF (First Normal Form)

1NF를 만족하려면 도메인이 원자값이어야한다.

Untitled

 <**1NF를 만족하지 않는 릴레이션>**

Untitled

 <**1NF를 만족시키는 릴레이션>**
  • 발생할 수 있는 이상(Anomaly)의 예
    • 갱신이상: 홍길동이 사회과목을 '역사'로 바꾸었다. 그럼 임꺽정이 듣고 있는 사회 과목도 바뀌어버린다.
      • UPDATE 과목 SET 수강과목 = '역사' WHERE 수강과목 = '사회' AND 수강자 = '홍길동'
    • 삭제 이상: 임꺽정이 '과학' 과목을 수강취소했다. 그럼 신사임당의 수강 정보도 삭제된다.
      • DELETE FROM 과목 WHERE 수강과목 = '과학' AND 수강자 = '임꺽정'
  • 해결책
    • 컬럼 속에 값을 원자값(값이 1개)으로 변경한다.

2NF (Second Normal Form)

2NF를 만족하려면 부분적 함수 종속을 제거해야한다.

  **<2NF를 만족하지 않는 릴레이션>**

<2NF를 만족하지 않는 릴레이션>

Untitled

     **<2NF를 만족시키는 릴레이션>**

 **<2NF를 만족시키는 릴레이션>**
  • 발생할 수 있는 이상(Anomaly)의 예
    • 삽입이상: 컴퓨터과, 전자과, 기계과 학생을 추가하고자 할 경우 더이상 불필요한 중복정보인 학과장 정보가 삽입되야 한다.
    • 갱신이상: 컴퓨터과의 학과장이 변경되었다. 하나만 변경하면 모순이 발생하므로 다 찾아서 변경해야 한다.
    • 삭제이상: 신사임당이 자퇴해서 삭제하고자 한다. 이 삭제로 인해 기계과 학과장의 정보가 사라져버린다.
  • 해결책
    • 부분적 함수 종속을 제거하고 릴레이션을 구분한다.

3NF (Third Normal Form)

3NF를 만족하려면 이행적 함수 종속을 제거해야 한다.

(이행적 함수 종속: A→B이고, B→C일 때, A→C인 관계)

  **<3NF를 만족하지 않는 릴레이션>**

<3NF를 만족하지 않는 릴레이션>

Untitled

<3NF를 만족시키는 릴레이션>

<3NF를 만족시키는 릴레이션>

  • 발생할 수 있는 이상(Anomaly)의 예
    • 삽입이상: 컴퓨터과, 전자과 학생을 추가하고자 할 경우 더이상 불필요한 중복정보인 대학 정보가 삽입되어야 한다.
    • 갱신이상: 컴퓨터과의 소속 대학이 'IT대학'으로 변경되었다. 하나만 변경하면 모순이 발생하므로 다 찾아서 변경해야 한다.
    • 삭제이상: 홍길동이 자퇴해서 삭제하고자 한다. 이 삭제로 인해 컴퓨터과의 대학 정보가 사라져 버린다.
  • 해결책
    • 이행적 함수 종속을 제거하고 릴레이션을 구분한다.

Reference

profile
작게라도 꾸준히 성장하는게 목표입니다.
post-custom-banner

0개의 댓글