7-1 정규화 개요
1. 릴레이션 정규화
- db설계 제대로 안하면 갱신 이상을 유발함.
- 정규화는 주어진 릴레이션을 분해함으로써 중복과 세가지 갱신 이상을 최소화함.
2. 갱신 이상과 중복
- 수정 이상: 데이터 일부만 수정해 데이터 불일치 발생.
- 삽입 이상: 불필요한 정보를 함께 저장 안하면 어떤 정보를 저장하는 것이 불가능
- 삭제 이상: 유용한 정보를 함께 삭제 안하면 삭제가 불가능.
- 중복
-> 릴레이션 분해로 해결하자~
7-2 함수적 종속성
1. 함수적 종속성
- 만약 애트리뷰트 A가 애트리뷰트 B의 결정자이면 B가 A에게 함수적으로 종속한다
- 정규화 이론의 핵심
- 제2정규형부터 BCNF까지 적용됨.
- 완전 함수적 종속성:
- 애트리뷰트 B가 애트리뷰트 A에 함수적으로 종속하면서
- 애트리뷰트 A의 어떤 진부분집합에도 함수적으로 종속하지 않으면
- B가 A에게 완전하게 함수적으로 종속.
2. 결정자
- 다른 애트리뷰트 값을 고유하게 결정하는 애트리뷰트
3. 이행적 함수적 종속
- A가 B를 결정하고, B가 C를 결정한다.
- 아래 그림에서 fd2가 이행적 함수 종속성이다.
7-3 릴레이션의 분해
1. 릴레이션 분해
- 하나의 릴레이션을 두 개 이상으로 나누는 것
- 중복 감소
- 갱신 이상 감소
- 그러나 조인을 필요로하는 질의가 생길 수 있고
- 재구성을 못할 수 있음
2. 무손실 분해
- 정보의 손실은 정보가 원래 릴레이션에 들어있는 정보보다 적거나 많은 것을 모두 포함함.
- 반드시 무손실 분해를 해야함.
7-4 제1정규형, 제2정규형, 제3정규형, BCNF
1. 제1정규형
: 릴레이션 R의 모든 애트리뷰트가 원자값만 갖는다.
- 릴레이션의 모든 애트리뷰트에 반복 그룹이 안 나타나면 제1정규형 만족.
- 만약 반복그룹이 나타났으면
- 해결법1: 애트리뷰트에 나타나는 집합에 속한 각 값마다 하나의 투플로 표현
- 해결법2: 두 릴레이션으로 분해
- 제1정규형에 존재하는 갱신이상. 그림 7.16은 제1정규형을 만족하는 릴레이션이다.
- 수정이상 - 학과 전화번호를 수정하고, 해당학과의 모든 학과 전화번호를 수정하는 것이 아니면 일관성 유지 불가
- 삽입이상 - 한명의 학생이라도 어떤 학과에 소속되지 않으면 투플 삽입 불가. 기본키에 널값 못 들어감.
- 삭제이상 - 어떤학과에 소속된 마지막 학생 투플을 삭제하면 소속한 학과에 관한 정보도 삭제됨.
- 이러한 갱신 이상이 생기는 이유:
- 부분 함수적 종속성이 존재하기때문!
- 제2정규형에서 계속..
2. 제2정규형
: 제1정규형을 만족하면서 모든 애트리뷰트들이 기본키에 완전하게 함수적으로 종속하는 것.
- 이는 기본키가 2개 이상일 때부터 고려할 필요가 있음
- 제2정규형에 존재하는 갱신이상.
- 수정이상 - 학과 전화번호를 수정하고, 해당학과의 모든 학과 전화번호를 수정하는 것이 아니면 일관성 유지 불가
- 삽입이상 - 신설학과이어서 학생이 없으면 해당 학과 정보를 입력할 수 없음.
- 삭제이상 - 어떤학과에 소속된 마지막 학생 투플을 삭제하면 소속한 학과에 관한 정보도 삭제됨.
- 이러한 갱신이상이 생기는 이유:
- 학생릴레이션에 이행적 종속성이 존재하기 때문!
- 제3정규형에서 계속...
3. 제3정규형
: 제2정규형을 만족하면서, 키가 아닌 모든 애트리뷰트가 릴레이션의 기본 키에 이행적으로 종속하지 않는 것.
- 제3정규형에 존재하는 갱신이상
- 수정이상 - 강사가 바뀌었을때 해당 과목을 듣는 학생들의 모든 강사를 바꾸어줘야함.
- 삽입이상 - 과목이 신설되어서 아직 아무도 수강하고 있지 않으면 정보 입력 불가..
- 삭제이상 - 어떤 과목을 듣는 학생이 한명뿐인데 이 투플을 지우면 강사 정보도 사라짐.
- 이러한 갱신이상이 생기는 이유:
- 수강릴레이션에서 키가 아닌 애트리뷰트가 다른 애트리뷰트를 결정하기 때문.
- 여기서 후보키는 (학번, 과목) (학번, 강사)
4. BCNF
: 제3정규형을 만족하고, 모든 결정자가 후보키이어야함.
- 위에서 강사는 후보키도 아니면서 과목 애트리뷰트를 결정함..
- 하나의 후보키만 가진 릴레이션이 제2정규형을 만족하면 BCNF도 만족함.
- 키가 아니면서 결정자 역할을 하는 애트리뷰트(강사)와 그 결정자에 함수적으로 종속하는 애트리뷰트(과목)를 하나의 테이블에 넣음.
- 이 릴레이션에서 기본키는 결정자가 됨.
- 기존 릴레이션에서는 결정자를 남겨 기본키의 구성요소가 되도록함. 이는 새로운 릴레이션에 대한 외래키 역할도 함.
5. 정규화 정리
7-5 역정규화
1. 역정규화
- 정규화가 데이터베이스 설계의 중요한 요소인건 맞지만
- 성능상의 관점에서만 보면 높은 정규형이 최적인 것은 아님.
- 분해가 많이되면 조인의 필요성이 증가함.
- 역정규화는 빈번하게 수행되는 질의들의 수행 속도를 높이기 위해 이미 분해된 릴레이션들을 합치는 과
'Computer Science > DataBase' 카테고리의 다른 글
[데이터베이스] 9장 트랜잭션 (0) | 2023.12.12 |
---|---|
[데이터베이스] 8장 뷰와 시스템 카탈로그 (0) | 2023.12.12 |
[데이터베이스] 6장 물리적 데이터베이스 설계 (1) | 2023.11.26 |
[데이터베이스] 5장 데이터베이스 설계와 ER모델 (2) (0) | 2023.11.26 |
[데이터베이스] 5장 데이터베이스 설계와 ER모델 (1) (0) | 2023.11.25 |