TIL:) 정규화

⭐알게 된 점⭐

👉 정규화 (Normalization)

- 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정

- 릴레이션의 분해로 인해 JOIN 연산이 많아지는데 이때 성능 저하가 나타난다면 반정규화 진행

 

제 1 정규형 (1NF)

- 각 컬럼이 하나의 속성을 가져야 함

- 하나의 컬럼은 같은 종류나 타입의 값을 가져야 함

- 각 컬럼이 유일한 이름을 가져야 함

- 컬럼의 순서가 상관 없어야 함

제 1 정규화 적용

 

제 2 정규형 (2NF)

- 제 1 정규형 만족

- 모든 컬럼이 부분적 종속이 없어야 함

( 부분적 종속 ? 기본키 중에 특정 컬럼에만 종속되는 것 )

제 2 정규화 적용

 

제 3 정규형 (3NF)

- 제 2 정규형 만족

- 기본키를 제외한 속서들 가늬 이해 종속성이 없어야 함

( 이행 종속성 ? A->B, B->C 일 때 A->C가 성립하는 것)

제 3 정규화 적용

 

BCNF

- 제 3 정규형 만족

- 모든 결정자가 후보키 집합에 속해야 함

 

BCNF 적용

- 학생 번호와 지도교수는 다치 종속성이 발생하는데 이는 제 4정규형에서 다룸

 

제 4 정규형

- BCNF 만족

- 다치 종속이 없어야 함

     다치 종속

     1. A->B 일 때 하나의 A값에 여러 개의 B값이 존재하면 다치 종속성을 가진다고 하고 A↠B라고 표시한다

     2. 최소 3개의 칼럼이 존재한다.

     3. R(A, B, C)가 있을 때 A와 B 사이에 다치 종속성이 있을 때 B와 C가 독립적이다.

다치 종속 / 학생 번호를 토대로 값을 조회 했을 때 다치 종속의 문제점
다치 종속을 없애기 위해 4NF 적용

 

제 5 정규형

- 제 4정규형 만족

- 조인 종속이 없어야 함

- 조인 연산을 했을 때 손실이 없어야 함

- 현실의 데이터베이스는 제 5정규형을 잘 사용하지 않음

조인 종속

 

참고 : https://code-lab1.tistory.com/48


🐰 END

영차영차

 

BELATED ARTICLES

more