diff --git a/f_install/sql/common_schema.sql b/f_install/sql/common_schema.sql index c119febc..7cda6e26 100644 --- a/f_install/sql/common_schema.sql +++ b/f_install/sql/common_schema.sql @@ -31,8 +31,8 @@ CREATE TABLE `member` ( `NAME` VARCHAR(64) NOT NULL, `PICTURE` VARCHAR(64) NULL DEFAULT 'default.jpg', `IMGSVR` INT(1) NULL DEFAULT '0', - `acl` TEXT NOT NULL DEFAULT '{}' COMMENT 'json', - `penalty` TEXT NOT NULL DEFAULT '{}' COMMENT 'json', + `acl` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', + `penalty` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', `GRADE` INT(1) NULL DEFAULT '1', `REG_NUM` INT(3) NULL DEFAULT '0', `REG_DATE` DATETIME NOT NULL, @@ -43,9 +43,12 @@ CREATE TABLE `member` ( UNIQUE INDEX `ID` (`ID`), UNIQUE INDEX `EMAIL` (`EMAIL`), UNIQUE INDEX `kauth_id` (`oauth_id`), - INDEX `delete_after` (`delete_after`) + INDEX `delete_after` (`delete_after`), + CONSTRAINT `json1` CHECK (json_valid(`acl`)), + CONSTRAINT `json2` CHECK (json_valid(`penalty`)) ) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; +COLLATE='utf8mb4_general_ci' +ENGINE=Aria; -- 로그인 로그 테이블 CREATE TABLE `member_log` ( @@ -53,12 +56,14 @@ CREATE TABLE `member_log` ( `member_no` INT(11) NOT NULL, `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `action_type` ENUM('reg','try_login','login','logout','oauth','change_pw','make_general','access_server','delete') NOT NULL, - `action` TEXT NULL DEFAULT NULL COMMENT 'JSON', + `action` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin', PRIMARY KEY (`id`), INDEX `action` (`member_no`, `action_type`, `date`), - INDEX `member` (`member_no`, `date`) + INDEX `member` (`member_no`, `date`), + CONSTRAINT `json` CHECK (json_valid(`action`)) ) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; +COLLATE='utf8mb4_general_ci' +ENGINE=Aria; ################### # KV storage @@ -69,9 +74,10 @@ CREATE TABLE if not exists `storage` ( `key` VARCHAR(40) NOT NULL, `value` TEXT NOT NULL, PRIMARY KEY (`id`), - UNIQUE INDEX `key` (`namespace`, `key`) + UNIQUE INDEX `key` (`namespace`, `key`), + CONSTRAINT `json` CHECK (json_valid(`value`)) ) -COLLATE='utf8mb4_general_ci' +COLLATE='utf8mb4_bin' ENGINE=Aria; CREATE TABLE `login_token` ( @@ -86,5 +92,4 @@ CREATE TABLE `login_token` ( INDEX `by_date` (`user_id`, `expire_date`) ) COLLATE='utf8mb4_general_ci' -ENGINE=Aria -; \ No newline at end of file +ENGINE=Aria; \ No newline at end of file diff --git a/hwe/sql/schema.sql b/hwe/sql/schema.sql index 51177a47..ae1c5fd2 100644 --- a/hwe/sql/schema.sql +++ b/hwe/sql/schema.sql @@ -1,7 +1,6 @@ -############################################################################ +############################## ## 장수 테이블 -############################################################################ - +############################## CREATE TABLE `general` ( `no` INT(11) NOT NULL AUTO_INCREMENT, `owner` INT(11) NOT NULL DEFAULT '0', @@ -40,7 +39,7 @@ CREATE TABLE `general` ( `dex5` INT(8) NOT NULL DEFAULT '0', `officer_level` INT(2) NOT NULL DEFAULT '0', `officer_city` INT(4) NOT NULL DEFAULT '0', - `permission` ENUM('normal','auditor','ambassador') NULL DEFAULT 'normal', + `permission` ENUM('normal', 'auditor', 'ambassador') NULL DEFAULT 'normal', `gold` INT(6) NOT NULL DEFAULT '1000', `rice` INT(6) NOT NULL DEFAULT '1000', `crew` INT(5) NOT NULL DEFAULT '0', @@ -76,9 +75,9 @@ CREATE TABLE `general` ( `tournament` INT(1) NULL DEFAULT '0', `vote` INT(1) NULL DEFAULT '0', `newvote` INT(1) NULL DEFAULT '0', - `last_turn` TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`last_turn`)), - `aux` LONGTEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`aux`)), - `penalty` TEXT NULL DEFAULT '', + `last_turn` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', + `aux` LONGTEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', + `penalty` TEXT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', PRIMARY KEY (`no`), INDEX `nation` (`nation`, `npc`), INDEX `city` (`city`), @@ -89,30 +88,25 @@ CREATE TABLE `general` ( INDEX `officer_level` (`nation`, `officer_level`), INDEX `officer_city` (`officer_city`, `officer_level`), INDEX `name` (`name`), - INDEX `last_refresh` (`lastrefresh`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria; - + INDEX `last_refresh` (`lastrefresh`), + CONSTRAINT `json1` CHECK (json_valid(`last_turn`)), + CONSTRAINT `json2` CHECK (json_valid(`aux`)), + CONSTRAINT `json3` CHECK (json_valid(`penalty`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; CREATE TABLE `general_turn` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `general_id` INT(11) NOT NULL, `turn_idx` INT(4) NOT NULL, `action` VARCHAR(20) NOT NULL, - `arg` TEXT NULL DEFAULT NULL, + `arg` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin', `brief` TEXT NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `general_id` (`general_id`, `turn_idx`), INDEX `action` (`action`, `turn_idx`, `general_id`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria -; - -########################################################################### +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 국가 테이블 -########################################################################### - +############################## CREATE TABLE `nation` ( `nation` INT(6) NOT NULL AUTO_INCREMENT, `name` VARCHAR(64) NOT NULL COLLATE 'utf8mb4_bin', @@ -133,29 +127,35 @@ CREATE TABLE `nation` ( `surlimit` INT(4) NULL DEFAULT '72', `tech` float NULL DEFAULT '0', `power` INT(8) NULL DEFAULT '0', - `spy` TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`spy`)), + `spy` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', `level` INT(1) NULL DEFAULT '0', `type` VARCHAR(20) NOT NULL DEFAULT 'che_중립', - `aux` LONGTEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`aux`)), - PRIMARY KEY (`nation`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - + `aux` LONGTEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', + PRIMARY KEY (`nation`), + CONSTRAINT `json1` CHECK (json_valid(`spy`)), + CONSTRAINT `json2` CHECK (json_valid(`aux`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; CREATE TABLE `nation_turn` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `nation_id` INT(11) NOT NULL, `officer_level` INT(4) NOT NULL, `turn_idx` INT(4) NOT NULL, - `action` VARCHAR(16) NOT NULL, - `arg` TEXT NULL DEFAULT NULL CHECK (json_valid(`arg`)), + `action` VARCHAR(16) NOT NULL COLLATE 'utf8mb4_bin', + `arg` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin', `brief` TEXT NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `nation` (`nation_id`, `officer_level`, `turn_idx`), - INDEX `action` (`action`, `turn_idx`, `nation_id`, `officer_level`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -##회의실 + INDEX `action` ( + `action`, + `turn_idx`, + `nation_id`, + `officer_level` + ), + CONSTRAINT `json` CHECK (json_valid(`arg`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 회의실 +############################## CREATE TABLE `board` ( `no` INT(11) NOT NULL AUTO_INCREMENT, `nation_no` INT(11) NOT NULL, @@ -168,9 +168,7 @@ CREATE TABLE `board` ( `text` TEXT NOT NULL, PRIMARY KEY (`no`), INDEX `nation_no` (`nation_no`, `is_secret`, `date`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; CREATE TABLE `comment` ( `no` INT(11) NOT NULL AUTO_INCREMENT, `nation_no` INT(11) NOT NULL, @@ -183,12 +181,10 @@ CREATE TABLE `comment` ( PRIMARY KEY (`no`), INDEX `nation_no` (`nation_no`, `is_secret`, `date`), INDEX `document_no` (`document_no`, `date`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -########################################################################### +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 도시 테이블 -########################################################################### +############################## ## trade 100 이 표준 시세 CREATE TABLE `city` ( `city` INT(6) NOT NULL AUTO_INCREMENT, @@ -216,26 +212,23 @@ CREATE TABLE `city` ( `state` INT(2) NOT NULL DEFAULT '0', `region` INT(2) NOT NULL, `term` INT(1) NOT NULL DEFAULT '0', - `conflict` TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`conflict`)), + `conflict` TEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', PRIMARY KEY (`city`), - INDEX `nation` (`nation`) -) ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -########################################################################### + INDEX `nation` (`nation`), + CONSTRAINT `json` CHECK (json_valid(`conflict`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 부대 테이블 -########################################################################### - +############################## CREATE TABLE `troop` ( `troop_leader` INT(6) NOT NULL, `nation` INT(6) NOT NULL, `name` VARCHAR(50) NOT NULL, PRIMARY KEY (`troop_leader`) -) ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -########################################################################## +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 락 테이블 -########################################################################## - +############################## CREATE TABLE `plock` ( `no` INT(11) NOT NULL AUTO_INCREMENT, `type` ENUM('GAME', 'ETC', 'TOURNAMENT') NOT NULL DEFAULT 'GAME', @@ -243,33 +236,26 @@ CREATE TABLE `plock` ( `locktime` DATETIME(6) NOT NULL, PRIMARY KEY (`no`), UNIQUE INDEX `type` (`type`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria -; - -########################################################################### +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 메시지 테이블 -########################################################################### +############################## CREATE TABLE `message` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `mailbox` INT(11) NOT NULL COMMENT '9999 == public, >= 9000 national', - `type` ENUM('private','national','public','diplomacy') NOT NULL, + `type` ENUM('private', 'national', 'public', 'diplomacy') NOT NULL, `src` INT(11) NOT NULL, `dest` INT(11) NOT NULL, `time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `valid_until` DATETIME NOT NULL DEFAULT '9999-12-31 23:59:59', - `message` TEXT NOT NULL CHECK (json_valid(`message`)), + `message` TEXT NOT NULL COLLATE 'utf8mb4_bin', PRIMARY KEY (`id`), - INDEX `by_mailbox` (`mailbox`, `type`, `id`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria; - -########################################################################### + INDEX `by_mailbox` (`mailbox`, `type`, `id`), + CONSTRAINT `json` CHECK (json_valid(`message`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 명전 테이블 -########################################################################### - +############################## CREATE TABLE IF NOT EXISTS `hall` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `server_id` CHAR(20) NOT NULL, @@ -279,20 +265,17 @@ CREATE TABLE IF NOT EXISTS `hall` ( `type` VARCHAR(20) NOT NULL, `value` DOUBLE NOT NULL, `owner` INT(11) NULL DEFAULT NULL, - `aux` LONGTEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`aux`)), + `aux` LONGTEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', PRIMARY KEY (`id`), UNIQUE INDEX `server_general` (`server_id`, `type`, `general_no`), UNIQUE INDEX `owner` (`owner`, `server_id`, `type`), INDEX `server_show` (`server_id`, `type`, `value`), - INDEX `scenario` (`season`, `scenario`, `type`, `value`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - - -########################################################################### -## 왕조 테이블 -########################################################################### - + INDEX `scenario` (`season`, `scenario`, `type`, `value`), + CONSTRAINT `json` CHECK (json_valid(`aux`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 게임 정보 테이블(유지) +############################## CREATE TABLE IF NOT EXISTS `ng_games` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `server_id` CHAR(20) NOT NULL, @@ -302,24 +285,28 @@ CREATE TABLE IF NOT EXISTS `ng_games` ( `season` INT(11) NOT NULL, `scenario` INT(11) NOT NULL, `scenario_name` TEXT NOT NULL, - `env` TEXT NOT NULL CHECK (json_valid(`env`)), + `env` TEXT NOT NULL COLLATE 'utf8mb4_bin', PRIMARY KEY (`id`), UNIQUE INDEX `server_id` (`server_id`), - INDEX `date` (`date`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - + INDEX `date` (`date`), + CONSTRAINT `json` CHECK (json_valid(`env`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 멸망한 국가 목록(유지) +############################## CREATE TABLE IF NOT EXISTS `ng_old_nations` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `server_id` CHAR(20) NOT NULL DEFAULT '0', `nation` INT(11) NOT NULL DEFAULT '0', - `data` LONGTEXT NOT NULL DEFAULT '{}' CHECK (json_valid(`data`)), + `data` LONGTEXT NOT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), - INDEX `server_id` (`server_id`, `nation`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - + INDEX `server_id` (`server_id`, `nation`), + CONSTRAINT `json` CHECK (json_valid(`data`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 사망한 장수 목록(유지) +############################## CREATE TABLE IF NOT EXISTS `ng_old_generals` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `server_id` CHAR(20) NOT NULL, @@ -328,14 +315,16 @@ CREATE TABLE IF NOT EXISTS `ng_old_generals` ( `name` VARCHAR(32) NOT NULL, `last_yearmonth` INT(11) NOT NULL, `turntime` DATETIME(6) NOT NULL, - `data` MEDIUMTEXT NOT NULL, + `data` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_bin', PRIMARY KEY (`id`), UNIQUE INDEX `by_no` (`server_id`, `general_no`), INDEX `by_name` (`server_id`, `name`), - INDEX `owner` (`owner`, `server_id`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - + INDEX `owner` (`owner`, `server_id`), + CONSTRAINT `json` CHECK (json_valid(`data`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 왕조 테이블(유지) +############################## CREATE TABLE IF NOT EXISTS `emperior` ( `no` INT(6) NOT NULL AUTO_INCREMENT, `server_id` CHAR(20) NULL DEFAULT '', @@ -377,48 +366,59 @@ CREATE TABLE IF NOT EXISTS `emperior` ( `tiger` VARCHAR(128) NULL DEFAULT '', `eagle` VARCHAR(128) NULL DEFAULT '', `gen` TEXT NULL DEFAULT '', - `history` MEDIUMTEXT NULL DEFAULT '{}' CHECK (json_valid(`aux`)), - `aux` MEDIUMTEXT NULL DEFAULT '{}' CHECK (json_valid(`aux`)), - PRIMARY KEY (`no`) -) ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -########################################################################### + `history` MEDIUMTEXT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', + `aux` MEDIUMTEXT NULL DEFAULT '{}' COLLATE 'utf8mb4_bin', + PRIMARY KEY (`no`), + CONSTRAINT `json1` CHECK (json_valid(`history`)), + CONSTRAINT `json2` CHECK (json_valid(`aux`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 외교 테이블 -########################################################################### +############################## create table diplomacy ( - `no` INT(6) NOT NULL AUTO_INCREMENT, - `me` INT(6) NOT NULL, - `you` INT(6) NOT NULL, - `state` INT(6) NULL DEFAULT '0', - `term` INT(6) NULL DEFAULT '0', - `dead` INT(8) NULL DEFAULT '0', - `showing` DATETIME NULL DEFAULT NULL, - - PRIMARY KEY (`no`), - UNIQUE INDEX `me` (`me`, `you`) - ) ENGINE=Aria DEFAULT CHARSET=utf8mb4; - + `no` INT(6) NOT NULL AUTO_INCREMENT, + `me` INT(6) NOT NULL, + `you` INT(6) NOT NULL, + `state` INT(6) NULL DEFAULT '0', + `term` INT(6) NULL DEFAULT '0', + `dead` INT(8) NULL DEFAULT '0', + `showing` DATETIME NULL DEFAULT NULL, + PRIMARY KEY (`no`), + UNIQUE INDEX `me` (`me`, `you`) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 외교문서 테이블 +############################## CREATE TABLE `ng_diplomacy` ( `no` INT(11) NOT NULL AUTO_INCREMENT, `src_nation_id` INT(11) NOT NULL, `dest_nation_id` INT(11) NOT NULL, `prev_no` INT(11) NULL DEFAULT NULL, - `state` ENUM('proposed','activated','cancelled','replaced') NOT NULL DEFAULT 'proposed', + `state` ENUM('proposed', 'activated', 'cancelled', 'replaced') NOT NULL DEFAULT 'proposed', `text_brief` TEXT NOT NULL, `text_detail` TEXT NOT NULL, `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `src_signer` INT(11) NOT NULL, `dest_signer` INT(11) NULL DEFAULT NULL, - `aux` TEXT NULL DEFAULT NULL CHECK (json_valid(`aux`)), + `aux` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin', PRIMARY KEY (`no`), - INDEX `by_nation_src` (`src_nation_id`, `dest_nation_id`, `state`, `date`), - INDEX `by_nation_dest` (`dest_nation_id`, `src_nation_id`, `state`, `date`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -########################################################################### + INDEX `by_nation_src` ( + `src_nation_id`, + `dest_nation_id`, + `state`, + `date` + ), + INDEX `by_nation_dest` ( + `dest_nation_id`, + `src_nation_id`, + `state`, + `date` + ), + CONSTRAINT `json` CHECK (json_valid(`aux`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 토너먼트 테이블 -########################################################################### +############################## CREATE TABLE `tournament` ( `seq` INT(6) NOT NULL AUTO_INCREMENT, `no` INT(6) NULL DEFAULT 0, @@ -440,32 +440,27 @@ CREATE TABLE `tournament` ( `prmt` INT(1) NULL DEFAULT 0, PRIMARY KEY (`seq`), INDEX `grp` (`grp`, `grp_no`) -) -COLLATE='utf8mb4_general_ci' -ENGINE=Aria; - -########################################################################### +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 거래 테이블 -########################################################################### -create table auction ( - no int(6) not null auto_increment, - type int(6) default 0, - no1 int(6) default 0, - name1 varchar(64) default '-', - amount int(6) default 0, - cost int(6) default 0, - value int(6) default 0, - topv int(6) default 0, - no2 int(6) default 0, - name2 varchar(64) default '-', - expire datetime, - - PRIMARY KEY (no) - ) ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -########################################################################### +############################## +create table `auction` ( + `no` int(6) not null auto_increment, + `type` int(6) default 0, + `no1` int(6) default 0, + `name1` varchar(64) default '-', + `amount` int(6) default 0, + `cost` int(6) default 0, + `value` int(6) default 0, + `topv` int(6) default 0, + `no2` int(6) default 0, + `name2` varchar(64) default '-', + `expire` datetime, + PRIMARY KEY (`no`) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 통계 테이블 -########################################################################### +############################## CREATE TABLE `statistic` ( `no` INT(6) NOT NULL AUTO_INCREMENT, `year` INT(4) NULL DEFAULT '0', @@ -479,48 +474,46 @@ CREATE TABLE `statistic` ( `power_hist` TEXT NULL DEFAULT '', `crewtype` TEXT NULL DEFAULT '', `etc` TEXT NULL DEFAULT '', - `aux` TEXT NULL DEFAULT NULL CHECK (json_valid(`aux`)), - PRIMARY KEY (`no`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -########################################################################### + `aux` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin', + PRIMARY KEY (`no`), + CONSTRAINT `json` CHECK (json_valid(`aux`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## ## 연감 테이블 -########################################################################### +############################## CREATE TABLE IF NOT EXISTS `ng_history` ( `no` INT(6) NOT NULL AUTO_INCREMENT, `server_id` CHAR(20) NOT NULL, `year` INT(4) NULL, `month` INT(2) NULL, - `map` MEDIUMTEXT NULL DEFAULT NULL CHECK (json_valid(`map`)), - `global_history` MEDIUMTEXT NULL DEFAULT NULL CHECK (json_valid(`global_history`)), - `global_action` MEDIUMTEXT NULL DEFAULT NULL CHECK (json_valid(`global_action`)), - `nations` MEDIUMTEXT NULL DEFAULT NULL CHECK (json_valid(`nations`)), + `map` MEDIUMTEXT NULL DEFAULT NULL, + `global_history` MEDIUMTEXT NULL DEFAULT NULL, + `global_action` MEDIUMTEXT NULL DEFAULT NULL, + `nations` MEDIUMTEXT NULL DEFAULT NULL, PRIMARY KEY (`no`), - INDEX `server_id` (`server_id`, `year`, `month`) -) -ENGINE=Aria DEFAULT CHARSET=utf8mb4; - -########################################################################### + INDEX `server_id` (`server_id`, `year`, `month`), + CONSTRAINT `json1` CHECK (json_valid(`map`)), + CONSTRAINT `json2` CHECK (json_valid(`global_history`)), + CONSTRAINT `json3` CHECK (json_valid(`global_action`)), + CONSTRAINT `json4` CHECK (json_valid(`nations`)) +) COLLATE = 'utf8mb4_bin' ENGINE = Aria; +############################## ## 이벤트 핸들러 테이블 -########################################################################### - +############################## CREATE TABLE `event` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `target` ENUM('MONTH','OCCUPY_CITY','DESTROY_NATION') NOT NULL DEFAULT 'MONTH', - `priority` INT(11) NOT NULL DEFAULT '1000', - `condition` MEDIUMTEXT NOT NULL, - `action` MEDIUMTEXT NOT NULL, - PRIMARY KEY (`id`), - INDEX `target` (`target`, `priority`, `id`), - CONSTRAINT `condition` CHECK (json_valid(`condition`)), - CONSTRAINT `action` CHECK (json_valid(`action`)) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria; - - -##전체 이벤트 기록 테이블 + `id` INT(11) NOT NULL AUTO_INCREMENT, + `target` ENUM('MONTH', 'OCCUPY_CITY', 'DESTROY_NATION') NOT NULL DEFAULT 'MONTH', + `priority` INT(11) NOT NULL DEFAULT '1000', + `condition` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_bin', + `action` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_bin', + PRIMARY KEY (`id`), + INDEX `target` (`target`, `priority`, `id`), + CONSTRAINT `json1` CHECK (json_valid(`condition`)), + CONSTRAINT `json2` CHECK (json_valid(`action`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 전체 이벤트 기록 테이블 +############################## CREATE TABLE `world_history` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `nation_id` INT(11) NOT NULL, @@ -530,57 +523,50 @@ CREATE TABLE `world_history` ( PRIMARY KEY (`id`), INDEX `date` (`nation_id`, `year`, `month`, `id`), INDEX `plain` (`nation_id`, `id`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria -; - -##장수 동향 테이블 +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################ +## 장수 동향 테이블 +############################## CREATE TABLE `general_record` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `general_id` INT(11) NOT NULL, - `log_type` ENUM('action','battle_brief','battle', 'history') NOT NULL, + `log_type` ENUM('action', 'battle_brief', 'battle', 'history') NOT NULL, `year` INT(4) NOT NULL, `month` INT(2) NOT NULL, `text` TEXT NOT NULL, PRIMARY KEY (`id`), INDEX `date` (`general_id`, `log_type`, `year`, `month`, `id`), INDEX `plain` (`general_id`, `log_type`, `id`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria -; - -###### -# 예약 오픈 테이블 +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 예약 오픈 테이블 +############################## CREATE TABLE IF NOT EXISTS `reserved_open` ( `id` INT(11) NOT NULL AUTO_INCREMENT, - `options` TEXT NULL DEFAULT NULL CHECK (json_valid(`options`)), + `options` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_bin', `date` DATETIME NULL DEFAULT NULL, PRIMARY KEY (`id`), - INDEX `date` (`date`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria; - -###### -# 장수 선택 토큰 + INDEX `date` (`date`), + CONSTRAINT `json` CHECK (json_valid(`options`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 장수 선택 토큰 +############################## CREATE TABLE `select_npc_token` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `owner` INT(11) NOT NULL, `valid_until` DATETIME NOT NULL, `pick_more_from` DATETIME NOT NULL, - `pick_result` TEXT NOT NULL CHECK (json_valid(`pick_result`)), + `pick_result` TEXT NOT NULL COLLATE 'utf8mb4_bin', `nonce` INT(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `owner` (`owner`), - INDEX `valid_until` (`valid_until`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria; - -###### -# 장수 생성 풀 토큰 + INDEX `valid_until` (`valid_until`), + CONSTRAINT `json` CHECK (json_valid(`pick_result`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 장수 생성 풀 토큰 +############################## CREATE TABLE `select_pool` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `unique_name` VARCHAR(20) NOT NULL, @@ -593,36 +579,32 @@ CREATE TABLE `select_pool` ( UNIQUE INDEX `general_id` (`general_id`), INDEX `owner` (`owner`), INDEX `reserved_until` (`reserved_until`, `general_id`) -) -COLLATE='utf8mb4_general_ci' -ENGINE=Aria -; - -################### -# KV storage -################### +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## KV storage +############################## CREATE TABLE IF NOT EXISTS `storage` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `namespace` VARCHAR(40) NOT NULL, `key` VARCHAR(40) NOT NULL, - `value` LONGTEXT NOT NULL CHECK (json_valid(`value`)), + `value` LONGTEXT NOT NULL, PRIMARY KEY (`id`), - UNIQUE INDEX `key` (`namespace`, `key`) -) -COLLATE='utf8mb4_general_ci' -ENGINE=Aria; - + UNIQUE INDEX `key` (`namespace`, `key`), + CONSTRAINT `json` CHECK (json_valid(`value`)) +) COLLATE = 'utf8mb4_bin' ENGINE = Aria; CREATE TABLE IF NOT EXISTS `nation_env` ( `id` INT(11) NOT NULL AUTO_INCREMENT, - `namespace` INT(11) NOT NULL, #storage와 다름! + `namespace` INT(11) NOT NULL, + ##storage와 다름! `key` VARCHAR(40) NOT NULL, - `value` LONGTEXT NOT NULL CHECK (json_valid(`value`)), + `value` LONGTEXT NOT NULL, PRIMARY KEY (`id`), - UNIQUE INDEX `key` (`namespace`, `key`) -) -COLLATE='utf8mb4_general_ci' -ENGINE=Aria; - + UNIQUE INDEX `key` (`namespace`, `key`), + CONSTRAINT `json` CHECK (json_valid(`value`)) +) COLLATE = 'utf8mb4_bin' ENGINE = Aria; +############################## +## 베팅 +############################## CREATE TABLE IF NOT EXISTS `betting` ( `general_id` INT(11) NOT NULL, `bet0` INT(11) NOT NULL DEFAULT 0, @@ -642,9 +624,10 @@ CREATE TABLE IF NOT EXISTS `betting` ( `bet14` INT(11) NOT NULL DEFAULT 0, `bet15` INT(11) NOT NULL DEFAULT 0, PRIMARY KEY (`general_id`) -) -ENGINE=Aria; - +) ENGINE = Aria; +############################## +## 명장일람 +############################## CREATE TABLE `rank_data` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `nation_id` INT(11) NOT NULL DEFAULT 0, @@ -655,11 +638,10 @@ CREATE TABLE `rank_data` ( UNIQUE INDEX `by_general` (`general_id`, `type`), INDEX `by_type` (`type`, `value`), INDEX `by_nation` (`nation_id`, `type`, `value`) -) -COLLATE='utf8mb4_general_ci' -ENGINE=Aria -; - +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 유저 전용 로그 +############################## CREATE TABLE IF NOT EXISTS `user_record` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `user_id` INT(11) NOT NULL, @@ -670,29 +652,32 @@ CREATE TABLE IF NOT EXISTS `user_record` ( `date` DATETIME NULL DEFAULT NULL, `text` TEXT NOT NULL, PRIMARY KEY (`id`), - INDEX `date1` (`user_id`, `server_id`, `log_type`, `year`, `month`, `id`), + INDEX `date1` ( + `user_id`, + `server_id`, + `log_type`, + `year`, + `month`, + `id` + ), INDEX `date2` (`user_id`, `server_id`, `log_type`, `date`, `id`), INDEX `date3` (`server_id`, `date`), INDEX `date4` (`server_id`, `year`, `month`, `date`), INDEX `plain` (`user_id`, `log_type`, `id`) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria -; - +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; +############################## +## 신규 베팅 +############################## CREATE TABLE `ng_betting` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `betting_id` INT(11) NOT NULL, `general_id` INT(11) NOT NULL, `user_id` INT(11) NULL DEFAULT NULL, - `betting_type` VARCHAR(100) NOT NULL COMMENT 'JSON', + `betting_type` VARCHAR(100) NOT NULL COLLATE 'utf8mb4_bin', `amount` INT(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `by_general` (`general_id`, `betting_id`, `betting_type`), UNIQUE INDEX `by_bet` (`betting_id`, `betting_type`, `general_id`), INDEX `by_user` (`user_id`, `betting_id`, `betting_type`), - CONSTRAINT `type_json` CHECK (json_valid(`betting_type`)) -) -DEFAULT CHARSET=utf8mb4 -ENGINE=Aria -; + CONSTRAINT `json` CHECK (json_valid(`betting_type`)) +) COLLATE = 'utf8mb4_general_ci' ENGINE = Aria; \ No newline at end of file