데이터베이스 이론과 실습 14주차
정규화(Normalization)
원래의 릴레이션을 분해하는 것
잘못된 데이터베이스 설계시, 데이터 중복이 발생
=> 갱신 이상 발생
갱신 이상
종류
- 삽입 이상
- 수정 이상
- 삭제 이상
예시
상품 테이블
| 상품번호 | 상품이름 | 상품위치 | 제조사 | 분류 | 구매한 사용자 ID | 구매한 사용자 이름 |
|---|---|---|---|---|---|---|
| A-1234 | OO RC카 | 3F-A12 | A | 완구 | DWA-32SV2 | 김OO |
| C-2825 | AA 필통 | 3F-F32 | B | 문구 | AWF-34AC2 | 박XX |
| G-4326 | XX 로봇 | 3F-A54 | A | 완구 | DWA-32SV2 | 김OO |
| Y-3253 | OX TV | 2F-G43 | C | 전자기기 | RSD-64BR7 | 유OX |
- 이 테이블은 ‘상품번호’와 ‘구매한 사용자 ID’를 Primary Key로 갖는다.
- 이 테이블의 문제점은 사용자의 정보와 상품의 값을 전부 가지는 것이다.
삽입 이상
이 테이블에서 사용자의 이름을 추가할때, Primary Key인 사용자 ID와 사용자 이름만 추가는 불가능하다
- 테이블 내에 Primary Key가 2개가 존재하기 때문에 ‘상품이름’과 같이 필요없는 값도 추가가 필요
이와 같이 특정 데이터를 삽입할때 불필요한 데이터까지 추가되는 것을 삽입 이상이라고 함
수정 이상
- 테이블 내에서 특정 튜플 내에서 김OO이라는 사용자의 이름을 변경하는 경우, 다른 튜플에서도 해당 사용자의 이름을 변경해 주어야 한다
- 이때, 모든 튜플에서 데이터를 수정하지 않고 하나의 튜플에서만 데이터를 수정하는 경우 발생하는 문제를 수정 이상이라고 한다.
삭제 이상
- 이 테이블 내에서 특정 상품이 품절 등의 이유로 삭제하게 되었을 경우, 이 테이블 내에서 구매자의 ID와 이름까지 삭제가 된다
- 사용자 정보는 필요한 정보이지만 같은 튜플 내부에 존재하므로 같이 삭제가 된다
- 이와 같이 특정 튜플을 제거시 삭제를 원하지 않는 데이터까지 함께 삭제되는 것을 삭제 이상이라고 함
함수의 종속성
- 정규화 이론의 핵심
A → B //A는 B를 결정한다(B는 A에 함수적으로 종속됨)
완전함수 종속
- (A1, A2) → B //A1과 A2가 모두 합쳐 B를 결정함
부분함수 종속
- A1 → B //가능하면 사용하지 않기
이행적 (함수)종속성
| A | B | C | | —- | —- | —- |
이 테이블에서 Primary Key는 A이다.
A → B & B → C
//Primary Key A는 B와 C를 결정한다
//A는 B를 거쳐서 C를 결정함. 이를 ‘이행적으로 종속한다’ 라고 함
A → C
위쪽에서는
(학번, 과목번호) → 학점
학과 이름
학과 전화번호
이므로 완전함수 종속을 충족함
하지만 아래쪽에서는,
학번 → 학번이름
학과 전화번호
학과 이름 → 학과 전화번호
를 충족하므로, 부분 함수 종속임
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
