본문 바로가기
개발자 면접 질문

IT 면접 질문 – 데이터베이스 정규화(Normalization)란?

by 개발자 굳덜이 2025. 2. 5.
반응형

데이터베이스 설계에서 정규화(Normalization)는 필수 개념이에요.

IT 면접에서도 자주 출제되는 만큼, 오늘은 정규화의 개념과 면접에서 받을 수 있는 질문을 정리해 볼게요! 😊

1. 데이터베이스 정규화란?

정규화(Normalization)데이터 중복을 최소화하고, 데이터 무결성을 보장하며, 데이터베이스의 효율성을 높이는 과정이에요.

잘못된 데이터 구조로 인해 발생하는 삽입, 갱신, 삭제 이상(Anomaly)을 방지할 수 있어요.

 

정규화의 핵심 목표

데이터 중복 제거: 불필요한 데이터 반복을 없앰

데이터 무결성 보장: 데이터의 일관성을 유지

데이터베이스 성능 최적화: 저장공간을 절약하고 쿼리 성능 향상

2. 정규화의 주요 단계(Normal Forms, NFs)

 

정규화는 여러 단계로 진행되며, 각 단계는 특정한 문제를 해결해요.

각 정규형을 쉽게 이해할 수 있도록 간단한 예제를 들어볼게요.

 

🔹 제1정규형(1NF) – 원자값(Atomic Value) 보장

 

✔️ 조건: 모든 컬럼의 값이 **원자값(Atomic Value)**이어야 해요.

✔️ 예시

고객ID고객명연락처

1 홍길동 010-1234-5678, 02-987-6543

💡 문제점: 연락처가 하나의 셀에 여러 개 들어가 있어요.

👉 1NF 변환:

고객ID고객명연락처

1 홍길동 010-1234-5678
1 홍길동 02-987-6543

🔹 제2정규형(2NF) – 부분 함수적 종속 제거

 

✔️ 조건: 1NF를 만족하면서, **부분 함수적 종속(Partial Dependency)**이 없어야 해요.

✔️ 예시

주문ID고객ID고객명제품명

1001 1 홍길동 노트북

💡 문제점: 고객명은 주문ID에 종속되지 않고 고객ID에만 종속돼요.

👉 2NF 변환:

1. 주문 테이블

| 주문ID | 고객ID | 제품명 |

|––––|––––|––––|

| 1001   | 1      | 노트북 |

2. 고객 테이블

| 고객ID | 고객명 |

|––––|––––|

| 1      | 홍길동 |

🔹 제3정규형(3NF) – 이행적 종속 제거

 

✔️ 조건: 2NF를 만족하면서, **이행적 종속(Transitive Dependency)**이 없어야 해요.

✔️ 예시

고객ID고객명우편번호주소

1 홍길동 12345 서울 강남구

💡 문제점: 우편번호가 주소에 종속되어 있어요.

👉 3NF 변환:

1. 고객 테이블

| 고객ID | 고객명 | 우편번호 |

|––––|––––|––––|

| 1      | 홍길동 | 12345 |

2. 우편번호 테이블

| 우편번호 | 주소 |

|––––|––––|

| 12345  | 서울 강남구 |

🔹 BCNF(Boyce-Codd Normal Form) – 후보 키가 아닌 결정자 제거

 

✔️ 조건: 3NF를 만족하면서 모든 결정자가 후보 키여야 해요.

✔️ 예시

3NF에서는 후보 키가 아닌 결정자가 존재할 수도 있는데, BCNF에서는 이를 제거해야 해요.

🔹 제4정규형(4NF) – 다치 종속 제거

 

✔️ 조건: 3NF를 만족하면서, **다치 종속(Multivalued Dependency)**을 제거해야 해요.

✔️ 예시

한 고객이 여러 개의 연락처와 이메일을 가지고 있을 경우, 이를 별도 테이블로 분리해요.

3. 면접에서 자주 묻는 질문

 

면접에서 정규화에 대한 개념을 물어보는 경우가 많아요.

다음 질문들을 연습해 보면 좋아요! 😊

 

🔹 기본 개념 질문

데이터베이스 정규화란 무엇이며, 왜 필요한가요?

1NF, 2NF, 3NF의 차이점을 설명해 주세요.

 

🔹 응용 질문

정규화의 장점과 단점은 무엇인가요?

정규화와 반정규화(Denormalization)의 차이점은 무엇인가요?

언제 반정규화를 적용하는 것이 유리한가요?

4. 실전 답변 예시

 

📌 Q: 3NF와 BCNF의 차이점은 무엇인가요?

📌 A: 3NF는 이행적 종속을 제거하여 데이터 중복을 방지하지만, 결정자가 반드시 후보 키일 필요는 없어요.

반면, BCNF는 모든 결정자가 후보 키가 되어야 한다는 점에서 더 엄격한 정규형이에요.

 

📌 Q: 반정규화(Denormalization)는 언제 사용하나요?

📌 A: 반정규화는 성능 최적화가 필요할 때 사용돼요.

예를 들어, JOIN 연산이 너무 많아 속도가 느려지는 경우, 일부 데이터를 중복 저장하여 성능을 개선할 수 있어요.

 

5. 면접 준비 팁

✔️ ERD(Entity-Relationship Diagram)를 그려서 정규화를 직접 연습해 보세요.

✔️ SQL 예제를 작성해 보고, 실제 정규화 과정을 실습해 보세요.

✔️ 정규화와 반정규화의 실제 사례를 찾아보고, 프로젝트에 적용할 수 있는 방법을 고민해 보세요.

 

💡 다음 면접 준비 포스트에서는

👉 “트랜잭션(Transaction)과 ACID 원칙”에 대해 다뤄볼 예정이에요! 🚀

반응형

댓글