forked from AcaMate/AcaMate_DB
57 lines
3.1 KiB
SQL
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
|
|
);
|