1 . 일기 문장 테이블 (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  -- 저장 시간
);

2. 문장 감정 분석 테이블 (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 -- 분석 시간
);

3. 일기 요약 테이블 (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 -- 분석/집계 시간
);

4. 추천 음악 테이블


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)