콘텐츠로 이동

5부. 기억하는 웹 (Database & Architecture)

"기획(Class) → 설계(ERD) → 구축(DB) → 연결(App)" 데이터의 생애주기를 직접 경험하며, 4부에서 배운 FastAPI를 수강 신청 시스템으로 확장합니다.


🏫 Visible Thinking: 데이터의 생애주기

graph LR
    subgraph "1. 기획 (Plan)"
    Class["� 클래스 다이어그램"] --> |"주인공 정의"| Logic["Student, Teacher, Course"]
    end

    subgraph "2. 설계 (Design)"
    ERD["�️ ERD"] --> |"관계/제약 설정"| Tables["Workbench에서 설계"]
    end

    subgraph "3. 구축 (Build)"
    SQL["� Forward Engineering"] --> |"SQL 생성"| DB["MySQL 서버"]
    end

    subgraph "4. 연결 (Connect)"
    ORM["🐍 SQLAlchemy"] --> |"App ↔ DB"| API["FastAPI"]
    end

    Logic --> ERD
    Tables --> SQL
    DB --> ORM

    style API fill:#f9f,stroke:#333,stroke-width:2px

📋 목차

01. 데이터베이스: 영구적인 창고 (Persistent Storage)

"변수는 도마 위의 재료이고, DB는 냉장고 속의 식재료입니다."

  • RAM vs Disk: 서버를 재시작해도 데이터가 유지되어야 하는 이유.
  • 비즈니스 자산: 데이터 누락이 서비스 신뢰도에 미치는 영향.
  • RDBMS의 원리: 엑셀처럼 보이지만 훨씬 엄격한 '관계형 데이터베이스' 이해하기.
  • SQLite: 가벼운 로컬 파일 DB로 첫 걸음 떼기.

02. 논리 설계: 클래스 다이어그램 (Logic Design)

"코드를 짜기 전, 우리 시스템의 주인공들을 정의합니다."

  • 객체 추출: 수강 신청 시스템의 3대 요소 (Student, Teacher, Course).
  • 관계의 종류:
    • 1:N (일대다): 한 명의 강사는 여러 강의를 담당한다.
    • N:M (다대다): 학생과 강의의 복잡한 수강 신청 관계.
  • 실습: AI와 협업하여 시스템의 논리 구조를 Mermaid 다이어그램으로 시각화하기.

03. [실습] MySQL 설치와 DB 생성 (MySQL Setup)

"이론은 끝났다. 진짜 데이터베이스를 컴퓨터에 설치해보자!"

  • MySQL 설치: 세계에서 가장 많이 쓰는 오픈소스 DB 설치하기 (Mac/Windows).
  • Workbench 연결: GUI 도구로 내 컴퓨터의 DB 서버에 접속하기.
  • Schema 생성: 우리만의 데이터 창고 clapcampus 만들기.

04. 데이터 통역사: SQL & ORM (Communication)

"파이썬과 데이터베이스의 대화법"

  • SQL 기초: SELECT, INSERT 등 DB에게 직접 명령 내리기.
  • SQLAlchemy: 파이썬 클래스와 DB 테이블을 1:1로 매핑(Mapping)하기.
  • AI 쿼리 메이커: 복잡한 JOIN 쿼리를 AI에게 부탁하고 Workbench에서 검증하기.

05. 실전 프로젝트: 수강 신청 시스템 완성 (Implementation)

"설계도가 실제 작동하는 서비스가 되는 순간"

  • Backend 연동: 4부에서 만든 FastAPI 서버에 DB 연결 엔진(Engine) 장착하기.
  • 수강 신청 로직: POST /enroll API를 만들어 학생과 강의 연결하기.
  • 최종 검증:
    1. Swagger UI에서 신청 버튼 클릭.
    2. MySQL Workbench에서 데이터가 실시간으로 쌓이는지 쿼리로 확인.
    3. 서버를 껐다 켜도 내 수강 내역이 남아있는지 확인.

📋 5부 핵심 성과물 (Deliverables)

단계 산출물 평가 포인트
기획 Class Diagram 시스템의 논리적 구조를 완벽히 이해했는가?
설계 ERD (Workbench) 테이블 간의 관계(FK)와 제약 조건을 정확히 설정했는가?
구현 FastAPI + DB App 실제 데이터가 영구적으로 저장되고 조회되는가?

"여러분의 서비스가 '기억'을 가지는 순간, 단순한 계산기가 아니라 사용자의 삶을 기록하는 플랫폼으로 진화합니다."