티스토리 뷰
주어진 함수 종속성 집합 F로부터 후보키를 찾아내는 방법을 알아보자.
R(A,B,C,D,E,F)가 있다.
F= {A->C , C->D, D->B , E->F}일때 이 테이블의 후보키는 무엇일까?
후보키라는 것은 최소성과 유일성을 만족하는 속성이다. 다시말해서 하나의 속성이 다른 모든 속성을 결정하면 그것이 후보키이다.
물론 암스트롱 공리를 이용해서 F로부터 모든 F+를 구해서 후보키를 알아낼수도 있겠지만 경우의수가 매우 많고, 실수할 확률도 높아지게 된다.
그렇기 때문에 Attribute Closure(속성 폐포)를 이용해서 테이블의 후보키를 구해야 한다.
위의 F에서 오른쪽에 있는 속성을 제외한 나머지 속성들이 후보키가 될 자격이 있는 키들이다. 왜냐하면 후보키는 결정되는게 아니라 결정하는 결정자이기 때문이다. 위의 예에선 오른쪽에 있는 속성들이 CDBF이므로 A와 E가 후보키가 될 자격이 있다.
AE를 결정자로 가정해보자.
(AE)+ = AE + C + D + B +F = ABCDEF
Closure of AE
AE는 AE를 결정할수 있다 (reflexivity에 의해) 또한 A가 C를 결정하고 C 는 D를 결정하고 D는 B 를 결정하고 E는 F를 결정하므로
Closure of AE는 ABCDEF가 된다.
다시말해서 AE라는 속성은 나머지 모든 속성들을 결정하는 결정자 역할을 한다. 그렇기 때문에 AE가 이 테이블에서의 후보키라고 할수있다.
A가 후보키가 아닌 이유는 E->F라는 종속성을 나타내지 못하기 때문이다.
마찬가지로 E가 후보키가 아닌 이유는 A->C C->D D->B의 종속성을 나타내지 못하기 때문이다.
진짜로 AE가 ABCDEF의 부분집합을 결정하는지 몇개만 확인해보자.
AE -> ABD를 결정하는가?
A->D , A->B이므로 A->DB이다.
또한 A->A이므로 A->ADB이다.
AE->F인가?
A->C 에서 AE->CE(Augmentation) 이고, CE->CF(Augmentation)이고, 따라서 AE->CF(Transitivity)이다. 여기서 AE->F,AE->C이다(Decomposition)
그렇기 때문에 AE->F 이다. 다른 예도 마찬가지로 암스트롱 공리를 이용하면 도출해낼수 있을것이다.
'컴퓨터 공학과 졸업 > 데이터베이스' 카테고리의 다른 글
내부조인,외부조인 (0) | 2018.03.26 |
---|---|
데이터베이스 튜닝 (0) | 2017.12.07 |
데이터 베이스 정규화 3 - 정규화 주의점 (1) | 2017.11.30 |
데이터베이스 정규화 - 2 (암스트롱의 원리) (0) | 2017.11.30 |
데이터베이스 정규화 - 1 (0) | 2017.11.30 |
- Total
- Today
- Yesterday
- props
- async
- server side rendering
- mobx
- typescript
- return type
- reactdom
- computed
- useEffect
- javascript
- webpack
- es6
- react hooks
- storybook
- await
- atomic design
- Polyfill
- reflow
- reducer
- Next.js
- Action
- hydrate
- promise
- rendering scope
- react
- Babel
- design system
- useRef
- state
- type alias
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |