11.1 좋은 스키마와 나쁜 스키마
Bad Schema
- Upadate anomaly (갱신이상)
- 속성값이 반복해서 나올 수있다. 그 속성을 갱신하면 많은 것을 갱신
- Delete anomaly (삭제이상)
- 학과정보를 가진 과목을 삭제하는데 마지막남은 거였다면 학과정보도 삭제
- Insert anomaly (입력이상)
- 새로운 학과를 넣으려고하는데 과목이 없으면 입력 못함
설계목표
- 좋은 스키마 인지, 나쁜 스키마인지 결정한다.
- 나쁜 스마 → 다수의 다른 관계 스키마로 분해
- 분해된 스키마는 좋은 스키마 형태, 손실 X 분해여야한다.
- fuctional dependency, multivalued dependency 를 이용한다.
Fuctional dependency (FD)
- 유요한 관계 인스턴스 에 대한 제약
- 키 개념의 일반화
- 일부 속성의 값이 다른 속성의 값을 유일하게 결정
- A → B : A가 B를 함수적으로 결정한다.
- 역이 항상 성립하는 것은 아니다.B → A
- A속성 값이 임이의 터플 두개에서 B 속성값이 항상 동일
FD 와 Key
- Super key : 관계 속성의 일부이면서 전체 속성을 함수적으로 결정
- Candidate key : 슈퍼키 중에서 부분집합이 슈퍼키가 아닌 것
- 후보키는 모든 속성에 대해서 각각 함수적으로 결정한다.
FD 의 사용
- 관계 인스턴스가 알맞은 지 검사
- 적법한 테이블의 제약 조건을 명시
- 현재 인스턴스가 어떤 FD를 만족한다고해도 미래 인스턴스에 대해서 아닐 수도 있다.