forked from AcaMate/AcaMate_DB
[✨] 각종 SQL 문 추가
This commit is contained in:
parent
66d9195fd7
commit
53d81dac48
|
@ -1,6 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/scripts/AddIndex.sql" dialect="MariaDB" />
|
||||
<file url="file://$PROJECT_DIR$/scripts/Chat.sql" dialect="MariaDB" />
|
||||
<file url="file://$PROJECT_DIR$/scripts/Push.sql" dialect="MariaDB" />
|
||||
<file url="file://$PROJECT_DIR$/scripts/Token.sql" dialect="MariaDB" />
|
||||
<file url="file://$PROJECT_DIR$/scripts/User.sql" dialect="MariaDB" />
|
||||
<file url="file://$PROJECT_DIR$/scripts/log.sql" dialect="MariaDB" />
|
||||
<file url="PROJECT" dialect="MariaDB" />
|
||||
</component>
|
||||
</project>
|
91
scripts/AddIndex.sql
Normal file
91
scripts/AddIndex.sql
Normal file
|
@ -0,0 +1,91 @@
|
|||
create table academy
|
||||
(
|
||||
bid char(6) not null
|
||||
primary key,
|
||||
business_name varchar(100) not null,
|
||||
business_owner varchar(50) not null,
|
||||
business_number varchar(20) not null,
|
||||
business_date datetime not null,
|
||||
business_address varchar(200) not null,
|
||||
business_contact varchar(15) not null,
|
||||
uid varchar(70) not null
|
||||
);
|
||||
|
||||
create table payload
|
||||
(
|
||||
pid char(22) not null
|
||||
primary key,
|
||||
title varchar(100) not null,
|
||||
subtitle varchar(100) null,
|
||||
body varchar(255) not null,
|
||||
alert_yn tinyint(1) default 1 not null,
|
||||
category char(4) not null,
|
||||
content text null
|
||||
);
|
||||
|
||||
create table push_cabinet
|
||||
(
|
||||
uid varchar(70) not null,
|
||||
pid char(22) not null,
|
||||
send_date datetime not null,
|
||||
check_yn tinyint(1) default 0 not null,
|
||||
primary key (uid, pid),
|
||||
constraint fk_pushcabinet_pid_to_payload
|
||||
foreign key (pid) references payload (pid)
|
||||
on update cascade on delete cascade,
|
||||
constraint fk_pushcabinet_uid_to_user
|
||||
foreign key (uid) references user (uid)
|
||||
on update cascade on delete cascade
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE payload
|
||||
ADD COLUMN bid CHAR(6) NOT NULL DEFAULT '000000' AFTER pid
|
||||
;
|
||||
|
||||
ALTER TABLE payload
|
||||
DROP PRIMARY KEY ,
|
||||
ADD PRIMARY KEY (bid, pid)
|
||||
;
|
||||
|
||||
ALTER TABLE payload
|
||||
ADD CONSTRAINT fk_payload_bid_to_academy
|
||||
FOREIGN KEY (bid) REFERENCES academy(bid)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE
|
||||
;
|
||||
|
||||
|
||||
# //------//
|
||||
ALTER TABLE push_cabinet
|
||||
ADD COLUMN bid CHAR(6) NOT NULL DEFAULT 'AA0000' AFTER uid
|
||||
;
|
||||
|
||||
ALTER TABLE push_cabinet
|
||||
DROP PRIMARY KEY,
|
||||
ADD PRIMARY KEY (bid, uid, pid)
|
||||
;
|
||||
|
||||
|
||||
ALTER TABLE push_cabinet
|
||||
DROP FOREIGN KEY fk_pushcabinet_pid_to_payload
|
||||
;
|
||||
|
||||
ALTER TABLE push_cabinet
|
||||
DROP FOREIGN KEY fk_pushcabinet_uid_to_user
|
||||
;
|
||||
|
||||
ALTER TABLE push_cabinet
|
||||
ADD CONSTRAINT fk_pushcabinet_payload
|
||||
FOREIGN KEY (bid, pid) REFERENCES payload(bid, pid)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE
|
||||
;
|
||||
|
||||
|
||||
ALTER TABLE push_cabinet
|
||||
ADD CONSTRAINT fk_pushcabinet_bid_to_academy
|
||||
FOREIGN KEY (bid) REFERENCES academy(bid)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE
|
||||
;
|
||||
|
||||
|
||||
|
56
scripts/Chat.sql
Normal file
56
scripts/Chat.sql
Normal file
|
@ -0,0 +1,56 @@
|
|||
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
|
||||
);
|
117
scripts/Push.sql
Normal file
117
scripts/Push.sql
Normal file
|
@ -0,0 +1,117 @@
|
|||
CREATE TABLE payload (
|
||||
pid CHAR(22) NOT NULL PRIMARY KEY ,
|
||||
title VARCHAR(100) NOT NULL ,
|
||||
subtitle VARCHAR(100) ,
|
||||
body VARCHAR(255) NOT NULL ,
|
||||
alert_yn BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
category CHAR(4) NOT NULL ,
|
||||
content TEXT
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE push_cabinet (
|
||||
uid CHAR(6) NOT NULL ,
|
||||
pid CHAR(22) NOT NULL ,
|
||||
send_date DATETIME NOT NULL ,
|
||||
check_yn BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (uid, pid),
|
||||
CONSTRAINT fk_pushcabinet_uid_to_user FOREIGN KEY (uid)
|
||||
REFERENCES user(uid)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
CONSTRAINT fk_pushcabinet_pid_to_payload FOREIGN KEY (pid)
|
||||
REFERENCES payload(pid)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
||||
|
||||
INSERT INTO payload(pid, title, subtitle, body, category, content)
|
||||
VALUES (
|
||||
'AP202503054Q81114002W7',
|
||||
'PUSH 확인 TEST',
|
||||
'PUSH 확인 TEST - SUB',
|
||||
'PUSH를 테스트하기 위해서 작성된 내용입니다. TEST 메시지입나다.',
|
||||
'PC00',
|
||||
NULL
|
||||
);
|
||||
|
||||
|
||||
|
||||
INSERT INTO payload(pid, title, subtitle, body, category, content)
|
||||
VALUES (
|
||||
'AP202503051S41516009J9',
|
||||
'PUSH 확인 TEST2',
|
||||
NULL,
|
||||
'PUSH를 테스트하기 위해서 작성된 두번째 내용입니다. 두번째 TEST 메시지입나다.',
|
||||
'PC00',
|
||||
NULL
|
||||
);
|
||||
|
||||
|
||||
|
||||
ALTER TABLE push_cabinet DROP FOREIGN KEY fk_pushcabinet_uid_to_user;
|
||||
|
||||
ALTER TABLE push_cabinet
|
||||
ADD CONSTRAINT fk_pushcabinet_uid_to_user
|
||||
FOREIGN KEY (uid) REFERENCES user(uid)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE;
|
||||
|
||||
|
||||
CREATE TABLE log_push (
|
||||
bid CHAR(6) NOT NULL ,
|
||||
pid CHAR(22) NOT NULL ,
|
||||
create_date DATETIME NOT NULL ,
|
||||
modify_date DATETIME NOT NULL ,
|
||||
create_uid VARCHAR(70) NOT NULL ,
|
||||
modify_uid VARCHAR(70) NOT NULL ,
|
||||
PRIMARY KEY (bid, pid),
|
||||
CONSTRAINT fk_logpush_to_payload FOREIGN KEY (bid, pid)
|
||||
REFERENCES payload(bid, pid)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
SELECT cabinet.uid, cabinet.pid, cabinet.send_date, payload.title
|
||||
FROM
|
||||
(select push_cabinet.pid, push_cabinet.uid, push_cabinet.send_date FROM push_cabinet where uid = 'AMsean.kim20241201') As cabinet
|
||||
inner JOIN
|
||||
(select payload.title, payload.pid FROM payload) as payload
|
||||
on cabinet.pid = payload.pid
|
||||
order by send_date
|
||||
;
|
||||
|
||||
|
||||
CREATE TABLE push_cabinet
|
||||
(
|
||||
id INT AUTO_INCREMENT PRIMARY KEY, -- 대리 키로 추가
|
||||
uid VARCHAR(70) NOT NULL,
|
||||
bid CHAR(6) DEFAULT 'AA0000' NOT NULL,
|
||||
pid CHAR(22) NOT NULL,
|
||||
send_date DATETIME NOT NULL,
|
||||
check_yn TINYINT(1) DEFAULT 0 NOT NULL,
|
||||
content TEXT, -- 커스텀 이벤트 내용 저장 (필요 시 TEXT나 VARCHAR로 조정)
|
||||
|
||||
CONSTRAINT fk_pushcabinet_bid_to_academy
|
||||
FOREIGN KEY (bid) REFERENCES academy (bid)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
CONSTRAINT fk_pushcabinet_payload
|
||||
FOREIGN KEY (bid, pid) REFERENCES payload (bid, pid)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- 조회 성능 향상을 위해 pid 컬럼에 대한 인덱스 추가 (필요 시 uid, send_date 등의 인덱스도 고려)
|
||||
CREATE INDEX idx_pushcabinet_pid ON push_cabinet (pid);
|
||||
|
||||
ALTER TABLE push_cabinet
|
||||
ADD CONSTRAINT fk_pushcabinet_bid_to_academy
|
||||
FOREIGN KEY (bid) REFERENCES academy (bid)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE;
|
||||
ALTER TABLE push_cabinet
|
||||
ADD CONSTRAINT fk_pushcabinet_payload
|
||||
FOREIGN KEY (bid, pid) REFERENCES payload (bid, pid)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE;
|
|
@ -6,4 +6,5 @@ CREATE TABLE token (
|
|||
expire_date datetime not null ,
|
||||
revoke_date datetime,
|
||||
constraint fk_token_uid_to_user foreign key (uid) references user (uid) on update cascade on delete cascade
|
||||
);
|
||||
);
|
||||
|
||||
|
|
18
scripts/User.sql
Normal file
18
scripts/User.sql
Normal file
|
@ -0,0 +1,18 @@
|
|||
CREATE TABLE api_header (
|
||||
specific_id VARCHAR(255) PRIMARY KEY NOT NULL ,
|
||||
connect_date DATETIME NOT NULL ,
|
||||
h_key CHAR(18) NOT NULL,
|
||||
h_value TEXT NOT NULL
|
||||
);
|
||||
|
||||
# INSERT INTO api_header(specific_id, connect_date, h_key, h_value)
|
||||
# VALUES (2025-03-19,'iOS_AM_Connect_Key','');
|
||||
|
||||
# INSERT INTO api_header(h_key, h_value)
|
||||
# VALUES ('And_AM_Connect_Key','');
|
||||
#
|
||||
# INSERT INTO api_header(h_key, h_value)
|
||||
# VALUES ('Web_AM_Connect_Key','');
|
||||
|
||||
|
||||
SHOW TABLE STATUS WHERE Name = 'permission';
|
38
scripts/log.sql
Normal file
38
scripts/log.sql
Normal file
|
@ -0,0 +1,38 @@
|
|||
create table log_push
|
||||
(
|
||||
bid char(6) not null,
|
||||
pid char(22) not null,
|
||||
create_date datetime not null,
|
||||
create_uid varchar(70) not null,
|
||||
log text null,
|
||||
lid int auto_increment
|
||||
primary key
|
||||
);
|
||||
|
||||
create table log_user
|
||||
(
|
||||
bid char(6) not null,
|
||||
pid char(22) not null,
|
||||
create_date datetime not null,
|
||||
create_uid varchar(70) not null,
|
||||
log text null,
|
||||
lid int auto_increment
|
||||
primary key
|
||||
);
|
||||
|
||||
|
||||
create table log_project
|
||||
(
|
||||
lid int auto_increment primary key,
|
||||
create_date datetime not null default NOW(),
|
||||
log text null
|
||||
);
|
||||
|
||||
create table log_chat
|
||||
(
|
||||
lid int auto_increment primary key,
|
||||
create_date datetime not null,
|
||||
create_uid varchar(70) not null,
|
||||
cid CHAR(16) NOT NULL,
|
||||
log text null
|
||||
);
|
Loading…
Reference in New Issue
Block a user