의미)
관계형 데이터베이스에서 데이터 중복을 최소화 하기 위해서 하는 방법
종류)
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
'데이터베이스' 카테고리의 다른 글
sqld 자격증 실기 정리 (2) | 2025.02.26 |
---|---|
select문이란? (0) | 2025.01.08 |
무결성이란? (0) | 2024.12.31 |
키(key)란? (0) | 2024.12.31 |
인덱스란? (0) | 2024.12.31 |
댓글