릴레이션 R의 모든 속성값이 원자값을 가지는 상태 A relation in which the intersection of each row and column contains one and only one value
쉽게 말해 각 칸(셀)에 한 개의 값만 저장되어야 한다는 의미임
즉, 칸 안에 여러 값을 넣으면 안 됨
학생번호
학생명
전화번호
1
Alice
123-4567, 234-5678
2
Bob
345-6789
학생번호
학생명
전화번호
1
Alice
123-4567
1
Alice
234-5678
2
Bob
345-6789
→ 간단하게 해결 가능
# 제2 정규형 (2NF, Second Normal Form)
릴레이션 R이 제1 정규형이고, 기본키가 아닌 속성이 기본키에 *완전 함수 종속인 상태 A relation that is in first normal form and every non-primary key attribute is fully functionally dependent on the primary key
좀더 쉽게 풀어쓰자면 *부분 함수 종속이 제거된 상태를 말함
그냥 예시를 보는게 훨씬 이해하기 쉬움
기본 키가 (학생번호, 강좌번호)라고 해보자
근데 강좌명은 강좌번호에만 종속되고, 학생번호와는 전혀 관계가 없음
이처럼 기본키의 일부에만 의존하는 속성이 존재하는 상태를 부분 함수 종속이라고 함
학생번호
강좌번호
강좌명
성적
1
101
수학
3.5
1
102
과학
3.7
해결방법은 함수 종속성을 분석하여 이상현상을 일으키는 테이블을 분해하면 해결됨
# 완전/부분 함수 종속
릴레이션 R의 속성 A, B에 대하여 A → B 종속성이 성립할 때, B가 A의 속성 전체에 함수 종속하고 부분집합 속성에 함수 종속하지 않을 경우 완전 함수 종속(full functional dependency)라고 함
말이 어려운데, 어떤 속성이 기본키(단일 속성이든 복합 속성이든)에 의해서만 종속되는 상태를 말함
이 반대를 부분 함수 종속, 혹은 불완전 함수 종속이라고 함
예를 들어, (A1, A2) → B 인 와중에 A1 → B 도 여전히 성립하는 경우임
여하튼 이 부분 함수 종속때문에 이상현상이 발생하고, 이를 수정하면 2NF 상태가 됨
# 제3 정규형 (3NF, Third Normal Form)
릴레이션 R이 제2 정규형이고, 비기본 속성 Y가 기본키에 이행적으로 종속되지 않는 상태 A relation that is in first and second normal form and witch no non-primary key is transitively dependent on the primary key
또 말이 어려운데, 쉽게말해 기본키가 아닌 속성이 다른 기본키가 아닌 속성에 종속되지 않는다는 말임
기억 안날까봐 적어두자면 이행적 종속이란 A → B, B → C가 성맇발 때 A → C가 성립되는 함수 종속성을 말함
역시나 예시를 보는게 훨씬 이해하기 쉬움
부서장은 부서에 종속되고, 부서는 부서번호에 종속됨 (A→B, B→C 상태)
즉, 부서장은 부서번호에 종속됨 (결국 A→C 상태가 됨)
이 역시도 해결방법은 함수 종속성을 분석하여 테이블을 분해하면 해결됨
부서번호
부서
부서장
1
HR
Alice
2
IT
Bob
간단
#BCNF 정규형 (Boyce Codd Normal Form)
릴레이션 R에서 함수 종속성 X → Y가 성립할 때 모든 결정자 X가 후보키인 상태 A relation is in BCNF if and only if every deteminant is a candidate key
쉽게말해결정자인데 후보키가 아닌 속성이 존재하지 말아야 된다는 얘기
기억 안날까봐 적자면 후보키는 튜플을 유일하게 식별할 수 있는 속성의 최소 집합임
또또 예시를 보는게 훨씬 쉬움
후보키 판별 : (학생번호, 지도교수)
함수 종속성 : 강좌시간 → 지도교수, (학생번호, 지도교수) → 강좌시간
잘 보면 강좌시간도 결정자지만 후보키는 아님. 이런 경우가 BCNF 정규형에 위배되는 케이스
학생번호
지도교수
강좌시간
101
Alice
09:00
102
Alice
09:00
103
Bob
13:00
35.무손실 분해
# 무손실 분해란
테이블을 분해할 때,원래의 데이터를 잃어버리지 않고 정확히 복원할 수 있게 분해한 것을 말함
무손실 분해를 만족하려면 공통 속성을 통해 나머지 속성을 유일하게 결정할 수 있어야 함
위 얘기들을 수학적으로 풀어쓰면 다음과 같음
무손실 분해 : 릴레이션 R을 R1, R2로 분해할 때 R1 ⋈ R2 = R (⋈ : Natural Join)