[TIL] #16 정규화

phdljr·2023년 10월 25일
0

TIL

목록 보기
16/70

목적

  • 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것을 목표로 둠
    • 크고, 제대로 조직되지 않은 테이블들과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 것을 포함
  • 하나의 테이블에서의 데이터의 삽입, 삭제, 변경이 정의된 관계들로 인하여 데이터베이스의 나머지 부분들로 전파되게 하는 것
    • 이상 현상 제거
  • 데이터베이스 구조 확장시 재 디자인 최소화
    • 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 되는 경우가 있다.
  • 사용자에게 데이터 모델을 더욱 의미있게 함
    • 정규화된 테이블들과 정규화된 테이블들간의 관계들은 현실세계에서의 개념들과 그들간의 관계들을 반영한다.
  • 다양한 SQL 지원
    • 정규화된 테이블은 일반적인 목적의 질의에 적합하다. 이는 테이블에 대하여 세부사항이 예측되지 않은 장래의 질의를 포함한 어떠한 질의도 지원한다는 의미다.

이상 현상

  • 정규화를 거치지 않은 데이터베이스에서 발생할수 있는 현상
  • 데이터들이 불필요하게 중복되어 릴레이션 조작에 예기치 못한 문제 발샐
  • 애트리뷰트들의 종속관계를 하나의 릴레이션에 표현하기 떄문에 발생

이상 종류

  • 삽입 이상(Insertion Anomaly)
    • 데이터 삽입 시 의도와 다른 값들도 삽입됨
  • 삭제 이상(Delete Anomaly)
    • 데이터 삭제 시 의도와 다른 값들도 삭제됨
  • 갱신 이상(Update Anomaly)
    • 반복된 데이터 중에 일부를 갱신할 시 데이터의 불일치가 발생

함수 종속성

  • 관계 스키마 중에서 어느 속성군의 값이 정해지면 다른 속성군의 값이 정해지는 것
  • 함수 종속성의 종류
    • 완전 함수 종속성
    • 부분적 함수 종속성
    • 이행적 함수 종속성

결합 종속성

  • 키 자체에 다중성이 포함됐을 때 나타나는 중복을 말한다.

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

  • 열과 행에는 순서가 없다.
  • 중복되는 열이 없다.
  • 열과 행의 중복 지점에는 한 개의 값만 가진다.(원자성)
  • 모든 행은 규칙적이다.

제 2 정규형(2NF)

  • 1NF를 만족한다.
  • 모든 비기본 속성들이 후보 키에 속한 속성들 전체에 함수 종속인 경우 2FN이다.(=완전 함수 종속성)
    • 즉, 부분 함수 종속성을 제거한다.
    • 후보 키 K와 K에 속하지 않는 속성 A가 있을 때, A를 결정하기 위해 K의 일부가 아닌 K 전체를 참조해야만 하는 경우 1NF 테이블은 2NF이다.
      • K: 결정자, A: 종속자, A는 K에 함수적 종속이다.

제 3 정규형(3NF)

  • 2NF를 만족한다.
  • 테이블 내의 모든 속성이 기본 키에만 의존하며, 다른 후보 키에 의존하지 않는다.
    • 즉, 이행 함수 종속성(추이 종속)을 제거한다.
      • X, Y, Z에 대해 X→Y 이고 Y→Z 이면 X→Z 가 성립한다.
        • Z가 X에 이행적으로 함수 종속되었다고 한다.
      • [X, Y, Z] 에서 [X, Y], [Y, Z]로 분리시켜라.

Boyce-Codd 정규형(BCNF)


(BCNF 위반 테이블)


(BCNF를 만족하는 테이블)

  • 3NF를 만족한다.
  • 모든 결정자가 후보키 집합에 속한다.
    • 즉, 결정자 중 후보키가 아닌 것들은 제거한다.

제 4 정규형(4NF)

  • 다치 종속을 제거한다.

    • 다치 종속성: 하나의 릴레이션에서 속성이 1:N 관계로 대응하는 것

    • 즉, 독립된 관계가 하나의 릴레이션에 담겨있느 경우 데이터 중복이 발생한다.

    • 예시) 학생은 n개의 학과와 n개의 동아리에 속할 수 있다.

      • {이름} →→ {학과}, {이름} →→ {동아리}

      • 원기가 새로운 동아리에 가입하게 된다면, 2개의 튜플이 추가돼야 한다는 문제가 있다.
        - 해결 방법) 릴레이션을 독립된 관계끼리 무손실 분해한다.

제 5 정규형(5NF)

  • 명확하지 않은 모든 결합 종속성을 배제한다.
profile
난 Java도 좋고, 다른 것들도 좋아

0개의 댓글