|
|
@@ -0,0 +1,273 @@
|
|
|
+CREATE TABLE player(
|
|
|
+ uid INT PRIMARY KEY NOT NULL,
|
|
|
+ name TEXT NOT NULL UNIQUE,
|
|
|
+ mail TEXT NOT NULL UNIQUE,
|
|
|
+ password TEXT NOT NULL,
|
|
|
+ api_key TEXT NOT NULL UNIQUE,
|
|
|
+ mana INT NOT NULL CHECK (mana >= 0),
|
|
|
+ crystal INT NOT NULL CHECK (crystal >= 0),
|
|
|
+ country TEXT,
|
|
|
+ lang TEXT,
|
|
|
+ level INT NOT NULL CHECK (level BETWEEN 1 AND 50),
|
|
|
+ experience INT NOT NULL CHECK (experience >= 0),
|
|
|
+ energy INT NOT NULL CHECK (energy >= 0),
|
|
|
+ energy_max INT NOT NULL CHECK (energy_max >= 0),
|
|
|
+ energy_per_min INT NOT NULL CHECK (energy_per_min >= 0),
|
|
|
+ arena_energy INT NOT NULL CHECK (arena_energy >= 0),
|
|
|
+ arena_energy_max INT NOT NULL CHECK (arena_energy_max >= 0),
|
|
|
+ rep INT REFERENCES unit(id),
|
|
|
+ social_point INT NOT NULL CHECK (social_point >= 0),
|
|
|
+ honor_point INT NOT NULL CHECK (honor_point >= 0),
|
|
|
+ guild_point INT NOT NULL CHECK (guild_point >= 0),
|
|
|
+ darkportal_energy INT NOT NULL CHECK (darkportal_energy >= 0),
|
|
|
+ darkportal_energy_max INT NOT NULL CHECK (darkportal_energy_max >= 0),
|
|
|
+ dimension_energy INT NOT NULL CHECK (dimension_energy >= 0),
|
|
|
+ dimension_energy_max INT NOT NULL CHECK (dimension_energy_max >= 0),
|
|
|
+ costume_point INT NOT NULL CHECK (costume_point >= 0),
|
|
|
+ costume_point_max INT NOT NULL CHECK (costume_point_max >= 0),
|
|
|
+ honor_medal INT NOT NULL CHECK (honor_medal >= 0),
|
|
|
+ honor_mark INT NOT NULL CHECK (honor_mark >= 0),
|
|
|
+ event_coin INT NOT NULL CHECK (event_coin >= 0),
|
|
|
+ storage_slots INT NOT NULL CHECK (storage_slots >= 0),
|
|
|
+ island INT NOT NULL CHECK (island >= 0)
|
|
|
+);
|
|
|
+CREATE TABLE scenario(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ region INT NOT NULL REFERENCES k_area(id),
|
|
|
+ difficulty INT NOT NULL REFERENCES k_difficulty(id),
|
|
|
+ cleared INT CHECK(cleared IN (0, 1)),
|
|
|
+ max_cleared INT CHECK(cleared BETWEEN 0 AND 6),
|
|
|
+ PRIMARY KEY (uid, region, difficulty, max_cleared)
|
|
|
+);
|
|
|
+CREATE TABLE defense(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ unit INT NOT NULL REFERENCES unit(id),
|
|
|
+ position INT NOT NULL CHECK(position BETWEEN 1 AND 4),
|
|
|
+ PRIMARY KEY (uid, unit)
|
|
|
+);
|
|
|
+CREATE TABLE unit(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT PRIMARY KEY NOT NULL,
|
|
|
+ building TEXT, -- TODO
|
|
|
+ unit INT NOT NULL REFERENCES unit(id),
|
|
|
+ level INT NOT NULL CHECK(level BETWEEN 1 AND 40),
|
|
|
+ stars INT INT NOT NULL CHECK(stars BETWEEN 1 AND 6),
|
|
|
+ hp INT NOT NULL CHECK(hp >= 0),
|
|
|
+ attack INT NOT NULL CHECK(attack >= 0),
|
|
|
+ defense INT NOT NULL CHECK(defense >= 0),
|
|
|
+ speed INT NOT NULL CHECK(speed >= 0),
|
|
|
+ crit_rate INT NOT NULL CHECK(crit_rate >= 0),
|
|
|
+ crit_damage INT NOT NULL CHECK(crit_damage >= 0),
|
|
|
+ resistance INT NOT NULL CHECK(resistance >= 0),
|
|
|
+ accuracy INT NOT NULL CHECK(accuracy >= 0),
|
|
|
+ experience INT NOT NULL CHECK(experience >= 0),
|
|
|
+ exp_gained INT NOT NULL CHECK(exp_gained >= 0),
|
|
|
+ exp_gain_rate INT NOT NULL CHECK(exp_gain_rate >= 0),
|
|
|
+ costume INT,
|
|
|
+ attribute INT, -- TODO: Element?
|
|
|
+ source INT REFERENCES k_source(id),
|
|
|
+ create_time DATETIME NOT NULL,
|
|
|
+ homunculus INT NOT NULL CHECK(homunculus IN (0, 1)),
|
|
|
+ homunculus_name TEXT,
|
|
|
+ lock INT NOT NULL CHECK(homunculus IN (0, 1))
|
|
|
+);
|
|
|
+CREATE TABLE unit_skill(
|
|
|
+ unit INT NOT NULL REFERENCES unit(id),
|
|
|
+ skill INT NOT NULL REFERENCES k_skill(id),
|
|
|
+ level INT NOT NULL CHECK(level > 0),
|
|
|
+ PRIMARY KEY (unit, skill)
|
|
|
+);
|
|
|
+CREATE TABLE rune(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT PRIMARY KEY NOT NULL,
|
|
|
+ assigned_to INT REFERENCES unit(id),
|
|
|
+ type INT REFERENCES k_rune_set(id),
|
|
|
+ slot INT NOT NULL CHECK(slot BETWEEN 1 AND 6),
|
|
|
+ stars INT NOT NULL CHECK(stars BETWEEN 1 AND 6),
|
|
|
+ ancient INT NOT NULL CHECK(ancient IN (0, 1)),
|
|
|
+ level INT NOT NULL CHECK(level BETWEEN 0 AND 15),
|
|
|
+ quality INT NOT NULL REFERENCES k_quality(id),
|
|
|
+ original_quality INT NOT NULL REFERENCES k_quality(id),
|
|
|
+ value INT NOT NULL CHECK(value > 0),
|
|
|
+ efficiency FLOAT NOT NULL CHECK(efficiency BETWEEN 0 AND 100),
|
|
|
+ max_efficiency FLOAT NOT NULL CHECK(max_efficiency BETWEEN 0 AND 100),
|
|
|
+ main_stat INT NOT NULL REFERENCES k_rune_stat(id),
|
|
|
+ main_stat_value INT NOT NULL CHECK(value > 0),
|
|
|
+ innate_stat INT REFERENCES k_rune_stat(id),
|
|
|
+ innate_stat_value INT CHECK(innate_stat_value >= 0),
|
|
|
+ substat_1 INT REFERENCES k_rune_stat(id),
|
|
|
+ substat_1_value INT CHECK(substat_1_value >= 0),
|
|
|
+ substat_1_enchant INT CHECK(substat_1_enchant IN (0, 1)),
|
|
|
+ substat_1_grind INT CHECK(substat_1_grind >= 0),
|
|
|
+ substat_2 INT REFERENCES k_rune_stat(id),
|
|
|
+ substat_2_value INT CHECK(substat_2_value >= 0),
|
|
|
+ substat_2_enchant INT CHECK(substat_2_enchant IN (0, 1)),
|
|
|
+ substat_2_grind INT CHECK(substat_2_grind >= 0),
|
|
|
+ substat_3 INT REFERENCES k_rune_stat(id),
|
|
|
+ substat_3_value INT CHECK(substat_3_value >= 0),
|
|
|
+ substat_3_enchant INT CHECK(substat_3_enchant IN (0, 1)),
|
|
|
+ substat_3_grind INT CHECK(substat_3_grind >= 0),
|
|
|
+ substat_4 INT REFERENCES k_rune_stat(id),
|
|
|
+ substat_4_value INT CHECK(substat_4_value >= 0),
|
|
|
+ substat_4_enchant INT CHECK(substat_4_enchant IN (0, 1)),
|
|
|
+ substat_4_grind INT CHECK(substat_4_grind >= 0)
|
|
|
+);
|
|
|
+CREATE TABLE inventory(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT NOT NULL REFERENCES k_inventory(id),
|
|
|
+ type INT NOT NULL REFERENCES k_inventory_type(id),
|
|
|
+ amount INT NOT NULL CHECK(amount >= 0)
|
|
|
+);
|
|
|
+CREATE TABLE summon_special(
|
|
|
+ week DATETIME NOT NULL,
|
|
|
+ unit INT NOT NULL REFERENCES k_unit(id),
|
|
|
+ PRIMARY KEY (week, unit)
|
|
|
+);
|
|
|
+CREATE TABLE guild(
|
|
|
+ id INT NOT NULL PRIMARY KEY,
|
|
|
+ name TEXT NOT NULL,
|
|
|
+ level INT NOT NULL CHECK(level BETWEEN 0 AND 100),
|
|
|
+ experience NOT NULL CHECK(experience >= 0),
|
|
|
+ recruiting NOT NULL CHECK(recruiting IN (0, 1)),
|
|
|
+ members INT NOT NULL CHECK(level BETWEEN 0 AND 30),
|
|
|
+ leader INT REFERENCES guild_member(id),
|
|
|
+ comment TEXT,
|
|
|
+ notice TEXT
|
|
|
+);
|
|
|
+CREATE TABLE guild_member(
|
|
|
+ id INT NOT NULL PRIMARY KEY,
|
|
|
+ guild INT NOT NULL REFERENCES guild(id),
|
|
|
+ grade INT NOT NULL CHECK(grade BETWEEN 1 AND 3),
|
|
|
+ name TEXT NOT NULL,
|
|
|
+ level INT NOT NULL CHECK(level BETWEEN 1 AND 50),
|
|
|
+ rating INT NOT NULL CHECK(rating >= 0),
|
|
|
+ arena_score INT NOT NULL CHECK(arena_score >= 0),
|
|
|
+ joined TIMESTAMP NOT NULL,
|
|
|
+ last_login TIMESTAMP NOT NULL,
|
|
|
+ in_war INT NOT NULL CHECK(in_war IN (0, 1)),
|
|
|
+ has_defense INT NOT NULL CHECK(has_defense IN (0, 1))
|
|
|
+);
|
|
|
+CREATE TABLE rune_craft(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT NOT NULL PRIMARY KEY,
|
|
|
+ type INT NOT NULL CHECK(type BETWEEN 1 AND 4),
|
|
|
+ quality INT NOT NULL REFERENCES k_quality(id),
|
|
|
+ rune INT NOT NULL REFERENCES k_rune_set(id),
|
|
|
+ stat INT NOT NULL REFERENCES k_rune_stat(id),
|
|
|
+ value INT NOT NULL CHECK(value >= 0)
|
|
|
+);
|
|
|
+CREATE TABLE run_party(
|
|
|
+ run INT NOT NULL REFERENCES run(id),
|
|
|
+ unit INT NOT NULL REFERENCES unit(id),
|
|
|
+ k_unit INT NOT NULL REFERENCES k_unit(id),
|
|
|
+ PRIMARY KEY (run, unit)
|
|
|
+);
|
|
|
+CREATE TABLE run_drop_rune_craft(
|
|
|
+ run INT NOT NULL REFERENCES run(id),
|
|
|
+ id INT NOT NULL PRIMARY KEY,
|
|
|
+ type INT NOT NULL REFERENCES k_rune_craft_type(id), -- TODO: Duplicated??
|
|
|
+ quality INT NOT NULL REFERENCES k_quality(id),
|
|
|
+ rune INT NOT NULL REFERENCES k_rune_set(id),
|
|
|
+ stat INT NOT NULL REFERENCES k_rune_stat(id),
|
|
|
+ value INT NOT NULL CHECK(value >= 0)
|
|
|
+);
|
|
|
+CREATE TABLE run_drop_unit(
|
|
|
+ run INT NOT NULL REFERENCES run(id),
|
|
|
+ unit INT NOT NULL REFERENCES kunit(id),
|
|
|
+ PRIMARY KEY (run, unit)
|
|
|
+);
|
|
|
+CREATE TABLE run_drop_sd(
|
|
|
+ run INT NOT NULL REFERENCES run(id),
|
|
|
+ unit INT NOT NULL REFERENCES kunit(id),
|
|
|
+ PRIMARY KEY (run, unit)
|
|
|
+);
|
|
|
+CREATE TABLE run_drop_unit_pieces(
|
|
|
+ run INT NOT NULL REFERENCES run(id),
|
|
|
+ unit INT NOT NULL REFERENCES kunit(id),
|
|
|
+ amount INT NOT NULL CHECK(amount > 0),
|
|
|
+ PRIMARY KEY (run, unit)
|
|
|
+);
|
|
|
+CREATE TABLE run_drop_shapeshifting(
|
|
|
+ run INT NOT NULL PRIMARY KEY REFERENCES run(id),
|
|
|
+ amount INT NOT NULL CHECK(amount > 0)
|
|
|
+);
|
|
|
+CREATE TABLE team_unit(
|
|
|
+ team INT NOT NULL REFERENCES team(id),
|
|
|
+ unit INT NOT NULL REFERENCES unit(id),
|
|
|
+ PRIMARY KEY(team, unit)
|
|
|
+);
|
|
|
+CREATE TABLE run(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT NOT NULL PRIMARY KEY,
|
|
|
+ dtime TIMESTAMP NOT NULL,
|
|
|
+ area INT NOT NULL REFERENCES k_area,
|
|
|
+ stage INT CHECK(stage > 0),
|
|
|
+ difficulty INT REFERENCES k_difficulty(id),
|
|
|
+ win INT NOT NULL CHECK(win IN (0, 1)),
|
|
|
+ time INT NOT NULL CHECK(time > 0),
|
|
|
+ mana INT NOT NULL CHECK(mana >= 0),
|
|
|
+ energy INT NOT NULL CHECK(energy >= 0),
|
|
|
+ crystal INT NOT NULL CHECK(crystal >= 0),
|
|
|
+ helper INT NOT NULL CHECK(helper IN (0, 1))
|
|
|
+);
|
|
|
+CREATE TABLE run_drop_rune(
|
|
|
+ run INT NOT NULL REFERENCES run(id),
|
|
|
+ id INT NOT NULL PRIMARY KEY REFERENCES rune(id),
|
|
|
+ type INT REFERENCES k_rune_set(id),
|
|
|
+ slot INT NOT NULL CHECK(slot BETWEEN 1 AND 6),
|
|
|
+ stars INT NOT NULL CHECK(stars BETWEEN 1 AND 6),
|
|
|
+ ancient INT NOT NULL CHECK(ancient IN (0, 1)),
|
|
|
+ quality INT NOT NULL REFERENCES k_quality(id),
|
|
|
+ value INT NOT NULL CHECK(value > 0),
|
|
|
+ efficiency FLOAT NOT NULL CHECK(efficiency BETWEEN 0 AND 100),
|
|
|
+ main_stat INT NOT NULL REFERENCES k_rune_stat(id),
|
|
|
+ main_stat_value INT NOT NULL CHECK(value > 0),
|
|
|
+ innate_stat INT REFERENCES k_rune_stat(id),
|
|
|
+ innate_stat_value INT CHECK(innate_stat_value >= 0),
|
|
|
+ substat_1 INT REFERENCES k_rune_stat(id),
|
|
|
+ substat_1_value INT CHECK(substat_1_value >= 0),
|
|
|
+ substat_2 INT REFERENCES k_rune_stat(id),
|
|
|
+ substat_2_value INT CHECK(substat_2_value >= 0),
|
|
|
+ substat_3 INT REFERENCES k_rune_stat(id),
|
|
|
+ substat_3_value INT CHECK(substat_3_value >= 0),
|
|
|
+ substat_4 INT REFERENCES k_rune_stat(id),
|
|
|
+ substat_4_value INT CHECK(substat_4_value >= 0)
|
|
|
+);
|
|
|
+CREATE TABLE run_drop_item(
|
|
|
+ run INT NOT NULL REFERENCES run(id),
|
|
|
+ item INT NOT NULL REFERENCES k_inventory(id),
|
|
|
+ amount INT NOT NULL CHECK(amount > 0),
|
|
|
+ PRIMARY KEY (run, item)
|
|
|
+);
|
|
|
+CREATE TABLE filter(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT NOT NULL PRIMARY KEY,
|
|
|
+ page TEXT NOT NULL,
|
|
|
+ name INT NOT NULL,
|
|
|
+ description TEXT,
|
|
|
+ condition TEXT NOT NULL
|
|
|
+);
|
|
|
+CREATE TABLE team(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT NOT NULL PRIMARY KEY,
|
|
|
+ name INT NOT NULL,
|
|
|
+ description TEXT,
|
|
|
+ area_type INT NOT NULL REFERENCES k_area_type(id),
|
|
|
+ area INT REFERENCES k_area(id),
|
|
|
+ stage INT,
|
|
|
+ difficulty INT REFERENCES k_difficulty(id)
|
|
|
+);
|
|
|
+CREATE TABLE building(
|
|
|
+ -- No primary key, can have multiple towers
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT NOT NULL,
|
|
|
+ building INT NOT NULL REFERENCES k_building(id),
|
|
|
+ gain INT NOT NULL CHECK(gain >= 0)
|
|
|
+);
|
|
|
+CREATE TABLE decoration(
|
|
|
+ uid INT NOT NULL REFERENCES player(id),
|
|
|
+ id INT NOT NULL,
|
|
|
+ decoration INT NOT NULL REFERENCES k_decoration(id),
|
|
|
+ level INT NOT NULL CHECK(level > 0),
|
|
|
+ PRIMARY KEY (uid, decoration)
|
|
|
+);
|