[DATABASE] 정규화(Normalization) 1

박중연·2024년 3월 20일

📅정규화(Normalization)란?

정규화란 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다.

즉, 쉽게말하면 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 이러한 테이블을 분해하는 정규화 단계가 정의 되어 있다.

요약
정규화의 목적 : 중복된 데이터를 최소화
이상 현상(Anomaly) : 하나의 릴레이션에 두 개 이상의 정보가 포함되어 있으면 발생
잘못 설계된 테이블에 우리가 데이터 조작(삽입, 수정, 삭제) 이상 현상 발생

  • 해결 방법?
    • 릴레이션의 속성들간에 함수적 종속이 있는데 이걸파악해서 테이블을 규칙에 따라서 분해해야 한다. -->이과정을 정규화 라고한다
      정규화는 매우 중요(데이터베이스 설계 단계)

❓이상현상의 종류

  • 삽입 이상(Insertion anomaly)
    📌 릴레이션에 데이터를 삽입 시, 원하지 않는 데이터도 함께 insert해야하는경우.

  • 삭제 이상(deletion anomaly)
    📌 릴레이션에서 튜플을 삭제할 때 원하지 않는 값들도 함께 삭제.

    잘못설계된 위와같은 릴레이션에서 경영학원론 수강을 취소하는 경우 학생번호 102 튜플이 전체 삭제된다. 즉, 원하지않는 데이터도 함께 삭제된다.

  • 갱신 이상(update anomaly)
    📌 릴레이션에서 튜플의 속성 값을 수정할 때, 일부 정보만 갱신되어 정보의 모순이 발생.

함수적 종속성 (Functional Depenency)

정규화를 진행하기 전에 우리가 알아야하는 2가지

  • 1) 기본키
  • 2) 함수적 종속성
    함수적 종속성 : 릴레이션의 연관성있는 속성들로만 구성되도록 분해함
    어떤 속성 A를 알면 나머지 속성 B를 알 수 있다.

📅NF(Normal Form)

정규화를 하기위한 규칙으로 순차적으로 진행해야 한다. 정규형이 높아지면 요구되는 제약조건이 많고 복잡해 지기 때문에 보통 3정규형까지만 진행한다.
5,6NF는 발생 빈도가 작기 때문에 학술적인 측면에서 바라본다.

📌제1정규화(1NF)

  • 이상 현상과 관련이 없다.
  • 규칙 : 모든 속성은 하나의 값만 가져야 한다.
  • 복수의 속성 값을 가지는 속성을 분리한다.
  • 테이블 하나의 속성에는 여러개의 데이터값이 중복되어 나타나지 않아야 한다
  • 반복 속성 제거 필요
profile
개발자로 취업하기

0개의 댓글