AcaMate_DB/scripts/Chat.sql
2025-04-01 17:28:43 +09:00

57 lines
3.1 KiB
SQL

CREATE TABLE chat_room
(
cid CHAR(16) NOT NULL PRIMARY KEY, -- 채팅방 구분 코드: 6(bid) + 6(yyyyMMdd) + 4(숫자 카운트)
bid CHAR(6) NOT NULL, -- 학원 구분 코드
name TEXT NOT NULL, -- 채팅방 이름
type CHAR(4) NOT NULL, -- 채팅방 유형 (1:1, 그룹 등)
create_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 생성 일자
open_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 오픈 일자
close_date DATETIME, -- 중지 일자 (채팅방 종료 처리)
FOREIGN KEY (bid) REFERENCES academy (bid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE chat_join
(
cid CHAR(16) NOT NULL, -- 채팅방 구분 코드
uid VARCHAR(70) NOT NULL, -- 사용자 구분 코드
join_date DATETIME NOT NULL, -- 채팅방 입장 시간
mid CHAR(36), -- 마지막 확인한 메시지 ID
is_notice BOOLEAN DEFAULT TRUE, -- 알림 설정 여부
PRIMARY KEY (cid, uid),
FOREIGN KEY (cid) REFERENCES chat_room (cid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (uid) REFERENCES user (uid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (mid) REFERENCES chat_message (mid) ON UPDATE CASCADE
);
CREATE TABLE chat_message
(
mid CHAR(36) NOT NULL PRIMARY KEY, -- 메시지 구분 코드(UUID)
cid CHAR(16) NOT NULL, -- 채팅방 구분 코드
uid VARCHAR(70) NOT NULL, -- 사용자 구분 코드
create_date DATETIME NOT NULL, -- 메시지 작성 일자
content TEXT NOT NULL, -- 메시지 내용
is_hidden BOOLEAN NOT NULL DEFAULT FALSE, -- 가리기 여부
media_url TEXT, -- 첨부 파일 링크
read_count INT NOT NULL DEFAULT 0, -- 읽은 사람 수
blind BOOLEAN NOT NULL DEFAULT FALSE, -- 신고로 인해 블라인드 처리 여부
check_report BOOLEAN NOT NULL DEFAULT FALSE, -- 신고 검토 여부
FOREIGN KEY (cid) REFERENCES chat_room (cid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (uid) REFERENCES user (uid) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX idx_chat_message_cid ON chat_message(cid);
CREATE INDEX idx_chat_message_cid_create_date ON chat_message(cid, create_date);
CREATE INDEX idx_chat_message_uid_cid ON chat_message(uid, cid);
CREATE TABLE report_list
(
cid CHAR(16) NOT NULL, -- 채팅방 구분 코드
uid VARCHAR(70) NOT NULL, -- 신고자 사용자 코드
mid CHAR(36) NOT NULL, -- 신고된 메시지 ID
report TEXT, -- 신고 사유
PRIMARY KEY (cid, uid, mid),
FOREIGN KEY (cid) REFERENCES chat_room (cid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (uid) REFERENCES user (uid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (mid) REFERENCES chat_message (mid) ON DELETE CASCADE ON UPDATE CASCADE
);