💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    정규화 문제 | ✅저자: 이유정(박사)

    📝 문제 1: 고객 주문 관리 시스템

    ❗ 문제점 분석

    1. 열(column)이 반복되고 있음
      • 주문상품1, 주문상품2 … → 상품이 많아지면 계속 열을 추가해야 함
      • 고객 정보와 상품 정보가 하나의 테이블에 섞여 있음
      • 상품에 대한 추가 정보(예: 카테고리)가 있다면?
    고객명 전화번호 주문상품1 주문상품2
    홍길동 010-1234-5678 키보드 마우스
    이영희 010-9876-5432 모니터 (비었음)
    ❌ 정규화 전 테이블 (초기 상태)

    1정규형 (1NF) – 반복 컬럼 제거

    2정규형 (2NF) – 부분 종속 제거 "고객명 / 전화번호"는 주문상품과 직접 관계 없음 → 따로 분리

    3정규형 (3NF) – "이행 종속 제거" 만약 주문상품이 특정 카테고리를 가지고 있다면?


    ✅ 정규화 단계별로 나누기

    ◽ 1정규형 (1NF) – 반복 컬럼 제거
    고객명 전화번호 주문상품
    홍길동
    홍길동
    이영희

    ◽ 2정규형 (2NF) – 부분 종속 제거 "고객명 / 전화번호"는 주문상품과 직접 관계 없음 → 따로 분리

    고객(Customer)
    고객ID 고객명 전화번호
    1
    2
    주문(Order)
    고객ID 주문상품
    1
    1
    2

    ◽ 3정규형 (3NF) – "이행 종속 제거" 만약 주문상품이 특정 카테고리를 가지고 있다면?

    상품명 카테고리
    상품(Product)
    상품명 카테고리
    주문(Order)
    고객ID 상품명
    1
    1
    2

    📝 문제 2: 회사 프로젝트 관리 시스템 ❗문제점 (정규화가 필요해요)

    • "참여프로젝트1", "참여프로젝트2"처럼 열(column)이 반복됨 → 프로젝트가 늘어나면 열이 계속 생겨야 해요 ❌
    • "부서명"은 직원과만 관련 있음 → 프로젝트와는 무관
    • "프로젝트명"이 속한 "프로젝트 분야" 같은 게 생긴다면 → 직원이 아닌 다른 컬럼을 통해 알 수 있음 → 이행 종속 발생
    ❌ 정규화 전 테이블 (초기 상태)
    직원명 부서명 참여프로젝트1 참여프로젝트2
    김대리 마케팅부 로고 리뉴얼 홈페이지 개선
    박과장 개발부 앱 개발

    1정규형 (1NF)

    2정규형 (2NF) 부서명은 직원과만 관련 있음 → 분리 필요 3정규형 (3NF) 프로젝트명이 속한 분야가 있다면 → 이행 종속 제거


    ◽ 1정규형 (1NF)
    직원명 부서명 프로젝트명
    김대리
    김대리
    박과장

    ◽ 2정규형 (2NF) 부서명은 직원과만 관련 있음 → 분리 필요

    Employee
    직원ID 직원명 부서명
    1
    2
    Participation
    직원ID 프로젝트명
    1
    1
    2

    ◽ 3정규형 (3NF) 프로젝트명이 속한 분야가 있다면 → 이행 종속 제거

    Project
    프로젝트명 분야
    TOP
    preload preload