본문 바로가기
데이터베이스

정규화란? 정규화종류(1NF, 2NF, 3NF, BCNF, 4NF, 5NF)

by 정구지개발자 2025. 1. 2.
728x90

의미)

관계형 데이터베이스에서 데이터 중복을 최소화 하기 위해서 하는 방법 

 

종류)

1NF(제1정규화): 도메인 원자값

2NF (제2정규화) : 부분적 함수 종속 제거

3NF (제3정규화) : 이행적 함수 종속 제거

BCNF () : 결정자이면서 후보키가 아닌 것 제거

4NF (제4정규화) : 다치 종속 제거

5NF (제5정규화) : 조인 종속성 이용

 

종류 설명)

1NF : 도메인 원자값

도메인: 하나의 속성이 가질 수 있는 모든 값  ex) 성별 이라는 속성이 있다면 여기서 도메인은 여자, 남자 를 의미한다. 

원자값: 속성값이 더이상 논리적으로 분해될 수 없는 값을 의미

학번 이름 이메일 수강과목
2025254555 아이유 iou@naver.com 컴퓨터공학, 알고리즘
2025454545 chu@naver.com 알고리즘

 

위의 테이블에서 수강과목 속성에서 컴퓨터공학, 알고리즘 이렇게 두개의 값이 들어가 있다 이렇게 원자값이 아니라 분해 될수 있는 두개의 값이  들어가 있기 떄문에 1NF 정규화를 위해서는   다음과 같은 테이블로 고쳐 준다.

학번 이름  이메일 수강과목
2025254555 아이유  iou@naver.com 컴퓨터공학
2025254555 아이유 iou@naver.com 알고리즘
2025454545 chu@naver.com 알고리즘

 

2NF : 부분적 함수 종속 제거(1NF를 만족한다는 전제)

1. 1NF 만족

2. 기본키의 부분집합이 결정자가 되어선 안된다.

무슨소리인가 싶다 다음의 테이블을 보자

 

이름 수강과목 이메일 강의실
아이유 컴퓨터공학 iou@naver.com 101호
알고리즘 chu@naver.com 202호
공유 네트워크 0you@gmail.com 303호
아이유 네트워크 iou@naver.com 303호

위의 테이블을 보면 primary key가 따로 없기 때문에 이름과 수강과목인 두개의 속성을 합쳐서 복합키로 선정한다.

이떄 강의실이라는 속성은 수강과목에 따라서만 결정된다. 따라서 기본키인 즉 이름과 수강과목의 부분집합인 수강과목이 강의실을 결정하는 결정자이므로 이걸 제거해줘야한다.

 

이름 수강과목 이메일
아이유 컴퓨터공학 iou@naver.com
알고리즘 chu@naver.com
공유 네트워크 0you@gmail.com
아이유 네트워크 iou@naver.com

 

수강과목 강의실
컴퓨터공학 101호
알고리즘 202호
네트워크 303호

이렇게 테이블을 분리해서 2NF를 만족한다.

 

 

3NF : 이행적 함수 종속 제거

1. 2NF 만족

2. 이행적 함수 종속 : a가  b에 종속 , b가 c에 종속이 성립할떄 a가 c 에 종속된다라는걸  의미한다 수학적인 예시를 든다면 고등학교 때 배운 삼단 논법이 이것을 의미한다. a = b , b =c 이면 a = c 이다

학번 이름 이메일 수강과목 과목교수
123456 아이유 iou@naver.com 컴퓨터공학 홍길동
1111111 chu@naver.com 알고리즘 영희
2222222 공유 0you@gmail.com 네트워크 철수

 

위의 테이블에서 primary key 를 학번!! 이라고 한다면 이때 과목교수는 수강과목에 종속된다 . 따라서 위의 테이블에서는 a: 과목교수 b: 수강과목 c: 학번 이라고 한다면 a가 b에 종속된다는 말은 과목교수가 수강과목에 종속이 된다라는 의미

b가 c에 종속된다는 말은 수강과목이 학번인 primary key에 종속된다는 의미 이때 a는 c에 종속된다는 말은 과목교수는 학번에 종속된다는 의미이다. 따라서 이러한 이행적 함수 종속을 제거 하기 위해서는 밑에 테이블처럼 2개의 테이블로 바꿔준다. 

학번 이름  이메일 수강과목
123456 아이유 iou@naver.com 컴퓨터공학
1111111 chu@naver.com 알고리즘
2222222 공유 0you@gmail.com 네트워크

 

수강과목 과목교수
컴퓨터공학 홍길동
알고리즘 영희
네트워크 철수

 

이렇게 두개의 테이블로 나눠서 부분적 함수종속을 제거한 제3정규화가 만족되었다.

 

BCNF

 

 

 

728x90

'데이터베이스' 카테고리의 다른 글

sqld 자격증 실기 정리  (2) 2025.02.26
select문이란?  (0) 2025.01.08
무결성이란?  (0) 2024.12.31
키(key)란?  (0) 2024.12.31
인덱스란?  (0) 2024.12.31

댓글