DataBase/SQL

[SQLD] 개념 정리 #03 정규화 과정

반응형

정규화 과정

1NF (제 1 정규형)

  • 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있는 정규형
  • 릴레이션의 모든 속성값이 원자값으로만 되어 있는 정규형
  • 릴레이션의 모든 속성이 단순 영역에서 정의됨

2NF (제 2 정규형)

  • 릴레이션 R이 1NF이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형

3NF (제 3 정규형)

  • 릴레이션 R이 2NF이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형
  • 무손실 조인 또는 종속성 보존을 저해하지 않고도 항상 3NF설계를 얻을 수 있다

BCNF(Boyce-Codd 정규형)

  • 릴레이션 R에서 결정자가 모두 후보키인 정규형
  • 3NF에서 후보키가 여러 개 존재하고 서로 중첩되는 경우 적용하는, 강한 제3정규형이라고도 함
  • 모든 BCNF가 종속성을 보존하는 것은 아님
  • BCNF의 제약 조건:
    • 키가 아닌 모든 속성은 각 키에 대하여 완전 종속해야 한다
    • 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대하여 완전 종속해야 한다
    • 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다

4NF (제 4 정규형)

  • 릴레이션 R에 다치 종속 A->B가 성립하는 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형

5NF (제 5 정규형)

  • 릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형

함수적 종속(Functional Dependency): 데이터들이 어떤 기준값에 의해 종속되는 것을 의미. 예를 들어 <수강>릴레이션이 (학번, 이름, 과목명)으로 구성되어 있을 때 '학번'이 결정되면 '과목명'에 상관없이 '학번'에는 항상 같은 '이름'이 대응되는 경우. '학번'에 따라 '이름'이 결정될 때 '이름'을 '학번'에 함수 종속적이라고 한다.

완전 함수적 종속: 어떤 테이블 R에서 속성 A가 다른 속성 집합 B전체에 대해 함수적 종속이지만 속성 집합 B의 어떠한 진부분집합 C에는 함수적 종속이 아닐 때, 속성 A는 속성 집합 B에 완전 함수적 종속이라고 한다.

이행적 종속(Transitive Dependency): A->B이고 B->C일 때 A->C를 만족하는 관계

결정자(Determinant): 속성 간의 종속성을 규명할 때 기준이 되는 값

종속자(Dependent): 결정자의 값에 의해 정해지는 값

다치 종속(Multi Valued Dependency): A, B, C 3개의 속성을 가진 릴레이션 R에서 어떤 복합 속성(A, C)에 대응하는 B의 값의 집합이 A값에만 종속되고 C값에는 무관하면, B는 A에 다치 종속이라 함

정규화 과정 부분은 글로만 봐서는 도무지 무슨 소린지 이해하기가 어렵기 때문에 테이블 예시를 찾아가며 이해하려고 노력해야 한다. 

728x90
반응형