MySQL에서 데이터베이스 정규화(Normalization)란 무엇인가요?
_____A: 정규화는 관계형 데이터베이스에서 데이터 중복을 최소화하고 무결성을 높이기 위해 테이블을 구조적으로 분해·조직화하는 설계 기법입니다. MySQL에서도 동일한 원리가 적용됩니다.
2. Q: 왜 데이터베이스 정규화가 필요한가요?
A:
- 중복 데이터 삭감으로 저장 공간 절약
- 데이터 일관성·무결성 강화
- 삽입·수정·삭제 이상(Anomaly) 방지
- 관리·유지보수 용이
3. Q: 정규화를 하면 얻을 수 있는 장점은 무엇인가요?
A:
- 삽입 이상(Insertion Anomaly), 수정 이상(Update Anomaly), 삭제 이상(Deletion Anomaly) 방지
- 쿼리의 예측 가능성·안정성 향상
- 스키마 변경 시 파급 효과 최소화
- 백업·복구 과정에서 신뢰성 확보
4. Q: 정규화의 단점이나 주의사항은 무엇인가요?
A:
- JOIN 연산 증가로 읽기 성능 저하 가능
- 지나친 정규화는 복잡성 증가
- 실시간 응답(RT)에 민감한 서비스에는 비정규화 고려 필요
5. Q: 제1정규형(1NF)이란 무엇인가요?
A:
- 모든 컬럼 값이 원자값(더 이상 분해 불가한 단일 값)으로 구성
- 반복 그룹·배열·리스트 형태의 컬럼 금지
- 예) phone_numbers 컬럼(“010-1111-2222,010-3333-4444”) 대신 별도 테이블로 분리
6. Q: 제2정규형(2NF)이란 무엇인가요?
A:
- 1NF를 만족
- 기본키가 복합키일 때, 부분 함수 종속(Composite Key의 일부 컬럼에만 종속) 제거
- 종속 속성을 별도 테이블로 분리
7. Q: 제3정규형(3NF)이란 무엇인가요?
A:
- 2NF를 만족
- 이행적 함수 종속(Non-key → Non-key) 제거
- 한 테이블 내에서 비키 속성들끼리 종속 관계가 없어야 함
8. Q: BCNF(보이스-코드 정규형)란 무엇인가요?
A:
- 3NF보다 엄격한 형태
- 모든 결정자가 후보키여야 함
- 복합키뿐 아니라 단일키라도 비후보키 종속을 제거
9. Q: 4NF, 5NF는 어떤 경우에 적용하나요?
A:
- 4NF: 다치 종속(Multi-valued Dependency) 제거
- 5NF: 조인 종속(Join Dependency) 제거
- 복잡한 다대다·여러 값 관계가 있는 경우에만 주로 적용
10. Q: MySQL에서 정규화 과정을 어떻게 수행하나요?
A:
1) 요구사항 분석·ERD 작성
2) 1NF → 2NF → 3NF 순차 적용
3) BCNF 이상 적용 필요 시 검토
4) DDL(SQL CREATE TABLE)로 스키마 정의
5) FOREIGN KEY 제약조건 활용해 참조 무결성 확보
11. Q: MySQL에서 제약조건(Foreign Key, Unique 등)은 어떻게 활용하나요?
A:
- FOREIGN KEY: 부모 테이블 PK와 자식 테이블 FK 연결
- UNIQUE: 중복 금지를 통한 후보키 역할
- NOT NULL, CHECK: NULL 허용 여부 및 값 범위 제한
- INDEX: 조인·검색 성능 보완
12. Q: 정규화와 비정규화(Denormalization)의 차이는 무엇인가요?
A:
- 정규화: 중복 최소화, 무결성 우선, 읽기 성능 저하 가능
- 비정규화: 중복 허용, 읽기 성능 우선, 무결성 관리 비용 증가
- 트래픽·쿼리 패턴에 따라 적절히 혼용
13. Q: 정규화된 테이블에서 JOIN이 많아지면 성능 저하가 우려됩니다. 어떻게 보완하나요?
A:
- 인덱스 최적화
- 필요한 컬럼만 SELECT
- 파티셔닝·샤딩
- 뷰(View)·머티리얼라이즈드 뷰 활용(MySQL 8.0+ 가상 컬럼 등)
- 캐싱 레이어 도입
14. Q: 실무에서 자주 겪는 정규화 관련 문제와 해결책은?
A:
- 문제: 중복 데이터로 업데이트 누락
해결: 정규화→참조 무결성 강화
- 문제: 쿼리 성능 이슈
해결: 부분 비정규화, 인덱스·캐시 추가
- 문제: 스키마 변경 시 복잡도
해결: 마이그레이션 툴( Flyway, Liquibase ) 사용
15. Q: 정규화 설계 시 유의할 점은 무엇인가요?
A:
- 도메인(데이터 성격) 우선 파악
- 변경 빈도·조회 패턴 고려
- 운영 환경 리소스(메모리, I/O) 예측
- 문서화·버전 관리 철저
16. Q: 정규화 후에도 추가로 관리해야 할 요소가 있나요?
A:
- 주기적 데이터 청소(주기적 검증·통계)
- 제약조건 위배 로그 분석
- 인덱스·통계 정보 갱신(ANALYZE TABLE)
- 스키마 리팩토링 주기적 검토
작성자:
정유진 [비회원]
| 작성일자: 1년 전
2024-09-20 08:05:24
조회수: 223 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 223 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.