2 분 소요

1. 데이터베이스 설계의 중요성

💡 데이터베이스 설계가 왜 중요한지, 잘못된 설계가 어떤 문제를 일으킬 수 있는지 설명할 수 있어야 합니다!

1.1 좋은 데이터베이스 설계의 특징

  • 데이터 중복 최소화
  • 데이터 일관성 보장
  • 데이터 무결성 유지
  • 효율적인 검색과 수정

1.2 데이터베이스 설계 단계

  1. 요구사항 분석
    • 사용자 요구사항 수집
    • 데이터 항목 정의
  2. 개념적 설계
    • ERD 작성
    • 엔티티와 관계 정의
  3. 논리적 설계
    • 테이블 정의
    • 정규화 수행
  4. 물리적 설계
    • 저장 구조 결정
    • 인덱스 설계

2. ERD(Entity Relationship Diagram)

2.1 ERD의 기본 요소

ERD

  1. 엔티티(Entity)
    • 사각형으로 표현
    • 예: 학생, 과목, 교수
  2. 관계(Relationship)
    • 마름모로 표현
    • 예: 수강하다, 가르치다
  3. 속성(Attribute)
    • 타원으로 표현
    • 예: 학번, 이름, 학과

2.2 관계의 종류

  1. 1:1 관계
    • 예: 학생 ↔ 학생증
  2. 1:N 관계
    • 예: 학과 ↔ 학생
  3. N:M 관계
    • 예: 학생 ↔ 과목

2.3 ERD 작성 예시

[이미지: 학사관리 시스템의 완성된 ERD 예시]

3. 정규화(Normalization)

3.1 정규화의 필요성

💡 정규화가 필요한 이유와 각 정규형의 특징을 설명할 수 있어야 합니다!

정규화는 데이터베이스의 논리적 설계 단계에서 수행하는 중요한 작업으로, 다음과 같은 목적이 있습니다:

  • 데이터 중복 제거
  • 데이터 일관성 유지
  • 갱신 이상 방지
  • 데이터 구조의 안정성 확보

3.2 이상현상(Anomaly)

💡 이상현상의 종류와 예시를 들어 설명할 수 있어야 합니다!

  1. 삽입 이상(Insertion Anomaly)
    • 정의: 데이터 삽입 시 원하지 않는 데이터도 함께 삽입해야 하는 문제
    • 예시: 첫 수강생이 없는 새로운 과목을 추가할 수 없음
  2. 삭제 이상(Deletion Anomaly)
    • 정의: 데이터 삭제 시 원치 않는 데이터도 함께 삭제되는 문제
    • 예시: 학생 정보를 삭제하면 해당 과목의 정보도 모두 삭제됨
  3. 수정 이상(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 정규화 실습 예제

비정규화 상태의 테이블:

수강관리(학번, 학생이름, 학과, 과목코드, 과목명, 교수이름, 강의실, 성적)

단계별 정규화 과정:

[이미지: 단계별 정규화 과정을 보여주는 다이어그램]

  1. 1NF 적용
  2. 2NF 적용
  3. 3NF 적용

3.5 BCNF와 고차 정규형

  • BCNF (Boyce-Codd Normal Form)
  • 4NF (Fourth Normal Form)
  • 5NF (Fifth Normal Form)

💡 실무에서는 대부분 3NF까지만 고려합니다.

4.2 성능을 고려한 정규화

💡 정규화와 성능의 관계를 설명할 수 있어야 합니다!

  • 과도한 정규화의 문제점
  • 적절한 반정규화 시점
  • 성능 최적화 전략

댓글남기기