[DB] 4. 데이터베이스 설계와 정규화
1. 데이터베이스 설계의 중요성
💡 데이터베이스 설계가 왜 중요한지, 잘못된 설계가 어떤 문제를 일으킬 수 있는지 설명할 수 있어야 합니다!
1.1 좋은 데이터베이스 설계의 특징
- 데이터 중복 최소화
- 데이터 일관성 보장
- 데이터 무결성 유지
- 효율적인 검색과 수정
1.2 데이터베이스 설계 단계
- 요구사항 분석
- 사용자 요구사항 수집
- 데이터 항목 정의
- 개념적 설계
- ERD 작성
- 엔티티와 관계 정의
- 논리적 설계
- 테이블 정의
- 정규화 수행
- 물리적 설계
- 저장 구조 결정
- 인덱스 설계
2. ERD(Entity Relationship Diagram)
2.1 ERD의 기본 요소
- 엔티티(Entity)
- 사각형으로 표현
- 예: 학생, 과목, 교수
- 관계(Relationship)
- 마름모로 표현
- 예: 수강하다, 가르치다
- 속성(Attribute)
- 타원으로 표현
- 예: 학번, 이름, 학과
2.2 관계의 종류
- 1:1 관계
- 예: 학생 ↔ 학생증
- 1:N 관계
- 예: 학과 ↔ 학생
- N:M 관계
- 예: 학생 ↔ 과목
2.3 ERD 작성 예시
[이미지: 학사관리 시스템의 완성된 ERD 예시]
3. 정규화(Normalization)
3.1 정규화의 필요성
💡 정규화가 필요한 이유와 각 정규형의 특징을 설명할 수 있어야 합니다!
정규화는 데이터베이스의 논리적 설계 단계에서 수행하는 중요한 작업으로, 다음과 같은 목적이 있습니다:
- 데이터 중복 제거
- 데이터 일관성 유지
- 갱신 이상 방지
- 데이터 구조의 안정성 확보
3.2 이상현상(Anomaly)
💡 이상현상의 종류와 예시를 들어 설명할 수 있어야 합니다!
- 삽입 이상(Insertion Anomaly)
- 정의: 데이터 삽입 시 원하지 않는 데이터도 함께 삽입해야 하는 문제
- 예시: 첫 수강생이 없는 새로운 과목을 추가할 수 없음
- 삭제 이상(Deletion Anomaly)
- 정의: 데이터 삭제 시 원치 않는 데이터도 함께 삭제되는 문제
- 예시: 학생 정보를 삭제하면 해당 과목의 정보도 모두 삭제됨
- 수정 이상(Update Anomaly)
- 정의: 데이터 수정 시 일부만 수정되어 일관성이 깨지는 문제
- 예시: 교수 정보 변경 시 여러 레코드를 수정해야 함
3.3 정규화 단계
3.3.1 제1정규형(1NF)
💡 핵심 개념: 모든 속성의 도메인이 원자값으로만 구성
- 조건: 모든 속성이 원자값을 가져야 함
- 복수의 값을 가지는 속성을 분리
- 반복되는 그룹 제거
예시:
-- 정규화 전
학생테이블(학번, 이름, 전화번호(집,휴대폰))
-- 정규화 후
학생테이블(학번, 이름)
전화번호테이블(학번, 전화번호유형, 전화번호)
[이미지: 1NF 정규화 과정 예시 다이어그램]
3.3.2 제2정규형(2NF)
💡 핵심 개념: 부분적 함수 종속 제거
- 조건: 1NF이며 모든 비주요 속성이 주요 속성에 완전 함수적 종속
- 부분적 종속을 분리하여 새로운 테이블 생성
예시:
-- 정규화 전
수강테이블(학번, 과목코드, 학생이름, 과목명, 성적)
-- 정규화 후
학생테이블(학번, 학생이름)
과목테이블(과목코드, 과목명)
수강테이블(학번, 과목코드, 성적)
[이미지: 2NF 정규화 과정과 부분 함수 종속성 제거 예시]
3.3.3 제3정규형(3NF)
💡 핵심 개념: 이행적 함수 종속 제거
- 조건: 2NF이며 비주요 속성들 간의 이행적 종속성이 없어야 함
- 이행적 종속성을 분리하여 새로운 테이블 생성
예시:
-- 정규화 전
학생테이블(학번, 이름, 학과코드, 학과명, 학과장)
-- 정규화 후
학생테이블(학번, 이름, 학과코드)
학과테이블(학과코드, 학과명, 학과장)
[이미지: 3NF 정규화 과정과 이행적 종속성 제거 예시]
3.4 정규화 실습 예제
비정규화 상태의 테이블:
수강관리(학번, 학생이름, 학과, 과목코드, 과목명, 교수이름, 강의실, 성적)
단계별 정규화 과정:
[이미지: 단계별 정규화 과정을 보여주는 다이어그램]
- 1NF 적용
- 2NF 적용
- 3NF 적용
3.5 BCNF와 고차 정규형
- BCNF (Boyce-Codd Normal Form)
- 4NF (Fourth Normal Form)
- 5NF (Fifth Normal Form)
💡 실무에서는 대부분 3NF까지만 고려합니다.
4.2 성능을 고려한 정규화
💡 정규화와 성능의 관계를 설명할 수 있어야 합니다!
- 과도한 정규화의 문제점
- 적절한 반정규화 시점
- 성능 최적화 전략
댓글남기기