DB 정규화 정리

김민재·2024년 10월 7일
0
post-custom-banner

DB 정규화란?

관계형 데이터베이스의 설계에서 데이터의 중복을 줄이고 데이터 무결성을 개선하기 위해 데이터를 정규형에 맞도록 구조화하는 프로세스다.

정규화의 목적

데이터 베이스에서 불필요한 데이터를 삭제하고 갱신/삽입/삭제시에 발생할 수 있는 각종 이상 현상들을 방지하기 위함이다.

정규화 종류

1. 1NF

각 row 마다 컬럼의 값이 하나만 있어야 한다.

before

after

이렇게 Subject의 1행에 값이 2개가 있어선 안된다!

2. 2NF

기본키 중에 특정 컬럼에만 종속된 컬럼(부분적 종속)이 없어야한다.

1NF의 테이블에서 보면 Student와 Subject가 기본키가 되지만 이중에서 하나의 값만 알더라도 Age의 값을 알 수 있게 된다.
그렇기에 이를 분리 한다.

3. 3NF

기본키를 제외한 속성들 간의 이행적 함수 종속(다른 값에 종속되어 있는 것)이 없게 만드는 것이다.

이렇게 Account_No로 Bank를 조회할 수 있는 문장에서 분리함으로써 이행적 함수 종속을 없애는 것이다.

3번외. BCNF

BCNF는 3NF가 끝난 후 이행적 함수 종속이 없어진 테이블에서 모든 결정자가 후보키 집합에 속하게 만드는 것이다.

이 테이블에서 교수를 안다면 해당하는 과목을 알 수 있게 된다.
이것은 교수가 정해지게된다면 후보키인 과목 역시 결정된다는 것이다.

그렇기에 이를 해제해주어야만 한다.

여기서 중요한 점은 결정권자와 후보키를 묶어서 하나의 테이블을 구성해야 한다는 점!

profile
ㅇㅇ
post-custom-banner

0개의 댓글