Next-Squad/Interview-Question

[Database] 2. 정규화의 종류에 대해서 설명해보세요

nathan29849 opened this issue · 1 comments

2. 정규화의 종류에 대해서 설명해보세요

키워드

제 1 정규형, 제 2 정규형, 제 3 정규형, BCNF, 제 4 정규형, 제 5 정규형

정규화란?

  • 관계형 데이터베이스의 설계에서 중복을 최소화 하기위해 데이터를 구조화 하는 프로세스를 정규화라고 한다.
  • 이상현상이 안 생기는 좋은 테이블이 갖추어야 할 조건을 만족하게 하는 것이다.

정규화의 종류

정규화의 종류로는 제 1 정규형, 제 2 정규형, 제 3 정규형, BCNF, 제 4 정규형, 제 5 정규형이 있다.

제 1 정규형

  • 테이블은 반드시 하나 이상의 키를 갖고 있어야 한다.
  • 애트리뷰트의 도메인이 오직 원자 값만을 포함한다.(단일 값을 의미)
  • 즉, 기본 키가 있고, 애트리뷰트가 원자 값을 가지면, 제 1 정규형이라고 본다.

제 2 정규형

  • 제 1 정규형을 만족한다.
  • 후보 키가 아닌 애트리뷰트들이 후보 키에 대해 완전 함수적 종속인 경우여야 한다.
    • 후보 키에 대해 부분 함수적 종속이 발생하면 안된다.
    • 완전 함수적 종속 : A, B, C -> X라고 할 때(3개의 애트리뷰트가 하나의 애트리뷰트에 종속적), A, B, C 중 하나라도 제거하면 함수적 종속이 발생하지 않는 경우

제 3 정규형

  • 제 2 정규형을 만족한다.
  • 후보 키가 아닌 애트리뷰트들에서 이행종속이 발생하지 않아야 한다.
    • 이행 종속 : X->Y 이고, Y->Z이면, X->Z이다.

BCNF(Boyce/Codd Normal Form)

  • 릴레이션의 함수 종속 관계에서 모든 결정권자가 후보 키여야 한다.
  • X -> Y인 모든 X, Y에 대하여
    • (1) Y가 X의 부분집합이거나,
    • (2) X가 후보 키여야 한다.
  • 후보 키가 아닌 애트리뷰트가 다른 애트리뷰트를 함수적으로 결정하면 BCNF가 아니다.

제 4 정규형

  • 릴레이션이 BCNF를 만족하면서, 함수 종속이 아닌 다치 종속을 제거
    • 다치 종속 : 두 개의 독립된 애트리뷰트가 1:N 관계로 대응하는 것
  • 즉, 애트리뷰트의 값이 원자 값이 아닌 값을 여러 개 같는 릴레이션을 분해하여 애트리뷰트가 원자 값을 갖도록 하는 정규형
  • 예시
회원번호 이름 취미
2314 나단 축구, 수영
7212 로니 헬스, 달리기
11234 진구 굴렁쇠
회원번호 이름 취미
2314 나단 축구
2314 나단 수영
7212 로니 헬스
7212 로니 달리기
11234 진구 굴렁쇠

제 5 정규형

  • 릴레이션이 제 4 정규형을 만족하면서, 후보 키를 통하지 않는 조인 종속을 제거
    • 조인 종속 : 마치 조인한 것과 같이 릴레이션의 중복이 발생하는 것
회원번호 이름 취미
2314 나단 축구, 수영
7212 로니 헬스, 달리기
11234 진구 굴렁쇠
회원번호 이름
2314 나단
7212 로니
11234 진구
회원번호 취미
2314 축구
2314 수영
7212 헬스
7212 달리기
11234 굴렁쇠