본문 바로가기

데이터베이스 DataBase

chapter 07 정규화

정규화 : 잘못 설계된 테이블을 수정하여 정상으로 만드는 과정으로 한 테이블에 존재하는 여러 속성 간의 의존 관계를 정리. 정규화를 하기 위해선 먼저 테이블을 분석하여 기본키와 함수 종속성을 파악해야 함. 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정을 정규화라고 함. 이때 이상현상이 없어질 때까지 분해. 정규화는 릴레이션의 분해를 통해 이루어지는데, 분해 과정에서 어떤 정규형 상태인 릴레이션 R1을 분해하여 만든 R2, R3 릴레이션은 R1 다음 정규형이 아닌 더 높은 정규형이 될 수 있다는 것에 주의.

 

함수 종속성 : 테이블을 구성하는 속성 간에 의존 관계에 관한 것. 속성 간에 함수적으로 종속하는 성질을 함수 종속성이라 함. 릴레이션 R과 R에 속하는 속성의 집합 X, Y가 있을 때, X 각각의 값이 Y의 값 한 개와 대응이 될 때 'X는 Y를 함수적으로 결정한다'라고 하고 X->Y로 표기. 이때 X를 결정자라고 하고, Y를 종속 속성이라 함. 함수 종속성을 판단할 때는 릴레이션의 현재 인스턴스만을 가지고 판단하는 것이 아니라 속성이 갖는 의미를 가지고 판단. 함수 종속성을 나타내는 표기법으로 함수 종속성 다이어그램이 있음. 함수 종속성에 관한 다음과 같은 규칙이 성립. 부분집합 규칙, 증가 규칙, 이행 규칙, 결합 규칙, 분해 규칙, 유사이행 규칙. 함수 종속성을 파악하기 위해선 우선 기본키를 찾아야 함.

 

이상현상 : 잘못 설계된 테이블로 삽입, 삭제, 수정 같은 데이터 조작을 하는 경우 테이블에 투플을 삽입할 때 부득이하게 NULL 값이 입력되거나, 삭제 시 연쇄삭제 현상이 발생하거나, 수정 시 데이터의 일관성이 훼손되는 현상. 한 개의 릴레이션에 두 개 이상의 정보가 포함되어 있을 때 나타남. 기본키가 아니면서 결정자인 속성(비후보키 결정자 속성)이 있을 때 발생. 이상현상을 해소하기 위해 분해할 때에는 부분 릴레이션의 결정자(공통속성)를 원래 릴레이션에 남겨 두어야 함. 이렇게 남겨진 공통속성은 분해된 릴레이션을 다시 원래의 릴레이션으로 조인할 때 사용.

 

삭제이상 : 투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상. -> 연쇄삭제 문제 발생.

 

삽입이상 : 투플 삽입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 현상. -> NULL 값 문제 발생.

 

수정이상 : 투플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상. -> 불일치 문제 발생.

 

제 1 정규형 : 릴레이션 R의 모든 속성 값이 원자값을 가지면 제 1 정규형이라 함. 복합 속성이 아니어야 함. A relation in which the intersection of each row and column one and only one value.

 

제 2 정규형 : 릴레이션 R이 제 1 정규형이고 기본키가 아닌 속성이 기본키에 완전 함수 종속일 때 제 2 정규형이라고 함. A relation that is in first normal form and every non-primary key attribute is fully functionally dependent on the primary key.

 

완전 함수 종속 : A와 B가 릴레이션 R의 속성이고 A->B 종속성이 성립할 때, B가 A의 속성 전체에 함수 종속하고 부분 집합 속성에 함수 종속하지 않을 경우 완전 함수 종속이라고 함. A에서 일부를 떼어낸 것이 여전히 B에 종속되는 경우 불완전 함수 종속이고 그렇지 않은 것을 완전 함수 종속이라 함.

 

불완전 함수 종속 : A->B 종속성에서 A의 속성 일부를 제거해도 종속성이 여전히 성립하는 경우 불완전 함수 종속 혹은 부분 함수 종속이라고 함.

 

제3정규형 : 속성들이 이행적으로 종속되어 있는지 여부를 판단. 릴레이션 R이 제 2 정규형이고 기본키가 아닌 속성이 기본키에 비이행적으로 종속할 때 제 3 정규형이라고 함. 이행적 종속이란, A->B, B->C가 성립할 때 A->C가 성립되는 함수 종속성. A relation that is in first and second normal form and in which no non-primary key is transitively dependent on the primary key.

 

BCNF : 릴레이션에 존재하는 함수 종속성에서 모든 결정자가 후보키일 때, 릴레이션 R에서 함수 종속성 X->Y 가 성립할 때 모든 결정자 X가 후보키이면 BCNF 정규형이라고 함. A relation is in BCNF if and only if every determinant is a candidate key. 대부분의 릴레이션은 BCNF까지 정규화하면 실제적인 이상현상은 없어짐. 따라서 보통 BCNF까지 정규화를 진행.

 

무손실 분해 : 릴레이션 R을 분해하여 두 개의 릴레이션 R1과 R2를 만들었을 때, 다시 조인을 하면 원래의 릴레이션 R이 만들어진다는 의미. 무손실 분해를 위한 조건은 R1 ∩ R2 -> R1 이나 R1 ∩ R2 -> R2 중 하나를 만족하여야 함.

 

제 4 정규형 : 다치종속성을 가진 릴레이션에 관한 내용.

 

제 5정규형 : 조인종속성을 가진 릴레이션에 관한 내용.