무손실 조인 검증

분해가 맞았는지는 원본으로 되돌려 확인한다

분해한 테이블을 공통 키로 다시 붙였을 때 원래 행만 복원되어야 한다. 없던 학생-과목 조합이 생기면 그 분해는 잘못된 분해다.

공통 키학번, 과목코드
복원 행원본 3행 그대로
금지가짜 조합 추가
학생 과목 3행 복원 가짜 조합 없음
공통 키학번과 과목코드가 조인 기준으로 남는다.
복원수강 3행만 원본 행으로 돌아온다.
차단S02-C20 같은 없던 조합은 생기지 않는다.

분해된 테이블

공통 키 보존

학생

PK 학번
학번학생명
S01김민수
S02이서연

과목

PK 과목코드
과목코드과목명교수
C10DB이교수
C20운영체제박교수

수강

FK 2개 + 성적
학번과목코드성적
S01C10A
S01C20B+
S02C10A-
학생 수강

학번이 일치하는 행에만 학생명을 붙인다.

수강 결과 과목

과목코드가 일치하는 행에만 과목 정보를 붙인다.

3행 입력 = 3행 복원

행 수와 키 조합이 그대로면 무손실 분해다.

복원된 원본

가짜 행 없음
학번 학생명 과목코드 과목명 성적
S01김민수C10DBA
S01김민수C20운영체제B+
S02이서연C10DBA-
학생S01 · 김민수
과목C10 · DB
성적A
학생S01 · 김민수
과목C20 · 운영체제
성적B+
학생S02 · 이서연
과목C10 · DB
성적A-

S02-C20처럼 원본에 없던 조합이 추가되지 않으므로 복원 결과가 원본과 같다.

3 원본 수강 키 조합
3 조인 후 복원 행
0 S02-C20 같은 가짜 조합
공통 속성 유지

학번과 과목코드가 분해 후에도 조인 기준으로 남아 있다.

행 수 보존

수강 3행을 조인해도 복원 결과는 3행이다.

가짜 행 차단

공통 키가 맞지 않는 학생-과목 조합은 만들어지지 않는다.