diary_sentences
)일기를 문장 단위로 분리하여 저장합니다.
CREATE TABLE diary_sentences (
sentence_id NUMBER PRIMARY KEY, -- 문장 ID
diary_id NUMBER REFERENCES diary(diary_id) ON DELETE CASCADE, -- 소속 일기 ID
sentence_text CLOB, -- 문장 내용
sentence_order NUMBER, -- 문장의 순서 (분석 및 출력 시 활용)
created_at TIMESTAMP DEFAULT SYSTIMESTAMP -- 저장 시간
);
sentence_emotions
)각 문장에 대해 AI가 감정 분석을 수행한 결과를 저장합니다.
CREATE TABLE sentence_emotions (
emotion_id NUMBER PRIMARY KEY, -- 감정 분석 ID
sentence_id NUMBER REFERENCES diary_sentences(sentence_id) ON DELETE CASCADE,-- 문장 ID
sentiment_score NUMBER(5,2) CHECK (sentiment_score BETWEEN -3 AND 3.00),-- 감정 점수
sentiment_label VARCHAR2(20), -- 감정 라벨 (예: 행복, 슬픔, 분노 등)
analyzed_at TIMESTAMP DEFAULT SYSTIMESTAMP -- 분석 시간
);
diary_summary
)문장별 분석 결과를 주간 혹은 일기 단위로 집계하여, 많이 등장한 문장 패턴을 기반으로 한 요약 메시지를 생성하고 그에 맞는 노래를 추천할 수 있도록 합니다.
하나의 일기에 대해 전체 감정의 평균, 지배적인 감정과 함께 요약 메시지(예: “저번주에는 운동을 월, 수, 목 하셨네요 내일도 운동 어때요?”)와 추천 노래 정보를 저장합니다.
CREATE TABLE diary_summary (
summary_id NUMBER PRIMARY KEY, -- 요약 메시지 ID
diary_id NUMBER REFERENCES diary(diary_id) ON DELETE CASCADE, -- 소속 일기 ID
summary_message VARCHAR2(255),-- 요약 메시지 (빈번하게 나타난 문장 패턴 기반)
recommended_music_id NUMBER REFERENCES recommended_music(music_id), -- 추천 노래 ID
average_sentiment NUMBER(5,2),-- 일기의 평균 감정 점수 (문장 단위 분석 결과 집계)
dominant_emotion VARCHAR2(20), -- 일기의 주요 감정 (예: 행복, 슬픔 등)
analyzed_at TIMESTAMP DEFAULT SYSTIMESTAMP -- 분석/집계 시간
);
CREATE TABLE recommended_music (
music_id NUMBER PRIMARY KEY,
sentiment_score NUMBER(1) CHECK (sentiment_score BETWEEN -3 AND 3),
music_title VARCHAR2(255),
artist_name VARCHAR2(255),
music_url VARCHAR2(255)