릴레이션 R을 릴레이션 R1과 R2로 분해할 때, R1 join R2 = R이면 무손실 분해(lossless-join decomposition)라고 함
R1 ∩ R2 → R1 혹은 R1 ∩ R2 → R2 중 하나를 만족해야 함
R1 ∩ R2 → R1는 함수종속식 R1 ∩ R2 라는 건 컬럼이 나온다는 거임.
그렇게 나온 컬럼이 R1 또는 R2에 대해 함수종속식을 만족시켜야 한다는 뜻. 둘 중 하나만 만족해도 괜찮다.
R1이나 R2의 키가 되면 문제가 없다! 그러지 않을 경우 문제가 발생한다.
잘못된 분해 후 조인 시 의미없는 투플이 생긴다.
이렇게 늘어나도 정보가 손실된다고 함.
정보가 손실되면 손실(loss) 분해 되었다고 함.
후보키를 케이크먹듯이 쉽게 찾는 방법
function-closure
A^+라는 기호를 쓴다. 함수 종속식을 통해 표현가능한 모든 속성을 나열하는 것.
A^+ = A, B, C, D
B^+ = B, C, D (A를 붙여 표현한다면 A 또한 표현 가능하나, 이는 최소집합이 아니다.)
C^+ = C, D....
모든 키를 결정할 수 있다면 후보키가 된다.
몇정규형인지 물어볼 때 분해 안되있으면 그 정규형은 만족 못한다... 분해해야 만족한다.
릴레이션 분해시 무손실 분해 확인법
R1 ∩ R2가 키가 되고 함수 종속식을 만족할 때 무손실 분해이다?
예제 7-3
A
2
yes
예제 7-4
후보키?
AB^+ = ABC
BC^+ = ACB
이때, AB와 BC가 서로 포함관계가 아니기 때문에 이 둘은 후보키가 된다.
제2정규형에서 기본키와 후보키는 다른 개념이다. 책에서는 기본키라고 설명했는데 후보키가 맞음.
제3정규형도 기본키가 아니라 후보키다!!!!!
근데 정보처리기사에서는 얘네도 헷갈려해서 후보키?기본키?슈퍼키? 이런 거 안나옴. 기본키라고 해도 틀렸다고하면 안된다...?
C -> A가 아니라 BC -> A면 만족한다.
제 1정규형을 만족한다.
R1(B, C) R2(A, C)에서 공통 속성은 C, C는 A를 결정하므로 만족한다.
예제 7-5
후보키
AB^+ = ABCD (AB -> C, C -> D이므로)
BC^+ = CADB
1정규형
무손실 분해
정규화 연습?
DB 모델링 : ER 다이어그램 후 매핑, 이를 정규화를 통해 확인한다?
필지번호 many to many
many to many에서 필지번호와 주민등록번호는 둘 모두 결정할 수 없다.
키가 필지번호, 주민등록번호가 된다.
필지번호와 주민등록번호는 함수종속 자체가 없기 때문에 만족하여 사례1에서는 BCNF 를 만족한다.
사례2
우앵 몰루