176 lines
3.7 KiB
MySQL
176 lines
3.7 KiB
MySQL
|
-- LegacyWorlds Beta 6
|
||
|
-- PostgreSQL database scripts
|
||
|
--
|
||
|
-- Empires and alliances
|
||
|
--
|
||
|
-- Copyright(C) 2004-2010, DeepClone Development
|
||
|
-- --------------------------------------------------------
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Empires
|
||
|
--
|
||
|
|
||
|
CREATE TABLE emp.empires(
|
||
|
name_id INT NOT NULL PRIMARY KEY ,
|
||
|
cash REAL NOT NULL
|
||
|
CHECK( cash >= 0 ),
|
||
|
debt REAL NOT NULL DEFAULT 0
|
||
|
CHECK( debt >= 0)
|
||
|
);
|
||
|
|
||
|
ALTER TABLE emp.empires
|
||
|
ADD CONSTRAINT fk_empires_name
|
||
|
FOREIGN KEY (name_id) REFERENCES naming.empire_names;
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Empire technologies
|
||
|
--
|
||
|
|
||
|
CREATE TABLE emp.technologies(
|
||
|
empire_id INT NOT NULL ,
|
||
|
line_id INT NOT NULL ,
|
||
|
level INT NOT NULL DEFAULT 1
|
||
|
CHECK( level > 0 ) ,
|
||
|
accumulated REAL NOT NULL DEFAULT 0
|
||
|
CHECK( accumulated >= 0 ),
|
||
|
PRIMARY KEY( empire_id , line_id )
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_technologies_line
|
||
|
ON emp.technologies (line_id);
|
||
|
|
||
|
ALTER TABLE emp.technologies
|
||
|
ADD CONSTRAINT fk_technologies_empire
|
||
|
FOREIGN KEY (empire_id) REFERENCES emp.empires
|
||
|
ON DELETE CASCADE ,
|
||
|
ADD CONSTRAINT fk_technologies_line
|
||
|
FOREIGN KEY (line_id) REFERENCES tech.lines;
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Empire planets
|
||
|
--
|
||
|
|
||
|
CREATE TABLE emp.planets(
|
||
|
planet_id INT NOT NULL PRIMARY KEY ,
|
||
|
empire_id INT NOT NULL
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_planets_empire
|
||
|
ON emp.planets (empire_id);
|
||
|
|
||
|
ALTER TABLE emp.planets
|
||
|
ADD CONSTRAINT fk_eplanets_planet
|
||
|
FOREIGN KEY (planet_id) REFERENCES verse.planets ,
|
||
|
ADD CONSTRAINT fk_eplanets_empire
|
||
|
FOREIGN KEY (empire_id) REFERENCES emp.empires
|
||
|
ON DELETE CASCADE;
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Planets being abandonned
|
||
|
--
|
||
|
|
||
|
CREATE TABLE emp.abandon(
|
||
|
planet_id INT NOT NULL PRIMARY KEY ,
|
||
|
time_left INT NOT NULL CHECK ( time_left > 0 )
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_abandon_ready
|
||
|
ON emp.abandon ( ( time_left = 1 ) );
|
||
|
|
||
|
ALTER TABLE emp.abandon
|
||
|
ADD CONSTRAINT fk_abandon_planet
|
||
|
FOREIGN KEY (planet_id) REFERENCES emp.planets
|
||
|
ON DELETE CASCADE;
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Alliances
|
||
|
--
|
||
|
|
||
|
CREATE TABLE emp.alliances(
|
||
|
id SERIAL NOT NULL PRIMARY KEY ,
|
||
|
tag VARCHAR(5) NOT NULL ,
|
||
|
name VARCHAR(128) NOT NULL ,
|
||
|
leader_id INT NOT NULL
|
||
|
);
|
||
|
|
||
|
CREATE UNIQUE INDEX idx_alliances_tag
|
||
|
ON emp.alliances ( lower(tag) );
|
||
|
CREATE UNIQUE INDEX idx_alliances_leader
|
||
|
ON emp.alliances (leader_id);
|
||
|
|
||
|
ALTER TABLE emp.alliances
|
||
|
ADD CONSTRAINT fk_alliances_leader
|
||
|
FOREIGN KEY (leader_id) REFERENCES emp.empires
|
||
|
ON DELETE CASCADE;
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Alliance membership
|
||
|
--
|
||
|
|
||
|
CREATE TABLE emp.alliance_members(
|
||
|
empire_id INT NOT NULL PRIMARY KEY ,
|
||
|
alliance_id INT NOT NULL ,
|
||
|
is_pending BOOLEAN NOT NULL
|
||
|
DEFAULT TRUE
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_alliancemembers_alliance
|
||
|
ON emp.alliance_members( alliance_id );
|
||
|
|
||
|
ALTER TABLE emp.alliance_members
|
||
|
ADD CONSTRAINT fk_alliancemembers_empire
|
||
|
FOREIGN KEY (empire_id) REFERENCES emp.empires
|
||
|
ON DELETE CASCADE ,
|
||
|
ADD CONSTRAINT fk_alliancemembers_alliance
|
||
|
FOREIGN KEY (alliance_id) REFERENCES emp.alliances
|
||
|
ON DELETE CASCADE;
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Enemy lists, alliances
|
||
|
--
|
||
|
|
||
|
CREATE TABLE emp.enemy_alliances(
|
||
|
empire_id INT NOT NULL ,
|
||
|
alliance_id INT NOT NULL ,
|
||
|
PRIMARY KEY (empire_id,alliance_id)
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_enemyalliances_alliance
|
||
|
ON emp.enemy_alliances (alliance_id);
|
||
|
|
||
|
ALTER TABLE emp.enemy_alliances
|
||
|
ADD CONSTRAINT fk_enemyalliances_empire
|
||
|
FOREIGN KEY (empire_id) REFERENCES emp.empires
|
||
|
ON DELETE CASCADE ,
|
||
|
ADD CONSTRAINT fk_enemyalliances_alliance
|
||
|
FOREIGN KEY (alliance_id) REFERENCES emp.alliances
|
||
|
ON DELETE CASCADE;
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Enemy lists, empires
|
||
|
--
|
||
|
|
||
|
CREATE TABLE emp.enemy_empires(
|
||
|
empire_id INT NOT NULL ,
|
||
|
enemy_id INT NOT NULL ,
|
||
|
PRIMARY KEY (empire_id,enemy_id)
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_enemyempires_enemy
|
||
|
ON emp.enemy_empires (enemy_id);
|
||
|
|
||
|
ALTER TABLE emp.enemy_empires
|
||
|
ADD CONSTRAINT fk_enemyempires_empire
|
||
|
FOREIGN KEY (empire_id) REFERENCES emp.empires
|
||
|
ON DELETE CASCADE ,
|
||
|
ADD CONSTRAINT fk_enemyempires_enemy
|
||
|
FOREIGN KEY (enemy_id) REFERENCES emp.empires
|
||
|
ON DELETE CASCADE;
|