본문 바로가기

정보처리산업기사/데이터베이스

[데이터베이스] 릴레이션 정규화(제1정규형, 제2정규형, 제3정규형, BCNF)-hoyhi-tistory

제 1 정규형

한 릴레이션 R이 제1정규형을 만족할 필요 충분 조건은 릴레이션 R의 모든 애트리뷰트가 원자값만을 갖는다는 것

즉 릴레이션의 모든 애트리뷰트에 반복 그룹(repeating group)이 나타나지 않으면 제1정규형을 만족함

과목 번호 애트리뷰트에 반복 그룹이 나타난 모습

 

제1정규형을 만족하지 않는 위의 그림을 제1정규형으로 변환하는 방법

반복 그룹 애트리뷰트에 나타나는 집합에 속한 각 값마다 하나의 튜플로 표현

애트리뷰트에 원잣값만 있는 릴레이션

 

제1정규형에 존재하는 갱신 이상

모든 애트리뷰트가 원자값을 가지면 제1정규형을 만족함

이 릴레이션의 기본 키는 (학번,과목번호)

제1정규형을 만족하는 릴레이션

 

수정 이상

- 한 학과에 소속한 학생 수 만큼 그 학과의 전화번호가 중복되어 저장되므로 여러 학생이 소속된 학과의 전화번호가 변경되었을 때 그 학과에 속한 모든 학생들의 튜플에서 전화번호를 수정하지 않으면 데이터베이스의 일관성이 유지되지 않음

 

삽입 이상

- 한 명의 학생이라도 어떤 학과에 소속되지 않으면 이 학과에 관한 튜플을 삽입할 수 없음. 왜냐하면 학번이 기본 키의 구성요소인데 엔티티 무결성 제약조건에 따라 기본 키에 널값을 입력할 수 없기 때문

 

삭제 이상

- 어떤 학과에 소속된 마지막 학생 튜플을 삭제하면 이 학생이 소속된 학과에 관한 정보도 삭제됨

 

갱신 이상이 생기는 이유

- 기본 키에 대한 부분 함수적 종속성이 학생 릴레이션에 존재

(a) 부분 함수적 종속성이 존재하는 릴레이션 (제1정규형)  (b) 부분 함수적 종속성이 존재하지 않도록 분해된 두 릴레이션(제2정규형)

 

제 2정규형

한 릴레이션 R이 제2정규형을 만족할 필요 충분 조건은 릴레이션 R이 제1정규형을 만족하면서, 어떤 후보 키에도 속하지 않는 모든 애트리뷰트들이 R의 기본 키에 완전하게 함수적으로 종속하는 것

 

기본 키가 두 개 이상의 애트리뷰트로 구성되었을 경우에만 제1정규형이 제2정규형을 만족하는가를 고려할 필요가 있음

 

제2정규형에 존재하는 갱신 이상

- 학생1 릴레이션의 기본 키는 한 애트리뷰트인 학번이므로 제2정규형을 만족함

제2정규형을 만족하는 릴레이션

 

수정 이상

- 여러 학생이 소속된 학과의 전화번호가 변경되었을 때 그 학과에 속한 모든 학생들의 튜플에서 전화번호를 수정하지 않으면 데이터베이스의 일관성이 유지되지 않음

 

삽입 이상

- 어떤 학과를 신설해서 아직 소속 학생이 없으면 그 학과의 정보를 입력할 수 없다. 왜냐하면 학번이 기본키인데 엔티티 무결성 제약조건에 따라 기본 키에 널값을 입력할 수 없기 때문

 

삭제 이상

- 어떤 학과에서 마지막 학생의 투플이 삭제되면 그 학과의 전화번호도 함께 삭제됨

 

갱신 이상이 생기는 이유

- 학생1 릴레이션에 이행적 종속성이 존재하기 때문

(a) 이행적 종속성이 존재하는 릴레이션(제2정규형) (b) 이행적 종속성이 존재하지 않도록 분해된 두 릴레이션(제3정규형)