ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규화
    CS 지식/데이터베이스 2021. 1. 14. 15:23
    반응형

    정규화

    • 목적
      • 불필요한 데이터 제거하고 데이터를 논리적으로 저장하기 위해서
      • 이상 현상
        • 삽입 이상
          • 원하지 않은 자료 삽입 or 삽입이 안되는 문제점(데이터 부족)
        • 삭제 이상
          • 하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제
        • 수정 이상
          • 정확하지 않거나 일부의 튜플만 갱신 ~> 정보가 모호 or 일관성 깨짐
      • 위의 이상 현상을 해결하기 위해 릴레이션의 애트리뷰트를 나눠 작은 릴레이션으로 분해하는 작업
    • 1정규화
      • 모든 속성이 원자 값을 가져야 함(더 이상 작은 단위로 쪼개지지 않는 값)
    • 2정규화
      • 1정규형을 만족하면서, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속이 돼야함
      • 문제점
        • 이행적 함수 종속이 존재함
        • 삽입이상
          • 새로운 엔티티가 생길 때, 종속되는 기본 키값이 없으면 NULL이 되므로 삽입 불가
        • 갱신이상
          • 같은 값을 가지는 튜플들에 대해 모두 변경해주지 않으면 데이터 불일치가 생김
        • 삭제이상
          • 기본키 값을 삭제하는 경우, 함께 가지고 있던 정보들이 사라짐
        • 여전히 이상현상 존재
    • 3정규화
      • 2정규형을 만족하면서, 기본키가 아닌 모든 속성이 기본키에 이행적 함수종속이 되지 않아야함
      • X->Y이고 Y->Z면 X->Z가 성립 => Z가 X에 이행적으로 함수 종속되었다고 함
      • 문제점
        • 후보키를 여러개 가지고 있는 릴레이션에서는 함수 종속 문제 발생
    • BCNF
      • 릴레이션 R에 대해서 함수 종속성 X->Y가 성립할 때, 모든 결정자 X가 후보키면 BCNF 정규형이됨
      • 여러 후보 키가 존재하는 릴레이션에 해당하는 정규화 내용
      • 3정규화 + 식별자로 쓰이는 속성이 일반 속성에 종속되지 않아야함
    • 장점
      • 이상 현상 제거하여 문제점을 해결할 수 있음
      • DB 구조 확장 -디자인
        • 최소화 정규화된 DB 구조에서는 새로운 데이터 추가로 인한 확장 시, 구조를 변경하지 않아도 되거나 일부만 변경해도 됨
        • DB와 연동된 응용 프로그램에 최소한의 영향만 미치며 응용프로그램의 생명 연장
      • 사용자에게 데이터 모델을 더욱 의미있게 제공
        • 정규화된 테이블들간의 관계들은 현실 세계에서의 개념들과 관계들을 반영한다.
    • 단점
      • 릴레이션 분해로 인해 릴레이션 간의 JOIN 연산이 많아짐
        • 응답 시간 지연
          • 과도한 JOIN이 일어난다면 속도 저하가 일어나지만, 데이블 데이터 용량의 최소화로 속도가 빨라지기는 한다.
    • 역정규화
      • 자주 사용되는 테이블에 액세스하는 프로세스의 수가 가장 많고, 항상 일정한 범위만을 조회하는 경우
      • 과도한 JOIN이 일어나는 경우
      • 테이블에 대량 데이터가 있고 대량의 범위를 자주 처리하는 경우, 성능 상 이슈가 있을 경우
      • 주의할 점
        • 과도한 역정규화는 데이터 무결성을 깰 수 있음
        • 데이터 입력 / 수정 / 삭제의 질의문에 대한 응답 시간이 지연될 수 있음
    반응형

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

    NoSQL  (0) 2021.01.14
    트랜잭션(Transaction)  (0) 2021.01.14
    인덱스(Index)  (0) 2021.01.14
    데이터 베이스  (0) 2021.01.14
    스키마 3계층 ( 외부 스키마, 개념 스키마, 내부 스키마)  (0) 2020.08.17

    댓글

Designed by Tistory.