//Google AdSense

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

E-R다이어그램  >> 스키마설계 

이상현상(anomaly) 정규화(normalization)
불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입 수정 삭제 연산을 수행할 때 발생할 수 있는 부작용

데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정.

 

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

함수적 종속성을 판단하여 정규화를 수행

함수적 종속성 (Functional Dependency)

속성들 간의 관련성

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

이상현상(anomaly)

  1. 삽입이상
    • 릴레이션에 새 데이터를 삽입하려면 불필요한 데이터도 함께 삽입해야하는 문제
  2. 갱신이상 (Update anomaly)
    • 릴레이션의 중복된 튜플들 중 일부만 수정하여 데이터가 불일치하게 되는 모순
  3. 삭제이상 (Deletion anomaly)
    • 릴레이션에서 튜플을 삭제하면 꼭 필요한 데이터까지 손실되는 연쇄 삭제 현상이 발생하는 문제

함수 종속 (Functional Dependency)

X → Y

X Y를 함수적으로 결정한다.

Y X에 함수적으로 종속되어 있다

  1. X가 Y를 함수적으로 결정한다.
    • 릴레이션 내의 모든 튜플을 대상으로 하나의 X값에 대한 Y값이 항상 하나
    • YX에 함수적으로 종속되어 있다 와 같은 의미
    • X Y로 표현 (X는 결정자, Y종속자)
  2. 함수 종속 관계 판단
    • 속성 자체의 특성과 의미를 기반으로 함수 종속성을 판단
    • 속성 값은 계속 변할 수 있으므로 현재 릴레이션에 포함된 속성 값만으로 판단하면 안된다.
    • 일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결정한다.
    • 기본키나 후보키가 아니어도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있다.  
  3.  완전 함수 종속 VS. 부분 함수 종속 
    1. 완전 함수 종속 (Full Functional Dependency)
      • 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X의 전체가 아닌 일부분에는 종속되지 않음을 의미
      • 일반적으로 함수 종속은 완전 함수 종속을 의미함
    2. 부분 함수 종속 (Partial Functional Dependency)
      • 릴레이션에서 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미
  4. 결정자와 종속자가 같거나, 결정자가 종속자를 포함하는 것처럼 당연한 함수 종속 관계는 고려하지 않음

 

정규화를 통한 릴레이션 : 무손실 분해

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

정규형 (Normal Form)

  • 릴레이션이 정규화된 정도
  • 각 정규형마다 제약조건이 존재 (릴레이션 특성을 고려 적합한 정규형 선택)
  • 모든 릴레이션이5 정규형에 속해야만 바람직한 것은 아님
    • 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해짐
  • 일반적으로 제 3 정규형이나 보이스/코드 정규형에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상을 해결하는 경우가 많음.
    • 3정규형까지 도달하면 이상현상이 현저히 적게 발생하기 때문에 실무적으로 보통 3정규화까지 함. (정규화가 과도하게 되어있으면 제약조건에 대한 처리와 처리속도에 영향을 미칠 수 있다.)

 

1. 제 1 정규형 (1NF)

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

2. 제 2정규형 (2NF)

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

3. 제 3정규형 (3NF)

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

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

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

5. 제 4정규형 (4NF)

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

6. 제 5정규형 (5NF)

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

 

정규화 VS. 반정규화

(정규화된 릴레이션( 빈번한 조인이 일어남) 검색보다 반정규화 릴레이션 검색 속도가 더 빠르다.)

'Database' 카테고리의 다른 글

[Database] SQL VIEW  (0) 2020.04.06
[Database] Sub Query / UNION  (0) 2020.04.01
[Database] 데이터베이스 설계  (0) 2020.03.25
[Database] join  (0) 2020.03.25

+ Recent posts