[] 각종 SQL 문 추가

This commit is contained in:
김선규 2025-04-01 17:28:43 +09:00
parent 66d9195fd7
commit 53d81dac48
7 changed files with 328 additions and 1 deletions

View File

@ -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
View 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
View 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
View 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;

View File

@ -7,3 +7,4 @@ CREATE TABLE token (
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
View 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
View 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
);