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 /enrollAPI를 만들어 학생과 강의 연결하기. - 최종 검증:
- Swagger UI에서 신청 버튼 클릭.
- MySQL Workbench에서 데이터가 실시간으로 쌓이는지 쿼리로 확인.
- 서버를 껐다 켜도 내 수강 내역이 남아있는지 확인.
📋 5부 핵심 성과물 (Deliverables)
| 단계 | 산출물 | 평가 포인트 |
|---|---|---|
| 기획 | Class Diagram | 시스템의 논리적 구조를 완벽히 이해했는가? |
| 설계 | ERD (Workbench) | 테이블 간의 관계(FK)와 제약 조건을 정확히 설정했는가? |
| 구현 | FastAPI + DB App | 실제 데이터가 영구적으로 저장되고 조회되는가? |
"여러분의 서비스가 '기억'을 가지는 순간, 단순한 계산기가 아니라 사용자의 삶을 기록하는 플랫폼으로 진화합니다."