정규화(normalization)

Lys·2023년 11월 28일
0

데이터베이스

목록 보기
9/18

정규화(normalization)

이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정으로 이상이 있는 관계를 재구성하여 잘 조직된 관계를 생성하는 것을 목적으로한다.
즉 테이블간에 중복된 데이터를 허용하지 않음으로써 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며, DB 저장 용량도 줄일 수 있다.

이상현상이란?

테이블을 설계할 때 잘못 설계하여 데이터를 삽입,삭제,수정할 때 논리적으로 생기는 오류를 말한다.

정규화 장점

  • 데이터베이스 변경 시 이상현상을 제거할 수 있다.
  • 정규화 된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시 그 구조를 변경하지 않아도 되고, 일부만 변경해도 된다.
  • 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만 미쳐 응용 프로그램의 생명이 연장된다.

정규화 단점

  • 릴레이션 분해로 인한 릴레이션 간의 JOIN 연산이 많아진다.
  • JOIN 연산이 많이 발생하여 성능저하가 나타나면 반정규화를 적용할 수 있다.
    • 반정규화란?
      • 성능향상을 위해 정규화된 데이터 모델에서 중복,통합,분리 등을 수행하는 모든 과정을 의미한다. 반정규화를 적용하면 데이터의 무결성이 깨질 수 있는 위험이 있다.
  • 데이터를 처리할 때 속도가 느려질 수 있다.

정규화 과정

정규화 종류

  • 제1정규화 (First Normal Form)
    • 테이블의 컬럼이 원자값((Atomic value,하나의 값)을 갖도록 테이블을 분해하는 것을 말한다.
    • 각 컬럼이 하나의 속성만을 가져야 하며, 하나의 컬럼은 같은 종류나 타입의 값을 가져야 된다.
    • 각 컬럼은 유일한(unique) 이름을 가져야 된다.

      위 테이블에서 추신수와 박세리는 여러 개의 취미를 가지고 있기 때문에 제 1정규화를 만족하지 못하고 있다.

      제 1정규화를 진행 한 후 테이블

  • 제2정규화(Second Normal Form)
    • 제1정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것을 말한다.
      - 완전 함수 종속이란
      : 기본키의 부분집합이 결정자가 되어서는 안 된다는 것을 의미한다.

      학번을 기본키로 하여 이름,소속학과,학과장이 종속된다.
      하지만 학과장은 소속학과 컬럼만으로 종속 되기 때문에 부분적인 종속관계가 존재하게 되므로 아래와 같이 테이블을 분해한다.


  • 제3정규화 (Third Normal Form)
    • 제2정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것을 말한다.
    • 이행적 종속이란?
      : A -> B,B ->C가 성립할 때 A -> C가 성립하는 것을 의미한다.

      위 테이블에서 ID -> 등급, 등급-> 할인율, ID-> 할인율을 만족해 이행적 종속이 존재하기 때문에 아래와 같이 테이블 분리가 필요하다.


  • BCNF (Boyce-Codd Normal Form)
    • BCNF는 제 3정규화를 강화한 버전으로 제3정규화를 만족해야 하며,
      모든 결정자가 후보키 집합에 속해야 된다.

      위 테이블에서
    • 한 학생은 동일 과목에 대해 하나의 교수에게만 수강이 가능하다.
    • 각 교수는 하나의 과목만 담당할 수 있다.
    • 한 과목은 여러 교수가 담당 가능하다 라는 제약사항이 있을 때
      이를 분석하면
    • (학과+과목)은 교수를 결정 한다.
    • 교수는 과목을 결정 한다.
      즉 교수는 결정자인데 교수는 학번을 결정 지을 수 없기에 후보키가 아니다.
      그렇기 때문에 아래 테이블 처럼 분해할 수 있다.

🙇‍ 참고 사이트 🙇‍

https://velog.io/@rlrhs11/DB%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EC%9D%98-%EC%A0%95%EA%B7%9C%ED%99%94%EB%9E%80
https://superohinsung.tistory.com/111
https://hstory0208.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%A0%95%EA%B7%9C%ED%99%94Normalization%EB%9E%80-%EC%98%88%EC%8B%9C%EB%A5%BC-%ED%86%B5%ED%95%B4-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90

0개의 댓글

관련 채용 정보