Database 설계 실습 정리 - 장동욱 강사님 강의

2025. 3. 20. 19:06·특강

🚀 Database 설계 실습 정리 - 장동욱 강사님 강의

본 글은 MySQL Database 설계 실습 강의 내용을 정리한 자료입니다.
Amazon.com의 E-commerce 설계를 바탕으로 실전 Database 설계를 익혀봅니다. 🎯


📌 1. 3주 동안 Database 설계 과정

✅ 1주차: Database 설계 및 구현
✅ 2주차: Database 최적화 - 검색 시스템
✅ 3주차: 트랜잭션 - 주문 시스템


📌 2. Amazon.com 설계

여러분이 생각하는 도서 E-commerce란…?

  • E-commerce의 기본적인 요구사항
  • 사용자는 회원가입 후 로그인 가능해야 함

✅ Database 설계 시 고려할 사항

  • 영구적/반영구적으로 저장되어야 하는 데이터
  • 중복을 최소화하고 정규화를 적용

📌 3. 테이블 설계 기본 원칙

✅ 테이블을 만들 때 고려해야 할 사항

📌 명사(Noun) = 객체(Entity)

  • 객체가 지녀야 하는 속성도 논의해야 함
  • 예시
    • 학생 → 학번, 학부, 학년, 입학 연도, 이메일, 전화번호
    • 주문, 배송, 결제, 카테고리 등

📌 컬럼(Column)에는 중복된 데이터가 들어가면 안 된다?

  • 진위 여부: ❌ 완전히 틀린 말은 아님. 하지만 무조건 그런 것은 아님.
  • 설명:
    • 데이터 정규화(Normalization)를 통해 중복을 최소화하는 것이 원칙
    • 하지만 실무에서는 성능 최적화를 위해 일부 중복을 허용하기도 함
    • 예시:
      • 사용자 테이블과 주문 테이블의 주소 정보
        • 원칙적으로는 주소 테이블을 따로 만들어 정규화하는 것이 좋음
        • 하지만 성능 최적화를 위해 주문 테이블에 배송 주소를 중복 저장할 수도 있음

📌 4. 실전에서 Database 설계 경험을 쌓는 방법?

이론만으로는 어렵다!

  • 실무에서는 직접 부딪히며 경험을 통해 빠르게 습득
  • 실제 프로젝트를 직접 해보는 것이 가장 빠른 학습 방법

✅ 경험을 쌓을 수 있는 방법

1️⃣ 오픈 프로젝트 참여 (깃허브, 오픈소스 기여)
2️⃣ MySQL을 활용한 개인 프로젝트 진행
3️⃣ AI 추천 시스템과 연동하여 DB 설계 실습
4️⃣ 실제 E-commerce 사이트 모델링 & 구현
5️⃣ ChatGPT나 AI 툴을 활용하여 자동 ERD 생성 & 설계안 검토


📌 5. 테이블 간 관계 설정

📌 동사(Verb) = 관계(Relationship)

  • 객체(Entity) 간 관계 설정
  • 예시
    • 학생 → 강의를 수강한다.
    • 회원 → 장바구니를 소유한다. (회원당 장바구니 한 개, 종속적 관계)
    • 작가 → 도서를 여러 권 집필한다.

📌 동사를 꼭 쓰지 않아도 됨

  • 회원 - 장바구니 (회원이 장바구니를 갖고 있음)
  • 작가 - 도서 (작가는 여러 도서를 집필)

📌 6. Database 설계도 (ERD) 그리기

✅ 명사(Entity) → 테이블 (객체 정의)
✅ 동사(Relationship) → 테이블 간 관계 (FK 설정)


📌 7. ERD (Entity Relationship Diagram)란?

✅ 개발자는 IT 산업의 건축가
✅ ERD는 소프트웨어의 청사진 (설계도)

📌 ERD의 필요성

  1. 구현(시공) 전에 설계를 명확하게 정리
  2. 설계 단계에서 오류를 최소화하여 개발 비용 절감
  3. 신규 입사자, 인수인계 시 학습 비용 최소화
  4. 팀 내/부서 간 효과적인 커뮤니케이션 도구

📌 8. Database 설계도 작성 방법

📌 1) 손으로 직접 그리기 (화이트보드 사용)

  • 장점: 빠르게 아이디어를 정리 가능
  • 단점: 유지보수 어려움 (지우면 복구 불가)

📌 2) 온라인 툴 사용 (draw.io, ERDCloud)

  • 장점: ERD를 디지털 문서로 저장하여 관리 가능
  • 단점: 시간이 오래 걸릴 수 있음

📌 3) AI 활용하여 자동 생성 (추천)

  • 설계도 생성뿐만 아니라 설계 검토 가능
  • ERD를 코드(DSL)로 생성하여 문서화 가능
  • 주요 툴:
    • PlantUML → Java 기반 (복잡하지만 강력한 기능)
    • Mermaid.js → JavaScript 기반 (간단하고 빠른 시각화)

✅ Mermaid.js로 ERD 자동 생성 예제

mermaid
 
erDiagram
    MEMBER ||--|| CART : owns
    AUTHOR ||--o{ BOOK : writes
    PUBLISHER ||--o{ BOOK : publishes
    MEMBER ||--o{ BOOK : purchases
    MEMBER ||--o{ REVIEW : writes
    BOOK ||--o{ REVIEW : has
    CATEGORY ||--o{ BOOK : contains
    ORDER ||--o{ MEMBER : placed by
    ORDER ||--o{ BOOK : includes
    MEMBER ||--|| ADDRESS : has
    BOOK ||--|{ DELIVERY : shipped via

✅ 설명

  • MEMBER ||--|| CART : owns → 회원은 장바구니를 소유
  • AUTHOR ||--o{ BOOK : writes → 작가는 도서를 여러 권 집필
  • CATEGORY ||--o{ BOOK : contains → 카테고리는 여러 도서를 포함
  • ORDER ||--o{ BOOK : includes → 주문은 여러 개의 도서를 포함 가능

📌 9. ERD 설계도를 활용한 개발 프로세스

📌 설계도를 기반으로 개발 프로세스를 진행
1️⃣ Component Diagram → 시스템/서비스 단위 설계
2️⃣ Sequence Diagram → 서버 사이드에서 처리 순서
3️⃣ Class Diagram → 객체 지향 설계 (클래스/메소드 포함)
4️⃣ Database 설계 → ERD 기반 테이블 구조 정의


✅ 마무리 및 정리

✅ Database 설계는 개발의 필수 요소!
✅ 설계도를 통해 유지보수성과 확장성을 고려하여 구축해야 함
✅ ERD, UML 등의 도구를 활용하여 효율적인 설계를 진행
✅ AI와 자동화 툴을 활용하면 보다 빠르고 정확한 설계 가능

'특강' 카테고리의 다른 글

Database Amazon 검색 시스템 구축 - 장동욱 강사님 강의  (0) 2025.03.27
Database Erd 및 관계형 데이터베이스 모델링 쉽게 이해하기- 장동욱 강사님 강의(250325)  (0) 2025.03.25
Database - 파머 강사님 강의(250321)  (0) 2025.03.21
백엔드 개발 및 SQL 전문성 향상  (0) 2025.03.18
Database - 데이터베이스란? DBMS? RDBMS?스키마?  (0) 2025.03.18
'특강' 카테고리의 다른 글
  • Database Erd 및 관계형 데이터베이스 모델링 쉽게 이해하기- 장동욱 강사님 강의(250325)
  • Database - 파머 강사님 강의(250321)
  • 백엔드 개발 및 SQL 전문성 향상
  • Database - 데이터베이스란? DBMS? RDBMS?스키마?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    life reflection
    btsdischarge
    urbantrends
    hotcoffeecase
    chinanightlife
    btsreunion
    btsjungkook
    smartphonedurability
    titaniumcase
    americaparty
    self-growth
    remittance
    youngprofessionals
    global politics
    americanlaw
    newpoliticalparty
    lawsuitculture
    뷔
    chatgpterror
    livebroadcast
    college reunions
    travel ban
    bts
    RM
    trumpmuskclash
    btscomeback
    homebartrend
    basalcellcarcinoma
    gpterror
    classaction
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Database 설계 실습 정리 - 장동욱 강사님 강의
상단으로

티스토리툴바