[Database] 정규화

h220101·2022년 4월 13일
0

정규화 Normalization

개념적설계의 결과 > E-R다이어그램
E-R다이어그램 >> 스키마설계

이상현상 (anomaly)

  • 불필요한 데이터중복으로 인해 릴레이션에 대한 데이터 삽입 수정
    삭제연산을 수행할 때 발생할 수 있는 부작용이 있다.

정규화 (normalization)

  • 데이터의 일관성, 최소한의 데이터중복, 최대한의 데이터 유연성을 위한 방법이며, 데이터를 분해하는 과정이다.
    = 이상현상이 발생하는 릴레이션을 분해하는 과정이다.
  • 함수의 종속성을 판단하여 정규화를 수행한다.

이상현상 (anomaly)

삽입이상

  • 릴레이션에 새 데이터를 삽입하려면, 불필요한 데이터도 함께 삽입해야하는 문제
    ex) 회원가입을 하려고하는데 이벤트도 같이 되는 현상

갱신이상

  • 릴레이션의 중복된 튜플들 중 일부만 수정하여 데이터가 불일치하게되는 모순이 발생되는 문제
    하나의 업데이트처리를 하려고 했는데 다른것까지 다 같이 업데이트해줘야됨

삭제이상

  • 릴레이션에서 튜플을 삭제하면 꼭 필요한 데이터까지 손실되는 연쇄삭제 현상이 발생하는 문제
    아이디를 삭제하려하는데 등급까지 다 삭제되버리는 상황



정규화

  • 이상현상이 발생하지 않도록, 릴레이션을 관련있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다.

함수적 종속성

  • 속성들 간의 관련성
  • 함수 종속성을 이용하여, 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여 이상현상이 발생하지않는 릴레이션으로 만들어가는 과정이다.

함수 종속 (Functional Dependency)

  • X가 Y를 함수적으로 결정한다.
  • 릴레이션 내 모든 튜플을 대상으로
    하나의 X값에 대한 Y값이 항상 하나이다.
  • Y가 X에 함수적으로 종속되어 있다와 같은 의미이다.
  • X -> Y로 표현 (X는 결정자, Y는 종속자)

부분 함수 종속이 되는게 좋지않다.

함수종속 관계판단

  • 속성 자체의 특성과 의미를 기반으로 함수 종속성을 판단한다.
  • 속성 값은 계속 변할 수 있으므로 현재 릴레이션에 포함된 속성값만으로 판단하면 안된다.
  • 일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결정한다.
  • 기본키나 후보키가 아니어도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있다.

완전함수 종속

  • 식별자로 완벽히 식별이 가능하다.
  • 릴레이션에서 속성집합 Y가 속성집합 X에 함수적으로
    종속되어 있지만, 속성 집합 X의 전체가 아닌 일부분에는 종속되지 않음을 의미한다.

부분함수 종속

  • 일반적인 컬럼과 식별자키 일부분에도 식별이 가능하다.
  • 릴레이션에서 속성집합 Y가 속성집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미한다.

함수종속 관계판단 (고려할 필요X)

  • 결정자와 종속자가 같거나, 결정자가 종속자를 포함하는 것처럼 당연한 함수 종속 관계는 고려하지 않는다.

정규화를 통한 릴레이션은 무손실 분해여야 한다.

  • 릴레이션은 의미적으로 동등한 릴레이션들로 분해되어야하고, 분해로 인한 정보의 손실이 발생하지 않아야한다.
  • 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능하다.

정규형 (Normal Form)

  • 릴레이션이 정규화된 정도
  • 각 정규형마다 제약조건이 존재한다.
    (릴레이션 특성을 고려, 적합한 정규형 선택)
    : 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해진다.

정규화의 관계

기본적으로 3정규형으로 만든다.
실무에서는 4,5차는 고려하지 않는다.



제 1정규형 (1NF) (First Normal Form)

  • 릴레이션의 모든 속성이 더는 분해되지 않는 원자값만 가지면 제 1 정규형을 만족한다.
  • 제 1 정규형을 만족하는 관계 데이터 베이스 릴레이션
  • 부분 함수 종속 때문에 이상현상 발생
  • 부분 함수 종속이 제거되도록 릴레이션 분해 > 제 2 정규형

1NF 이상현상 발생이유

: 기본키인 {고객아이디, 이벤트번호} 에
완전 함수 종속되지 못하고 일부분인 고객아이디에 종속되는 등급과 할인율 속성이 존재하기 때문이다.

문제해결 방법

--> 부분 함수 종족이 제거되도록 이벤트 참여 릴레이션을 분해한다. (분해된 릴레이션은 제 2정규형에 속하게 된다.)



제 2정규형 (2NF)

  • 릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형을 만족함.
  • 이행적 함수 종속이 존재하기 때문에 이상현상 발생.
  • 이행적 함수 종속이 제거되도록 릴레이션 분해 > 제 3 정규형

2NF 이상현상 발생이유

: 이행적 함수 종속이 존재하기 때문이다.
X -> Y 와 Y -> Z가 존재하면 X -> Z가 성립한다. (Z가 X에 이행적으로 함수종속)

문제해결 방법

--> 이행적 함수 종속이 제거되도록 고객 릴레이션을 분해한다.
(분해된 릴레이션은 제 3정규형에 속하게 된다.)



제 3정규형 (3NF)

  • 릴레이션이 제 2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않으면 제 3 정규형을 만족함.
  • 후보키가 아닌 결정자가 존재할 수 있고 이 때문에 이상현상이 발생할 수 있음.
  • 후보키가 아닌 결정자가 제거되도록 릴레이션 분해 > 보이스/코드 정규형



보이스/코드 정규형 (BCNF)

  • 하나의 릴레이션에 여러 개의 후보키가 존재하는 경우, 제 3 정규형까지 모두 만족해도 이상 현상이 발생할 수 있음.
  • 보이스/코드 정규형은 제 3 정규형에 속하지만, 제 3 정규형에 속하는 모든 릴레이션이 보이스/코드 정규형에 속하는 것은 아님.

보이스/코드 정규형에 만족하지 않은 경우

정규화 된 BCNF 함수 종속 관계



제 4 정규형 (4NF)

릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거하면 제 4 정규형이다.

제 5 정규형 (5NF)

릴레이션이 제 4 정규형을 만족하면서, 후보키를 통하지 않는 조인 종속을 제거하면 제 5 정규형에 속한다.

📢 정규화 시 주의사항

모든 릴레이션이 제 5 정규형에 속해야만 바람직한 것은 아니다.
일반적으로 제 3 정규형이나 보이스/코드 정규형에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상을 해결하는 경우가 많다.

예를들어 정규화된 릴레이션(많은 조인 발생)검색보다 반정규화 릴레이션 검색 속도가 더 빠르다.


✏️ 정처기 식 외우기

정규화 (두부이걸다조)

  1. 비정규 Relation
    메인이 원자값

  2. 제 1 정규형
    분 함수적 종속제거

  3. 제 2 정규형
    행적 함수 종속제거

  4. 제 3 정규형
    정자이면서 후보키가 아닌 것 제거

  5. BCNF
    치 종속 제거

  6. 제 4 정규형
    인 종속성 이용

  7. 제 5 정규형

profile
기록하는 삶

0개의 댓글