← Back to Blog
[데이터베이스] 관계DB 설계
computer science > database
2026-05-303 min read
#Computer Science #Database
관계 데이터베이스에서 정확하게 보면 6단계이지만,
일반적으로 4단계 정도면 설명 가능하다.
- 1NF
- 2NF
- 3NF
- 3.5NF (BCNF)
- 4NF
- 5NF
정규화 1단계로 갈 수록 제약조건이 약하고, 3.5단계로 갈 수록 제약조건이 강하다.
1NF (제1정규형)
조건
- 모든 속성이 원자값(Atomic Value)을 가짐
즉, 하나의 칸에 하나의 값만 저장되어야 한다.
정규화 전
| 학번 | 이름 | 전화번호 |
|---|
| 1001 | 김민섭 | 010-1234, 010-5678 |
1NF 후
| 학번 | 이름 | 전화번호 |
|---|
| 1001 | 김민섭 | 010-1234 |
| 1001 | 김민섭 | 010-5678 |
2NF (제2정규형)
조건
- 1NF 만족
- 모든 일반 속성이 기본키 전체에 완전 함수 종석
부분 함수 종속 제거
예를 들어,
| 학생ID | 과목ID | 학생이름 | 과목이름 |
|---|
| 1 | DB | 민섭 | 데이터베이스 |
| 1 | OS | 민섭 | 운영체제 |
기본키
(학번, 과목코드)
하나,
학번 --> 학생명
과목코드 --> 과목명
이 성립한다.
즉 키의 일부에만 종속된다.
분해
학생
과목
수강
3NF (제3정규형)
조건
- 2NF 만족
- 이행적 함수 종속 제거(기본키 말고 다른 값들에 대해서 종속성 없앰)
여기서 부터 2NF랑 엄청 헷갈리는데 간단하게 짚어보면,
2NF는 기본키에 대해서만 종속성 문제를 해결하고,
3NF는 기본키를 포함해서 모든 값에 대해 종속성 문제를 해결한다.
이행적 함수 종속 제거
학번 --> 학과코드
학과코드 --> 학과명
분해
학생
학과
3.5NF (BCNF, Boyce-Codd Normal Form)
조건
예시
규칙
교수 --> 강의실
과목 --> 강의실
후보키
(교수, 과목)
인데
교수 --> 강의실
에서 교수는 후보가 아니다.
따라서 BCNF 위반이다.
Closure of Functional Dependencies
함수 종속의 집합 F 가 있다고 하자.
모든 함수 종속성들이 F 에 의해 적용될 때 F+ 라 할 수 있다.
Armstrong's Axioms
-
if β⊆α, then α→β(reflexivity)
-
if α→β, then γα→γβ(augmentation)
-
if α→β, and β→γ, then α→γ(transitivity)
Additional Rules
-
if α→β, and α→γ, then α→βγ(union)
-
if α→βγ, then α→β, and α→γ(decomposition)
-
if α→β, and γβ→δ, then αγ→δ(pseudotransitivity)