Programming/Database
데이터 모델링 :: 6. 제 3 정규화
WANJIN
2017. 4. 26. 16:34
반응형
5. 제 3 정규화
어떤 컬럼이 PK가 아닌 다른 일반 컬럼에 종속되는 경우가 있다면, 별도의 테이블을 부모-자식 관계로 만든다.
이렇게 문장으로만 보면 뭔 말인지 이해가 안가니 예제를 통해 설명하겠다.
이 '학생'테이블을 잘 살펴보면 컬럼들 중에 반드시 '학생'에 종속되는 속성이 아닌 것이 있다.
바로 '우편번호'와 '기본주소' 컬럼이다.
기본주소만 놓고 보면, 학생에 따라 기본주소가 다르니 학생에 종속된 것은 맞다.
그러나 '우편번호' 컬럼이 있으면 얘기가 달라진다.
우편번호는 '학생이 누구냐'에 따라 달라지기 보다는, '기본주소가 어디냐'에 따라 달라지기 때문,
즉 '기본주소'에 종속되기 때문이다.
그러나 상세주소는 우편번호나 기본주소가 어디냐에 따라 달라지지는 않는다.
아래 표를 보면 이해가 빠를 것이다.
학생 |
우편번호 |
기본주소 |
상세주소 |
강동원 |
11111 |
서울시 동대문구 장안동 |
100번지 |
손석희 |
11111 |
서울시 동대문구 장안동 |
200번지 |
김수현 |
33333 |
경기도 이천시 부발읍 아미리 |
100번지 |
- 강동원 학생과 손서키 학생은 모두 장안동에 살지만, 상세주소는 다르다.
- 김수현 학생은 경기도 이천시에 살지만 서울시 동대문구 장안동에 사는 강동원 학생과 상세주소는 같다. (100번지)
이처럼 기본주소는 우편번호에, 우편번호는 기본주소에 따라 달라지는 관계이므로 두 컬럼을 별도의 테이블로 뺀 후, '학생'테이블과 관계를 맺어주겠다. 아래처럼.
이 과정(제 3 정규화)은 PK가 여러 개의 컬럼으로 이루어진 경우에 유용하다.
이 과정에서 기억해야 할 것은 "모든 일반 컬럼은 반드시 주키(PK)에 종속되어야 한다" 라는 점이다.
제 3 정규화와 제 2 정규화가 아주 헷갈리는데, 제 2 정규화에 대한 내용은 살짝 건너뛰었다.
나도 아직 조금 헷갈리는지라 ..ㅜㅜ
시간이 나면 다시 제대로 공부해가지고 정리해야겠다.
여하튼 제 3 정규화는 일반 컬럼이 모두 주키에 종속되고 있는지를 확인한다는 것을 확실히 알고, 이만 여기서 마무으리- 하겠다.
유후-
반응형