FSRS 알고리즘에 필요한 주요 데이터
FSRS 알고리즘의 핵심 데이터는 다음과 같습니다:
기본 테이블 활용 가능성
기본 테이블 중 일부는 FSRS와 관련된 데이터를 저장하는 데 재활용할 수 있습니다.
g5_member
: 사용자 정보
g5_write_*
: 카드 정보
g5_write_*
)을 학습 카드 저장용으로 재활용할 수 있습니다.wr_subject
)과 내용(
wr_content
) 필드를 질문과 답변으로 활용.g5_point
: 포인트 시스템
새로운 테이블 설계가 필요한 경우
FSRS는 기존 테이블만으로 구현하기 어려운 데이터 구조를 요구할 수 있습니다. 다음과 같은 새 테이블을 고려해야 합니다.
학습 카드를 저장하고 관리하는 테이블입니다.
CREATE TABLE fsrs_cards (card_id INT AUTO_INCREMENT PRIMARY KEY, -- 고유 카드 IDmb_id VARCHAR(50) NOT NULL, -- 사용자 ID (g5_member 참조)question TEXT NOT NULL, -- 질문 내용answer TEXT NOT NULL, -- 답변 내용tags VARCHAR(255), -- 태그 (쉼표로 구분)created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 생성 시간);복습 스케줄 테이블
FSRS 알고리즘에 따라 각 카드의 복습 일정을 관리합니다.
CREATE TABLE fsrs_schedules (schedule_id INT AUTO_INCREMENT PRIMARY KEY, -- 고유 IDcard_id INT NOT NULL, -- 카드 ID (fsrs_cards 참조)mb_id VARCHAR(50) NOT NULL, -- 사용자 ID (g5_member 참조)next_review_date DATE NOT NULL, -- 다음 복습 날짜interval_days INT NOT NULL, -- 현재 간격 (일 단위)difficulty FLOAT NOT NULL, -- 카드의 난이도last_reviewed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 마지막 복습 시간);
학습 기록 테이블
사용자의 학습 기록(복습 성공/실패)을 저장합니다.
CREATE TABLE fsrs_reviews (review_id INT AUTO_INCREMENT PRIMARY KEY, -- 고유 IDcard_id INT NOT NULL, -- 카드 ID (fsrs_cards 참조)mb_id VARCHAR(50) NOT NULL, -- 사용자 ID (g5_member 참조)review_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 복습 날짜 및 시간review_result TINYINT NOT NULL, -- 복습 결과 (1=성공, 0=실패)response_time FLOAT NOT NULL -- 응답 시간 (초 단위));
사용자 설정 테이블
사용자별로 FSRS 알고리즘의 파라미터나 학습 환경 설정을 저장합니다.
CREATE TABLE fsrs_user_settings (setting_id INT AUTO_INCREMENT PRIMARY KEY, -- 고유 IDmb_id VARCHAR(50) NOT NULL, -- 사용자 ID (g5_member 참조)initial_interval INT DEFAULT 1, -- 초기 간격 (일 단위)easy_multiplier FLOAT DEFAULT 1.3, -- 쉬움 난이도 배수hard_multiplier FLOAT DEFAULT 0.8, -- 어려움 난이도 배수max_interval INT DEFAULT 365 -- 최대 간격 (일 단위));
보드와 통합 구조
사용자 정보:
g5_member
를 활용하여 사용자 관리.
카드 데이터:
fsrs_cards
를 별도로 설계하고,
g5_write_*
와 연결 가능.
복습 데이터:
fsrs_schedules
와
fsrs_reviews
로 관리.
사용자 설정:
fsrs_user_settings
를 통해 개인화된 학습 환경 제공.
테이블 간 관계 다이어그램
g5_member (회원 정보) ↑ ├── fsrs_cards (카드 정보) │ ↑ │ ├── fsrs_schedules (복습 스케줄) │ └── fsrs_reviews (학습 기록) └── fsrs_user_settings (사용자 설정)