목차

models.py: 데이터베이스 스키마 정의

models.py 파일은 Dream of E&C 백엔드 애플리케이션에서 사용되는 모든 데이터의 구조와 관계를 정의하는 핵심적인 부분입니다. 이 파일은 SQLAlchemy ORM(객체 관계 매핑) 라이브러리를 활용하여 데이터베이스 테이블의 청사진을 파이썬 클래스 형태로 정의합니다. 각 모델 클래스는 SQLAlchemy의 db.Model을 상속받아 생성되며, 이를 통해 파이썬 객체를 데이터베이스 레코드와 매핑할 수 있게 됩니다.

여기서 정의된 각 파이썬 클래스는 데이터베이스 내의 개별 테이블을 나타내며, 클래스 내부에 선언된 변수들은 해당 테이블의 특정 컬럼(열)을 의미합니다. 이러한 정의를 통해 애플리케이션은 데이터베이스와 손쉽게 상호작용하고 데이터를 효율적으로 관리할 수 있습니다.


주요 모델

1) SiteInfo


2) Post

컬럼명 설명 데이터 타입
title 게시물의 제목을 저장합니다. 문자열
content 게시물의 본문 내용을 저장합니다. HTML 또는 마크다운 형식일 수 있습니다. 텍스트
author 게시물을 작성한 사용자의 이름을 저장합니다. 문자열
views 게시물의 총 조회수를 기록합니다. 게시물이 읽힐 때마다 증가합니다. 정수

* 관계: Post 모델은 Comment 모델과 '1:N'(일대다) 관계를 맺습니다. 이는 하나의 게시물이 여러 개의 댓글을 가질 수 있음을 의미하며, SQLAlchemy의 db.relationship 기능을 통해 이 관계가 정의됩니다. 이를 통해 특정 게시물에 속한 모든 댓글을 쉽게 조회할 수 있습니다.


3) Comment

컬럼명 설명 데이터 타입
author 댓글을 작성한 사용자의 이름을 저장합니다. 문자열
content 댓글의 본문 내용을 저장합니다. 텍스트
password 댓글 수정 또는 삭제 시 인증을 위해 사용되는, 해시(Hashed) 처리된 비밀번호입니다. 문자열
post_id 이 댓글이 속한 Post 모델의 기본 키(Primary Key)를 참조하는 외부 키(ForeignKey)입니다. 이를 통해 댓글과 게시물 간의 연결이 설정됩니다. 정수

* 참고: password 필드는 보안을 위해 반드시 해시 처리되어 저장되어야 합니다.


4) Ranking

컬럼명 설명 데이터 타입
nickname 게임을 플레이한 사용자의 고유한 닉네임을 저장합니다. 문자열
score 플레이어가 획득한 게임 점수를 저장합니다. 주로 고득점 순으로 랭킹이 매겨집니다. 정수
time 게임을 완료하는 데 걸린 시간을 저장합니다. 주로 빠른 시간 순으로 랭킹이 매겨집니다. 정수 (초 단위 등)

5) GameComment

컬럼명 설명 데이터 타입
author 방명록에 소감을 남긴 사용자의 이름을 저장합니다. 문자열
text 사용자가 남긴 소감 또는 메시지의 본문 내용을 저장합니다. 텍스트

이러한 모든 모델 클래스들은 메인 애플리케이션 파일인 app.py에서 임포트(Import)되어 사용됩니다. 애플리케이션의 API 엔드포인트들은 이 모델들을 활용하여 데이터베이스로부터 정보를 조회(읽기), 생성(쓰기), 업데이트(수정), 삭제(삭제)하는 모든 CRUD(Create, Read, Update, Delete) 작업을 수행합니다. 모델은 데이터 일관성과 무결성을 보장하며, 개발자가 복잡한 SQL 쿼리 없이도 파이썬 객체 지향 방식으로 데이터베이스와 상호작용할 수 있도록 돕습니다.