티스토리 뷰

DataBase System

정규화

김남김 2022. 8. 22. 22:18

이상현상

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

  • 삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
    • 삽입이상이 발생하는 경우

 

  • 갱신 이상 : 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
    • 갱신이상이 발생하는 경우

 

  • 삭제 이상 : 투플을 삭제하면 꼭 필요한 데이터까지 함꼐 삭제되는 데이터 손실의 문제
    • 삭제이상이 발생하는 경우

 




정규화

: 이상현상을 제거하면서 데이터베이스를 올바르게 설계해 나가는 과정

: 이상 현상이 발생하지 않고 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해(decomposition)하는 과정

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

: 정규화를 통해 릴레이션은 무손실 분해(nonloss decomposition)되어야 함

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

 

1에서 5로 이동할때마다 정규형이 제약조건이 엄격해진다

 


 

 

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

  • 제 1정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있음
  • 릴레이션의 모든 속성이 더는 분해되지 않는 원자 값(atomic value)만 가지면 제 1 정규형을 만족함

만약 apple 고객의 등급이 vip로 승급했지만 이벤트 번호 E001, E005번만 vip로 바뀌거나 orange 고객이 이벤트신청을 취소해서 데이터를 지우게 되면 orange고객의 등급과 할인율, 즉 필요한 데이터까지 삭제하게 된다

 

  • 이상 현상 발생이유
    • 기본키인 {고객아이디, 이벤트번호}에 완전 함수 종속되지 못하고 일부분인 고객아이디에 종속되는 등급과 할인율 속성이 존재하기 때문
  • 문제 해결방법
    • 부분 함수 종속이 제거되도록 이벤트 참여 릴레이션을 분해 → 분해된 릴레이션은 제 2정규형에 속하게 됨

 


 

 

제 2정규형(2NF, Second Normal Form)

  • 이행적 함수 종속이 존재하기 때문에 다음과 같은 이상 현상이 발생함
  • 릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형을 만족함

 

  • 문제 해결 방법
    • 이행적 함수 종속이 제거되도록 고객 릴레이션을 분해 → 부내된 릴레이션은 제 3 정규형에 속하게 됨

 


 

 

제 3정규형(3NF, Third normal Form)

  • 릴레이션이 제 2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않으면 제 3 정규형을 만족함

 


 

함수의 종속성(FD, Functional Dependency)

: 속성들 간의 관련성

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

  • 함수 종속
    • “X가 Y를 함수적으로 결정한다”
      • 릴레이션 내의 모든 투플을 대상으로 하나의 X값에 대한 Y값이 항상 하나임
      • X와 Y는 하나의 릴레이션을 구성하는 속성들의 부분집합
      • “Y가 X에 함수적으로 종속되어 있다”와 같은 읨
      • X → Y로 표현(X는 결정자, Y는 종속자)
    • 판단 시 유의사항
      • 속성자체의 특성과 의미를 기반으로 함수 종속성을 판단해야함
        • 속성값은 계속 변할 수 있으므로 현재 릴레이션에 포함된 속성값만으로 판단하면 안됨
      • 일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결정함
      • 기본키나 후보키가 아니어도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있음
    • 완전 함수 종속(FFD, Full Functional Dependency)
      • 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X의 전체가 아닌 일부분에는 종속되지 않음을 의미
      • 일반적으로 함ㅁ수 종속은 완전 함수 종속을 의미함
      • ex) 당첨여부는 (고객아이디, 이벤트번호)에 완전 함수 종속됨
    • 부분 함수 종속
      • 릴레이션에서 속성집합 Y가 속성집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미
      • ex) 고객이름은 (고객아이디, 이벤트번호)에 부분 함수 종속됨
    • 이행적 함수 종속(transitive FD)
      • 릴레이션을 구성하는 세 개의 속성 집합 X,Y,Z에 대해 함수 종속 관계 X→ Y와 Y→ Z 가 존재하면 논리적으로 X → Z가 성립되는데, 이것을 Z가 X에 이행적으로 함수 종속되었다고 함

 

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

 

 

참고 강의) http://www.kocw.net/home/cview.do?cid=9c591659f017851e

 

데이터베이스의 원리와 응용

본 강의에서는 데이터베이스 입문자들에게 꼭 필요한 데이터베이스 기초 이론, 데이터 모델과 연산, SQL, 데이터베이스 설계에 대해 공부하고자 한다.

www.kocw.net

 

'DataBase System' 카테고리의 다른 글

SQL 정의(Structured Query Langauge)  (0) 2022.08.22
관계 데이터 연산  (0) 2022.08.22
데이터 모델링  (0) 2022.08.22
관계 데이터 모델: 실습  (0) 2022.08.22
관계 데이터 모델링  (0) 2022.08.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함