기능 변경을 반영하여 테이블을 수정하고 최적화한 새로운 DDL 설계를 아래와 같이 제안할게.
sentiment_score
, sentiment_label
대신 emotion_type
, percentage
컬럼 추가date_range
컬럼 추가 (최근 7일, 30일 등)emotion_music_mapping
테이블 추가CREATE TABLE diary (
diary_id NUMBER PRIMARY KEY,
user_id VARCHAR2(50) REFERENCES users(user_id),
title VARCHAR2(255),
content CLOB,
image_url VARCHAR2(255),
created_at TIMESTAMP DEFAULT SYSTIMESTAMP,
updated_at TIMESTAMP DEFAULT SYSTIMESTAMP
);
CREATE TABLE diary_emotion_details (
emotion_id NUMBER PRIMARY KEY,
diary_id NUMBER REFERENCES diary(diary_id) ON DELETE CASCADE,
emotion_type VARCHAR2(50) NOT NULL, -- (예: 행복, 설렘, 만족, 슬픔 등)
percentage NUMBER(5,2) CHECK (percentage BETWEEN 0 AND 100), -- 감정 비율
analyzed_at TIMESTAMP DEFAULT SYSTIMESTAMP
);
CREATE TABLE user_emotion_tracking (
tracking_id NUMBER PRIMARY KEY,
user_id VARCHAR2(50) REFERENCES users(user_id),
date_range VARCHAR2(20) NOT NULL, -- ("7일", "30일" 등)
emotion_type VARCHAR2(50) NOT NULL, -- (예: 행복, 슬픔, 불안 등)
percentage NUMBER(5,2) CHECK (percentage BETWEEN 0 AND 100),
analyzed_at TIMESTAMP DEFAULT SYSTIMESTAMP
);
CREATE TABLE recommended_messages (
message_id NUMBER PRIMARY KEY,
emotion_type VARCHAR2(50) NOT NULL,
message_text VARCHAR2(255)
);
CREATE TABLE recommended_music (
music_id NUMBER PRIMARY KEY,
music_title VARCHAR2(255),
artist_name VARCHAR2(255),
music_url VARCHAR2(255)
);