목차
- 좋은 스키마와 나쁜 스키마
- 함수 종속성 이론
- 정규형
- 분해 및 설계
1. 좋은 스키마와 나쁜 스키마
1. 나쁜 스키마
세 가지 이상(anomaly)을 가짐
- 갱신 이상
- 삭제 이상
- 입력 이상
나쁜 스키마 예)
mybadtable1(cID, title, deptName, credit, chairman, bulding, budget)
→ 두 관계 “course”와 “department”가 결합되어 있음
2. 함수 종속성
함수 종속성은 일부 속성의 값이 다른 속성의 값을 유일하게 결정하는 것을 의미
A B
A | B |
1 | 4 |
1 | 4 |
2 | 4 |
3 | 5 |
동일한 A값에 대해 항상 동일한 B값
A는 B를 함수적으로 결정
B는 A를 함수적으로 결정하지 않음
슈퍼 키는 관계 속성의 일부분으로서 전체 속성을 함수적으로 결정하는 속성
슈퍼 키는 유일하기 때문
함수 종속성은 두 가지 방식으로 사용 가능
- 관계 인스턴스의 유효성 검사
- 적법한 테이블의 제약 조건을 명시하는 데 함수 종속성 사용 가능
2. 함수 종속성 이론
1. 무의미(trivial) 함수 종속성
함수 종속성이 테이블의 모든 인스턴스에 대하여 만족하면 무의미함
2. 함수 종속성 폐포(closure)
A→B
B→C일 때,
A→C를 유추 가능
폐포를 직접 구하여 사용하지 않음
3. 암스트롱 공리
새로운 함수 종속성을 유추할 수 있는 추론 규칙
세 가지 추론 규칙으로 구성
- 재귀성 규칙: 무의미한 함수 종속성 생성하게 됨
- 부가성 규칙: 주어진 함수 종속성에 동일한 속성을 양쪽에 추가하여도 됨 AG→CG
- A→C일 때,
- 이행성 규칙: 추론의 이행성을 설명 B→H일 때,
- A→H
- A→B
암스트롱 공리는 항상 건전함, 완전함
4. 속성 폐포
주어진 속성이 함수적으로 결정할 수 있는 모든 속성을 속성 폐포라고 함
R = {A, B, C, G, H, I}
F = {A→B, A→C, CG→H, CG→I, B→H}
여기서 AG는 후보 키
- AG가 모든 속성을 결정함
- AG의 부분 집합 A 또는 G는은 슈퍼 키 조건을 만족하지 않음
- AG의 폐포는 ABCGHI
5. 속성 폐포 사용
- 속성 폐포가 주어진 테이블의 전체 속성을 가지게 되면 그 속성은 슈퍼 키
- 함수 종속성이 유효한지 검증
- 속성 a의 폐포에 b가 속하게 되면 a→b는 유효한 함수 종속성
6. 정규 커버
동일한 내용(함수 종속성 폐포)을 표현하는 가장 적은 속성 및 함수 종속성의 집합
3. 정규형
1. 정규화형
- 제1 정규형
- 제2 정규형
- 제3 정규형
- BCNF
- 제4 정규형
- 제5 정규형
제1,2,3 정규형 및 BCNF → 함수 종속성으로 정의
제4 정규형 → 다치 종속성으로 정의
실질적으로 제3 정규형 및 BCNF만 사용
2. 제1 정규형
속성 값으로 원자 값만을 허용
집합, 리스트, 복합 속성 등 사용 x
3. 다양한 함수 종속성
임의의 후보 키에 속하는 속성은 주요 속성
다수 개의 후보 키가 존재하더라도 후보 키에 속하면 주요 속성임
a→b에서 a의 부분집합 r에 대하여 r→b이 성립하지 않으면 a→b는 완전 함수 종속성
b는 a 전체에 대하여 의존적인 함수 종속성임
r→b이 성립한다면 부분 함수 종속성
a→b, b→c일 때, a는 c를 이행적으로 결정
또는 c는 a에 이행적으로 의존적이라고 함
4. 제2 정규형
제1 정규형 중에서 모든 비주요 속성이 모든 후보키에 완전 의존적이어야 함
5. 제3 정규형
제2 정규형 중에서 모든 비주요 속성이 모든 후보키에 이행적으로 의존적이 아니면 제3 정규형
모든 의미 있는 함수 종속성 “a→b”에서 a가 슈퍼 키이거나 또는 b가 주요 속성이어야 함
6. BCNF
관계형 스키마가 모든 의미 있는 함수 종속성 a→b에서 a가 슈퍼 키이면 BCNF 정규형이 됨
속성이 두 개인 테이블은 모두가 BCNF임
7. 정규화 관계도
실세계에서는 제3 정규형과 BCNF 정규형을 사용하는 것을 권장
4. 분해 및 설계
1. 정규화 분포
R은 주어진 관계형 스키마
F는 주어진 함수 종속성의 집합
- 주어진 R이 좋은 스키마인지 결정
- 주어진 스키마가 좋은 스키마가 아니면 스키마 분해 연산
- 분해 과정은 무손실 조인 분해이어야 함
2. 무손실 조인 분해
- 손실 조인 분해는 스키마를 투영 연산으로 분해 후 natural join 했을 때 원 테이블에 없는 새로운 터플(spurious tuples)이 생김
- 무손실 조인 분해를 만족하기 위해서는 분해된 테이블의 공통 속성이 분해된 테이블 중 적어도 하나에서 주 키여야 함
3. BCNF 시험
각 함수 종속성에 대하여 슈퍼 키 여부를 확인해야 함
4. BCNF와 제3 정규형 비교
가능하면 BCNF 사용을 권장
다만 함수 종속성 보존이 중요한 응용에서는 제3정규형 권장
'전공 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] #13 개체-관계성 데이터 모델 (0) | 2024.06.12 |
---|---|
[데이터베이스] #12 SQL 확장 (0) | 2024.05.20 |
[데이터베이스] #11 응용 개발 (0) | 2024.05.20 |
[데이터베이스] #10 오라클 실습 II (0) | 2024.05.20 |
[데이터베이스] #9 데이터베이스 주요 기능 (0) | 2024.05.20 |