ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규화
    💻 computer science/📦 database 2022. 10. 5. 01:41

    정규화 ❗


     💡 릴레이션 간의 잘못된 종속 관계로 인한 데이터베이스 이상 현상 을 해결하거나,
    저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정

    테이블간 데이터 중복을 줄이고, 중복된 데이터를 허용하지 않음으로 써

    무결성을 향상(유지)하고, DB의 저장 용량도 줄인다.

    데이터베이스 이상 현상 (Anomaly)

    • 서로 공유하는 데이터임에도 불구하고 각자의 튜플에 독립적으로 존재하기 때문에 발생
    1. 삽입 이상
      • 데이터 삽입시 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상
    2. 수정 이상
      • 데이터 수정시 중복된 데이터의 일부만 수정되어 일어나는 데이터 불일치 현상
    3. 삭제 이상
      • 데이터 삭제시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상

    정규화 원칙

    • 자료의 중복성은 감소해야 한다.
    • 독립적인 관계는 별개의 릴레이션으로 표현해야 한다.
    • 각각의 릴레이션은 독립적인 표현이 가능해야 한다.

    제 1정규화

    테이블의 컬럼이 원자 값(atomic value) 만으로 구성되도록 테이블을 분해

    • 릴레이션의 모든 도메인이 더 이상 분해되지 않는 원자 값으로만 구성
    • 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서는 안된다.

    제 2정규화

    릴레이션이 1 정규형이며 부분 함수의 종속성을 제거한 형태

    부분 함수의 종속성 제거

    • 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속

    기본키의 부분집합이 결정자가 되어서는 안된다.

    • 기본키가 복합키(키1, 키2)로 묶여있을 때, 두 키중 하나의 키만으로 다른 컬럼을 결정지을 수 있으면 안된다.

    ⚠️ 주의 점

    1. 릴레이션을 분해할 때 동등한 릴레이션으로 분해해야 한다.
    2. 정보 손실이 발생하지 않는 무손실 분해로 분해되어야 한다.

    제 3정규화

    제 2정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속(transitive FD) 을 만족하지 않는 상태

    이행적 함수 종속

    • A → B 와 B → C가 존재하면 논리적으로 A → C 가 성립
    • 이때, 집합 C가 집합 A에 이행적으로 함수 종속 되었다고 한다.

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

    제 3정규형이고, 결정자가 후보키가 아닌 함수 종속관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태

    결정자

    • 함수 종속 관계에서 특정 종속자를 결정짓는 요소
    • X → Y 일때, X는 결정자, Y는 종속자

    장점 / 단점

    장점

    • 데이터의 중복을 줄임
    • 이상 문제를 해결
    • 무결성 유지
    • 데이터 모델 단순화

    단점

    • 정규화를 할 수록 테이블이 분해된다.
      • 조회를 위해 조인이 많이 발생한다.
    • 이로 인해 성능이 저하될 수 있다 (질의에 대한 응답이 느려진다)
    • 비정규화 과정이 발생할 수 있다.

    참고 자료

    http://www.yes24.com/Product/Goods/108887922

    '💻 computer science > 📦 database' 카테고리의 다른 글

    📂 MySQL - 트랜잭션 격리 수준  (0) 2024.05.11
    인덱스  (0) 2022.10.05
    SQL / NoSQL  (1) 2022.10.05
    트랜잭션  (1) 2022.10.05
    데이터베이스 기본  (1) 2022.10.05

    댓글

Designed by Tistory.