개발조아

정규화 본문

CS/데이터베이스

정규화

개발조아 2021. 10. 20. 15:46
728x90
  • 관계형 데이터베이스에서 한 릴레이션에 여러 애트리뷰트(속성)들을 혼합하게 되면 정보가 중복 저장되고 저장 공간이 낭비 된다. 또한 중복된 데이터로 인해 이상 현상(Anomaly)도 발생한다 
  • 이상 현상
    • 불필요하게 중복된 데이터들로 인해 데이터 조작 시 발생하는 문제들
    • 삽입 이상
      • 데이터 삽입시 이상한 데이터가 삽입된다던가, 데이터가 없어서 삽입이 안되는 문제
    • 갱신 이상
      • 갱신 시 중복된 데이터 모두 갱신되어야하지만 일부만 갱신되어 일관성이 유지하지 못해 발생하는 문제
    • 삭제 이상
      • 삭제 시 원하지 않는 데이터까지 모두 삭제되서 발생하는 문제
  • 정규화
    • 관계형 데이터베이스에서 중복을 최소화하기 위하여 데이터를 구조화 하는 작업
  • 정규화 단계
    • 제1 정규형 : 애트리뷰트의 도메인값은 원자값이어야하며, 모든 튜플의 값은 도메인값 중 하나여야 한다.
      • 도메인의 값을 원자값으로 쪼개서 만족
        • 취미에 (운동, 공부)가 있다면 운동, 공부를 별개로 나눈다.
    • 제2 정규형 : 제1 정규형을 만족하며, 기본키가 아닌 애트리뷰트는 기본키에 완전 함수 종속 관계여야한다.
      • 부분적 함수 종속 관계 제거하여 만족
        • 부분적 함수 종속 관계
          •  어떤 X의 값에 의해 Y의 값이 결정되지만 X의 일부에서도 결정된다면 Y는 X의 부분적 함수 종속 관계이다
          • (학번, 이름) -> 과목
            • 학번으로도 과목을 결정할 수 있음 
      • 완전 함수 종속 관계
        • 어떤 X의 값에 의해 Y의 값이 결정된다면 Y는 X의 함수적 종속 관계이다.
        • X -> Y
        • 학번으로 이름이 결정됨
    • 제3 정규형 : 제2 정규형을 만족하며, 모든 애트리뷰트가 기본키에 이행적 함수 종속이 아니어야한다
      • 이행적 함수 종속 관계 제거
      • 이행적 함수 종속
        • 어떤 X,Y,Z에 대해서 X->Y이고, Y->Z일 때 X->Z를 만족하는 관계
        • 아이디 -> 등급, 등급 -> 할인율일 때 아이디 -> 할인율 성립
    • BCNF
      • 제 3정규형을 만족하면서 모든 결정자는 후보키여야한다.
        • 함수 종속성 X->Y가 성립할 때 X가 후보키에 포함되어야한다 
        • 후보키가 아닌 결정자를 중심으로 테이블을 쪼갬
        • 학번,과목,교수,학점이 있을 때
          • 학번, (학번,과목)이 후보키라 할때
          • 과목은 교수에 의해서 결정된다.
          • 하지만 교수는 후보키가 아니므로 BCNF를 만족하지 않음
          • 과목, 교수 테이블, 학번, 학점,교수 테이블로 나눔
  • 반정규화 
    • 정규화를 수행하면 Join이 빈번하게 발생하여 데이터 조작시 성능이 떨어질 수도 있음 
    • 시스템의 성능 향상을 목적으로 정규화를 위배하여 릴레이션을 좀더 단순화하는 것
      • 데이터의 무결성 보장되지 않음

'CS > 데이터베이스' 카테고리의 다른 글

병행제어  (0) 2021.10.20
키(Key)의 개념 및 종류  (0) 2021.10.20
트랜잭션  (0) 2021.10.20
인덱스(Index)  (0) 2021.10.20
데이터베이스  (0) 2021.10.20
Comments