DNF LOVE
[데이터베이스론 기초 - 10] 데이터 종속성과 정규화 본문
이전 포스터 중 데이터 종속성에 대해 다뤄봤다. -> CLICK
간단히 설명하면, DB의 궁극적 목표인 데이터 독립성을 방해하는 요소 중 하나로, 응용 프로그램과 데이터 간의 상호 의존 관계를 의미한다. 즉, 데이터의 구성방법이나 접근 방법의 변경 시 관련 응용 프로그램도 동시에 변경이 필요하다.
이 종속성이 침해(?) 받는다면 이상(Anomaly)가 발생될 수 있다.
위와 같은 관계를 갖는 릴레이션이 존재한다고 해보자.
- 삽입 이상(Insertion Anomaly) : 500번 학생의 지도교수가 P4라는 사실을 삽입하려 할 때 어떤 과목을 등록하지 않는 한 삽입이 불가능하다.
- 삭제 이상(Deletion Anomaly) : 200번 학생이 C123의 등록을 취소하여 이 튜플이 삭제되는 경우에 지도교수가 P2라는 정보까지 손실된다.
- 갱신 이상(Update ANomaly) : 400번 학생의 지도교수를 P4에서 P3으로 변경하는 경우 학번 400번의 학생의 4개의 튜플에 대한 지도교수를 모두 P3으로 변경해야 한다.
이상의 원인은 하나의 개체에 속한 애트리뷰트들 간에 존재하는 여러개의 종속 관계를 하나의 릴레이션으로 표현하기 때문이다.
여기서 종속관계란, 함수 종속(Functional Depedency)를 의미한다. 즉, 어떤 릴레이션 R에서, 애트리 뷰트 X의 값 각각에 대해 애트리뷰트 Y의 값이 최대 하나만 연간되어 있을 때 애트리뷰트 Y는 애트리뷰트 X에 함수 종속되었다고 한다
X -> Y로 표현하며 X를 결정자, Y를 종속자라 한다. X나 Y는 각각 두 개 이상의 애트리뷰트 집합이 될 수 있다.
- 완전 함수 종속 : X'가 X의 부분집합이고, X' -> Y가 성립되는 애트리뷰트 x'가 존재하지 않는 경우를 완전 함수 종속이라 한다.
- 부분 함수 종속 : X'가 X의 부분집합이고, X'->Y가 성립되는 애트리뷰트 X'가 존재하는 경우를 말한다.
릴레이션 R에서 애트리뷰트 X가 Key이면, R의 모든 애트리뷰트 Y에 대해 X->Y가 성립된다.
즉, 학번(Key) -> 학년 이고 {학번,과목번호}(Key) -> 성적 일 때,
- .”학년”은 “학번”에 완전 함수 종속
- ”학년”은 “{학번,과목번호}에 부분 함수 종속
- “성적”은 {학번,과목번호}에 완전 함수 종속
** 함수 종속의 성질 : 릴레이션 R에 대해 X,Y,Z라는 애트리뷰트의 집합이 주어졌다고 가정하자. 우리는 여러 가지 함수종속의 성질을 유도해 낼 수 있다.
- 부분집합의 성질(Subset Property) (반사의 공리): Y가 X의 부분 집합이면, X → Y이다.
- 확대(Augmentation) (확대의 공리): 만약 X → Y이면, XZ → YZ이다.
- 이행성(Transitivity) (이행의 공리): 만약 X → Y이고 Y → Z이면 X → Z이다.
이 공리에 의해 다음과 같은 부수적 법칙을 유도해 낼 수 있다.
- 합집합의 성질(Union): If X → Y이고 X → Z이면 X → YZ이다.
- 분해의 성질(Decomposition): X → YZ이면 X → Y이고 X → Z이다.
- 유사 이행적 성질(Pseudotransivity): 만약 X → Y이고 YZ → W이면, XZ → W이다.
다시 돌아가서, 이상을 해결하기 위해서는 애트리뷰트들 간의 여러 종속관계를 분해 하여 각각의 하나의 릴레이션으로 표현한다. 이를 정규화(Normalization) 과정이라 한다.
정규화는 스키마 변환 (S -> S')으로 정규형으로 만들며 정규화의 원칙 3가지가 존재한다.
- 정보 표현의 무손실(같은 의미의 정보 유지)
- 최소의 데이터 중복
- 분리의 원칙(릴레이션 각각에 대해 독립적 처리가 가능하다.)
<정규화>
** 릴레이션의 정규화는 실제 데이터 값이 아니라 개념적인 측면에서 다뤄져야 한다.
'Computer Science > 데이터베이스' 카테고리의 다른 글
[데이터베이스론 - 뷰(VIEW)] (0) | 2019.10.22 |
---|---|
[데이터베이스론 기초 - 11] SQL (0) | 2019.10.22 |
[데이터베이스론 기초 - 9] 관계 데이터 연산과 데이터 언어(관계 대수, 관계 해석) (0) | 2019.10.22 |
[데이터베이스론 기초 - 8] 관계 데이터베이스 모델과 릴레이션 개념에 대하여 (0) | 2019.08.14 |
[데이터베이스론 기초 - 7] DBS, DDL, DML, DCL, DBMS, DBA 등 데이터베이스 관련 용어 정리 (0) | 2019.08.04 |