사용자 도구

사이트 도구


wiki:it:dream_of_enc:backend:models

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

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

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


주요 모델

1) SiteInfo

  • 설명: 이 모델은 웹사이트 전반에 걸친 다양한 설정 정보와 메타데이터를 저장하는 데 사용됩니다. 예를 들어, 웹사이트의 총 방문자 수, 관리자 연락처 정보, 또는 특정 기능의 활성화 여부와 같은 동적인 설정 값들을 효율적으로 관리할 수 있습니다. 이는 애플리케이션 재배포 없이도 설정 변경이 가능하게 합니다.
  • 주요 컬럼:
    • key: 설정 항목의 고유한 이름을 나타내는 문자열입니다. 이 컬럼은 데이터베이스 내에서 중복될 수 없는 고유값(Unique) 제약 조건을 가집니다.
    • value: 해당 key에 연결된 실제 설정 값을 저장하는 문자열입니다. 이 값은 필요에 따라 다양한 형식(예: 숫자, JSON 문자열)으로 해석될 수 있습니다.

2) Post

  • 설명: 이 모델은 블로그 섹션의 개별 게시물 데이터를 체계적으로 저장하고 관리합니다. 각 인스턴스는 하나의 블로그 게시물을 나타내며, 제목, 내용, 작성자, 조회수 등 게시물에 필요한 핵심 정보를 포함합니다.
  • 주요 컬럼:
컬럼명 설명 데이터 타입
title 게시물의 제목을 저장합니다. 문자열
content 게시물의 본문 내용을 저장합니다. HTML 또는 마크다운 형식일 수 있습니다. 텍스트
author 게시물을 작성한 사용자의 이름을 저장합니다. 문자열
views 게시물의 총 조회수를 기록합니다. 게시물이 읽힐 때마다 증가합니다. 정수

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


3) Comment

  • 설명: 이 모델은 Post 모델에 연결된 댓글 데이터를 저장하는 데 사용됩니다. 각 댓글은 특정 블로그 게시물에 대한 사용자의 의견이나 피드백을 나타냅니다. 비밀번호를 통해 댓글 작성자만 자신의 댓글을 수정하거나 삭제할 수 있도록 보안을 강화했습니다.
  • 주요 컬럼:
컬럼명 설명 데이터 타입
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 쿼리 없이도 파이썬 객체 지향 방식으로 데이터베이스와 상호작용할 수 있도록 돕습니다.

wiki/it/dream_of_enc/backend/models.txt · 마지막으로 수정됨: 저자 syjang0803

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki