정규화

데이터베이스를 잘못 설계하면 여러 부작용이 생기고 이것을 이상현상이라고 합니다. 이런 이상 현상을 제거하고 데이터베이스를 올바르게 설계하는 것을 정규화라고 합니다.

이상현상의 종류

1. 삽입 이상

데이터를 삽입할 때 불필요한 데이터를 삽입해야 하는 무제

2. 갱신 이상

데이터를 갱신할 때 중복된 튜플도 갱신해야 해서 여러 튜플을 갱신하는 문제

3. 삭제 이상

튜플 삭제시 삭제되지 말아야 하는 데이터도 삭제되는 문제

함수적 종속

속성중 x 에 대해 y의 값이 단 하나만 존재하면 x는 y를 함수적으로 결정한다, 또는 y는 x에 함수적으로 종속적이다. 라고 할 수 있다.
x는 결정자, y는 종속자라고 부른다.

완전 함수 종속

기본키를 제외한 나머지 속성들이 기본키 전체에 종속되는 것을 의미한다.

부분 함수 종속

기본키 전체(복합키)가 아닌 기본키의 일부 속성에 종속적인 상태를 의미한다.

정규형이란?

함수 종속을 이용해 릴레이션과 연관된 속성들로만 구성되도록 분해해서, 이상현상이 발생하지 않도록 릴레이션을 만드는 것을 의미한다.

정규화 종류

1. 제 1정규형

모든 속성은 원자값을 가져야 한다. 즉, 하나의 속성에 하나의 데이터만 들어가야한다.

2. 제 2정규형

제 1정규형을 만족하고, 기본키를 제외한 모든 속성은 기본키에 대해 완전함수 종속을 만족해야 한다.
즉, 부분함수 종속이 아닌 완전함수 종속을 의미

3. 제 3정규형

제 2정규형을 만족하고 이행적 함수 종속을 제거해야 한다.
이행적 함수 종속은 A->B, B->C이면 A->C인 관계를 의미한다. 이때 이상현상이 발생하기에 이행적 종속 관계를 릴레이션을 분해해서 제거해야한다.

4. BCNF(보이스/코드 정규형)

제 3정규형을 만족하고 후보키 외의 결정자는 제거해야한다. 즉, 모든 결정자는 후보키여야 하지 다른 속성이 특정 속성의 결정자가 되면 안된다.

5. 제 4정규형

BCNF를 만족하고 다치 종속을 제거해야한다.

6. 제 5정규형

제 4정규형을 만족하고, 후보키를 통하지 않는 조인 종속을 제거해야한다.

'DB' 카테고리의 다른 글

Elasticsearch 테스트  (0) 2024.01.10
Elasticsearch Spring Boot에 적용해보기  (1) 2024.01.10
Elasticsearch 란?  (1) 2024.01.10
[MySQL] SELECT 문  (0) 2024.01.05
[MySQL] 계정 생성 및 권한 부여  (0) 2024.01.05