제3정규형 (3NF) & Foreign Key

윤빈·2026년 1월 25일

SQL & Database

목록 보기
9/25

제3정규형(3rd normal form)

제2정규형을 만족하는 테이블에서 primary key나 composition primary key 컬럼에 종속되는 것이 아닌
하찮은 잔챙이 컬럼에 종속된 컬럼을 다른 테이블로 빼면
그것이 제3정규형 테이블이다.


위 사진은 제2정규형 테이블이고 primary key는 '프로그램'이다.

근데 '출신대학' 컬럼은 primary key와 관련없고 잔챙이 컬럼인 '강사'와 관련이 있다.
이 경우에 '출신대학' 컬럼을 다른 테이블로 빼면 제3정규형을 만족하는 테이블 완성이다.


만약 박덕팔이 학벌세탁으로 인해 출신대학이 달라지면
한 곳만 수정하면 된다.

제3정규형 심화버전

제2정규형 테이블에서 transitive dependency도 제거하면 그것이 제3정규형이다.
(transitive는 A>B이고 B>C이면 A>C가 성립되는 관계)

1. composition primary key 또는 primary key 역할을 하는 컬럼이 있고
2. 거기에 종속된 컬럼A가 있고
3. 또 거기에 직접 종속된 하찮은 컬럼B가 있으면
컬럼B가 primary key 컬럼에 transitive dependency가 있다고 표현한다.
그래서 그 컬럼B를 다른 테이블로 옮기면 제3정규형을 만족하는 테이블이 된다.

primary key, foreign key

정규화하려고 테이블을 쪼갤 때가 많은데 그 경우 주의점은
1. 테이블마다 항상 primary key 역할을 하는 id 컬럼을 넣어주기

2. 다른 테이블에 있는 컬럼내용을 가져다쓸 때도 primary key를 사용하기

체육센터 프로그램 table에서 강사 이름을 그대로 적는 것 보단 강사의 id를 적는 것이 좋다.
이러면 나중에 동명이인 강사가 생겨도 구분할 수 있기 때문이다.

저기서 강사id 컬럼을 foreign key라고 한다.
다른 테이블에 있던 primary key를 다른 테이블에 사용할 때는 foreign key라고 부른다.

profile
취준하려면 이런건하나씩있어야한다길래

0개의 댓글