백엔드 기초집: Python FastAPILESSON 13
데이터베이스와 ORM의 역할
난이도초급
예상 시간35분
선수지식이전 강의
13강. 데이터베이스와 ORM의 역할
1. 이번 강의에서 해결할 문제
메모리 목록은 서버가 재시작되면 사라지고 여러 요청의 동시 변경을 안전하게 다루기 어렵습니다. 관계형 데이터베이스에 저장할 구조를 설계합니다.
2. 학습 목표
3. 핵심 개념
관계형 DB는 데이터를 테이블에 저장하고 제약으로 일관성을 지킵니다. 기본키는 행을 식별하고 외래키는 테이블 관계를 표현합니다. 트랜잭션은 여러 변경을 한 작업으로 commit하거나 실패 시 rollback합니다. ORM은 Python 객체와 SQL 행을 매핑하지만 DB 설계와 쿼리 이해를 없애지는 않습니다.
4. 단계별 코드 예시
파일 경로: game-ranking-api/docs/data-model.md
docs/data-model.md
## users
- id: integer primary key
- username: unique text
- password_hash: text
- role: text, 기본값 user
## game_records
- id: integer primary key
- user_id: foreign key -> users.id
- game_name: text
- score: integer, 0 이상
- created_at: UTC datetime
관계: user 1명은 game_record 여러 개를 가진다.
랭킹: game_name별 최고 score를 내림차순 집계한다.
파일 경로: game-ranking-api/docs/transaction-example.sql
docs/transaction-example.sql
BEGIN;
INSERT INTO game_records (user_id, game_name, score)
VALUES (1, 'Rule Break', 1200);
COMMIT;
실행 위치: game-ranking-api/
Get-Content docs/data-model.md
Get-Content docs/transaction-example.sql
git add docs
git commit -m "docs: design game ranking data model"
5. 코드가 동작하는 이유
사용자와 기록을 분리하면 사용자 정보가 기록마다 중복되지 않습니다. user_id가 소유자를 연결하고 unique username이 계정 중복을 막습니다. 트랜잭션 경계는 기록 한 건의 생성이 완전히 반영되거나 전혀 반영되지 않게 합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2데이터베이스와 ORM의 역할 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
13강. 데이터베이스와 ORM의 역할 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.