원래 3항 관계
SPJ는 공급자·부품·프로젝트를 한 번에 기록한다
각 행은 하나의 공급자가 어떤 부품을 어떤 프로젝트에 공급하는지 나타낸다.
공급자
부품
프로젝트
S1
P1
J1
S1
P2
J1
S2
P1
J1
S1
P1
J2
조인 종속 규칙
세 쌍 관계가 모두 있으면 한 SPJ 튜플이 성립한다
SP
S가 P를 공급 가능
S1-P1
SJ
S가 J에 참여
S1-J1
PJ
J가 P를 사용
P1-J1
↓
따라서 SPJ에 (S1, P1, J1)이 복원된다
핵심은 3항 사실이 별도 규칙이 아니라, 세 개의 2항 관계를 자연 조인하면 다시 얻어진다는 점이다.
5NF 분해
세 개의 2항 릴레이션으로 나누어 저장
각 테이블은 한 관계만 저장하고, 필요할 때 자연 조인해서 원래 SPJ를 정확히 되살린다.
SP(공급자, 부품)
S가 어떤 부품을 공급 가능한가
공급자
부품
S1
P1
S1
P2
S2
P1
SJ(공급자, 프로젝트)
S가 어떤 프로젝트에 참여하는가
공급자
프로젝트
S1
J1
S1
J2
S2
J1
PJ(부품, 프로젝트)
J가 어떤 부품을 사용하는가
부품
프로젝트
P1
J1
P2
J1
P1
J2
SP ⋈ SJ ⋈ PJ = SPJ
5NF는 이렇게
조인 종속을 분해
해도 원래 릴레이션이 손실 없이 복원되는 경우를 다룬다.