반응형
SMALL
정규화
- 정규화는 테이블의 속성들이 상호종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정이다.
- 정규화의 목적은 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다.
- 정규형에는 제 1정규형(1NF), 제 2정규형(2NF), 제 3정규형(3NF), BCNF, 제 4정규형(4NF), 제 5정규형(5NF)이 있으며, 순서대로 정규화의 정도가 높아진다.
정규화 과정
아래의 <주문 목록> 테이블을 가지고 정규화 과정을 살펴 보자. <주문 목록> 테이블의 기본키(PRIMARY KEY)는 제품 번호이다.
<주문 목록>
제품 번호 제품명 재고 수량 주문 번호 고객 번호 주소 주문 수량
1001 | 모니터 | 2000 | A345 D347 |
100 200 |
서울 부산 |
150 300 |
1007 | 마우스 | 9000 | A210 A345 B230 |
300 100 200 |
광주 서울 부산 |
600 400 700 |
1201 | 키보드 | 2100 | D347 | 200 | 부산 | 300 |
제 1 정규형
- 제 1정규형은 테이블 R에 속한 모든 속성의 도메인이 원자 값만으로 되어 있는 정규형이다. 즉 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형이다.
- <주문목록> 테이블에서는 하나의 제품에 대해 여러 개의 주문 관련 정보(주문번호, 고객 번호, 주소, 주문 수량)가 발생하고 있다. 따라서 <주문목록> 테이블은 제 1 정규형이 아니다.
1. 제품 테이블 (Product Table)
제품 번호 제품명 재고 수량
1001 | 모니터 | 2000 |
1007 | 마우스 | 9000 |
1201 | 키보드 | 2100 |
2. 주문 테이블 (Order Table)
주문 번호 고객 번호 주소 제품 번호 주문 수량
A345 | 100 | 서울 | 1001 | 150 |
D347 | 200 | 부산 | 1001 | 300 |
A210 | 300 | 광주 | 1007 | 600 |
A345 | 100 | 서울 | 1007 | 400 |
B230 | 200 | 부산 | 1007 | 700 |
D347 | 200 | 부산 | 1201 | 300 |
- 1차 정규화 과정으로 생성된 <제품 주문> 테이블의 기본키는 (주문 번호, 제품 번호)이고, 다음과 같은 함수적 종속이 존재한다.
- 주문번호, 제품번호→고객번호, 주소, 주문 수량
- 주문번호→고객번호, 주소
- 고객번호→주소
제 2 정규형
- 제 2 정규형은 테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다.
- <주문 목록>테이블이 <제품> 테이블과 <제품 주문> 테이블로 무손실 분해되면서 모두 제 1정규형이 되었지만 그 중 <제품 주문> 테이블에는 기본키인 (주문번호, 제품번호)에 완전 함수적 종속이 되지 않는 속성이 존재한다. 즉, 주문 수량은 기본키에 대해 완전 함수적 종속이지만 고객번호와 주소는 주문 번호에 의해서도 결정 될 수 있으므로, 기본키에 대해 완전 함수적 종식이 아니다. 따라서 <제품 주문>테이블은 제 2정규형이 아니다.
1. 주문 테이블 (Order Table)
주문 번호 고객 번호 주소 제품 번호 주문 수량
A345 | 100 | 서울 | 1001 | 150 |
D347 | 200 | 부산 | 1001 | 300 |
A210 | 300 | 광주 | 1007 | 600 |
A345 | 100 | 서울 | 1007 | 400 |
B230 | 200 | 부산 | 1007 | 700 |
D347 | 200 | 부산 | 1201 | 300 |
2. 주문 테이블 (Order Table)
주문 번호를 기본키로 하고, 고객 번호와 주소를 저장합니다. 고객 번호와 주소는 주문 번호에 대해 종속됩니다.
주문 번호 고객 번호 주소
A345 | 100 | 서울 |
D347 | 200 | 부산 |
A210 | 300 | 광주 |
B230 | 200 | 부산 |
3. 주문 목록 테이블 (Order List Table)
주문 번호와 제품 번호를 복합키로 하고, 각 주문에서 주문된 제품과 그 수량을 저장합니다. 주문 수량은 (주문 번호, 제품 번호)에 완전 함수적 종속입니다.
주문 번호 제품 번호 주문 수량
A345 | 1001 | 150 |
D347 | 1001 | 300 |
A210 | 1007 | 600 |
A345 | 1007 | 400 |
B230 | 1007 | 700 |
D347 | 1201 | 300 |
- 제 2 정규화 과정을 거쳐 생성된 <주문> 테이블의 기본키는 주문 번호이다. 그리고<주문> 테이블에는 아직도 다음과 같은 함수적 종속들이 존재한다.
- 주문번호→고객번호, 주소
- 고객번호→주소
제 3 정규형
- 제 3 정규형은 테이블 R이 제 2 정규형이고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형이다.
- <제품 주문> 테이블이 <주문 목록> 테이블과 <주문> 테이블로 무손실 분해되면서 모두 제 2정규형이 되었다. 그러나 <주문> 테이블에서 고객번화 주문번호에 함수적 종속이고, 주소가 고객 번호에 함수적 종속이므로 주소는 기본키인 주문 번호에 대해 이행적 함수적 종속을 만족한다. 즉 주문 번호 → 고객 번호이고, 고객 번호 → 주소 이므로 주문번호 → 주소는 이행적 함수적 종속이 된다. 따라서 <주문> 테이블은 제 3 정규형이아니다.
1. 주문 테이블 (Original Order Table)
주문 번호 고객 번호 주소
A345 | 100 | 서울 |
D347 | 200 | 부산 |
A210 | 300 | 광주 |
B230 | 200 | 부산 |
2. 주문 테이블 (Order Table)
주문 번호 고객 번호
A345 | 100 |
D347 | 200 |
A210 | 300 |
B230 | 200 |
3. 고객 테이블 (Customer Table)
고객 번호 주소
100 | 서울 |
200 | 부산 |
300 | 광주 |
BCNF
- BCNF는 테이블 R에서 모든 결정자가 후보키인 정규형이다.
- 일반적으로 제 3 정규형에 후보키가 여러 개 존재하고, 이러한 후보키들이 서로 중첩되어 나타나는 경우에 적용 가능하다.
- 아래의 <수강_교수> 테이블 (제 3정규형)은 함수적 종속{(학번, 과목명)→담당교수,(학번, 담당교수)→ 과목명, 담당교수→ 과목명}을 만족하고 있다. <수강_교수> 테이블의 후보키는 (학번, 과목명)과 (학번, 담당 교수)이다.
<수강_교수>
학번 과목명 담당교수
211746 | 데이터베이스 | 홍길동 |
211747 | 네트워크 | 유관순 |
211748 | 인공지능 | 윤봉길 |
211749 | 데이터베이스 | 홍실동 |
211747 | 데이터베이스 | 이순신 |
211749 | 네트워크 | 유관순 |
- <수강_교수> 테이블에서 결정자 중 후보키가 아닌 속성이 존재한다. 즉 함수적 종속 담당교수→과목명이 존재하는데, 담당 교수가 <수강_교수> 테이블에서 후보키가 아니기 떄문에 <수강_교수> 테이블은 BCNF가 아니다.
1. 수강 테이블 (Enrollment Table)
이 테이블은 학생이 어떤 과목을 수강했는지에 대한 정보를 기록합니다. 여기서 (학번, 과목명)은 후보키가 됩니다.
학번 담당교수
211746 | 홍길동 |
211747 | 유관순 |
211748 | 윤봉길 |
211749 | 홍실동 |
211747 | 이순신 |
211749 | 유관순 |
2. 교수 테이블 (Professor Table)
이 테이블은 각 교수님이 어떤 과목을 담당하고 있는지에 대한 정보를 기록합니다. 여기서 담당교수가 후보키가 됩니다.
담당교수 과목명
홍길동 | 데이터베이스 |
윤봉길 | 인공지능 |
이순신 | 데이터베이스 |
유관순 | 네트워크 |
제 4 정규형
- 제 4 정규형은 테이블 R에 다중 값 종속 A→→ B가 존재할 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형이다.
- 다중 값 종속(다치 종속): A,B,C 3개의 속성을 가진 테이블 R에서 어던 복합 속성(A,C)에 대응하는 B값의 집합이 A 값에만 종속되고 C값에는 무관하면, B는 A에 다중 값 종속이라 하고, A →→B로 표기함
제 5 정규형
- 제 5 정규형은 테이블 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형이다.
- 조인 종속: 어떤 테이블 R의 속성에 대한 부분 집합 X,Y,…Z가 있다고 하자. 이때 만일 테이블 R이 자신의 프로젝션 X,Y,…Z를 모두 조인한 결과와 동일한 경우 테이블 R은 조인 종속 JD를 만족한다고 함
정규화 과정 정리
- 비정규 릴레이선 →(도메인 원자값) →1NF(부분적 함수 종속 제거)→2NF(이행적 함수 종속 제거)→3NF(결정자이면서 후보키가 아닌 것 제거)→ BCNF(다치 종속 제거)→ 4NF(조인 종속성 이용)→5NF
- 도보이결다조->두부이걸다줘?
반정규화
- 반정규화는 시스템의 성능을 향상하고 개발 및 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위이다.
- 반정규화를 수행하면 시스템의 성능이 향상되고 관리의 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하될 수 있다.
- 과도한 반정규화는 오히려 성능을 저하시킬수 있다.
반응형
LIST
'정보처리기사 > 데이터 입출력 구현' 카테고리의 다른 글
접근 통제 방식 (0) | 2024.10.14 |
---|---|
시스템 카탈로그 및 복구 방법 (0) | 2024.10.14 |
관계 (5) | 2024.10.13 |
데이터베이스 키(Key)와 제약조건 (1) | 2024.10.13 |
릴레이션 (1) | 2024.10.13 |