득이공간

[데이터베이스] 7장. 릴레이션 정규화 본문

CS/DB

[데이터베이스] 7장. 릴레이션 정규화

쟁득 2024. 2. 27. 09:33
해당 게시물은 김태연 교수님의 '데이터베이스' 강의를 수강하며
학습한 내용을 개인적으로 정리한 글입니다.

📌 목차 - 7장. 릴레이션 정규화

7-1. 정규화 개요
7-2. 함수적 종속성
7-3. 제1정규형, 제2정규형, 제3정규형, BCNF
7-4. 역정규화


📌 7-1. 정규화 개요

* 릴레이션 정규화
- 부주의한 데이터베이스 설계는 제어할 수 없는 데이터 중복을 야기해서 여러가지 갱신이상(update anomaly)을 유발한다. INSERT, UPDATE, DELETE문으로 데이터를 변경할 때
- 정규화(normalization)는 주어진 릴레이션 스키마를 함수적 종속성과 기본 키를 기반으로 분석해서 원래의 릴레이션을 분해함으로써 중복과 세 가지 갱신이상을 최소화한다.


* 갱신 이상(update anomaly)
- 수정 이상(mmodification anomaly): 반복된 데이터 중에 일부만 수정하면 데이터의 불일치가 발생한다.
- 삽입 이상(insertion anomaly): 불필요한 정보를 함께 저장하지 않고는 어떤 정보를 저장하는 것이 불가능하다.
- 삭제 이상(deletion anomaly): 유용한 정보를 함께 삭제하지 않고는 어떤 정보를 삭제하는 것이 불가능하다.


* 릴레이션 분해
- 하나의 릴레이션을 두 개 이상의 릴레이션으로 나누는 것


* 정규형(normal form)의 종류
- 제1정규형, 제2정규형, 제3정규형, BCNF(Boyce-Codd normal form), 제4정규형, 제5정규형


* 관계 데이터베이스 설계의 비공식적인 지침
- 지침1: 이해하기 쉽고 명확한 스키마를 만들어라.
- 지침2: 널값을 피해라.
- 지침3: 가짜 튜플이 생기지 않도록 해라.
- 지침4: 스키마를 정제해라.


📌 7-2. 함수적 종속성

* 함수적 종속성
- 만일 애트리뷰트 A가 애트리뷰트 B의 결정자면 B가 A에 함수적으로 종속한다고 말한다.


* 결정자(determinant)

- 어떤 애트리뷰트의 값은 다른 애트리뷰트의 값을 고유하게 결정할 수 있다. A->B "A가 B를 결정한다. A는 B의 결정자다."


* 완전 함수적 종속성(FFD: Full Functional Dependency)

- 주어진 릴레이션 R에서 애트리뷰트 B가 애트리뷰트 A에 함수적으로 종속하면서 A의 어떠한 진부분 집합에도 함수적으로 종속하지 않으면 B가 A에 완전하게 함수적으로 종속한다고 말한다.


* 함수 종속성(FD: Functional Dependency)

- 같은 릴레이션 안의 속성 간에 특정 속성 값이 함수적으로 다른 속성 값을 결정하는 종속 관계

- 완전 함수 종속, 부분 함수 종속


* 이행적 함수적 종속성(transitive FD)

- 한 릴레이션의 애트리뷰트 A, B, C가 주어졌을 때 애트리뷰트 C가 이행적으로 A에 종속한다(A->C)는 것의 필요 충분 조건 A->B, B->C가 성립하는 것


* 무손실 분해(lossless decomposition)

분해된 두 릴레이션을 조인하면 원래의 릴레이션에 들어있는 정보를 완전하게 얻을 수 있다.


📌 7-3. 제1정규형, 제2정규형, 제3정규형, BCNF

* 제1정규형
- 한 릴레이션 R이 제1정규형을 만족할 필요 충분 조건은 릴레이션 R의 모든 애트리뷰트가 원자값만을 갖는다는 것. 반복 그룹(repeating group)이 나타나지 않아야 한다. (반복 그룹 제거)


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


* 제3정규형
- 한 릴레이션 R이 제3정규형을 만족할 필요 충분 조건은 릴레이션 R이 제2정규형을 만족하면서, 키가 아닌 모든 애트리뷰트가 릴레이션 R의 기본 키에 이행적으로 종속하지 않는 것. (이행적 종속성 제거)


* 보이스코드 정규형 (BCNF: Boyce Codd Normal Form)
- 한 릴레이션 R이 BCNF를 만족할 필요 충분 조건은 릴레이션 R이 제3정규형을 만족하고, 모든 결정자가 후보 키여야 한다. = 후보 키가 아닌 결정자가 없어야 한다. (후보키가 아닌 결정자 제거)


📌 7-4. 역정규화

* 역정규화 (denormalization)
- 높은 정규형은 성능상 최적이 아니고, 찾는데 더 복잡하다. 따라서 성능상 관점에서 중복성, 갱신이상을 감안하고 릴레이션을 합치고 낮은 정규형으로 되돌아가는 것이다.