From 132c691f60e9a2e147d7696532abc04e2c81d4d3 Mon Sep 17 00:00:00 2001 From: James R Miller Date: Sun, 18 Aug 2019 17:41:06 -0500 Subject: [PATCH] initial jab at schema for monsters --- schema/monsters.sql | 97 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 schema/monsters.sql diff --git a/schema/monsters.sql b/schema/monsters.sql new file mode 100644 index 0000000..0b5ff69 --- /dev/null +++ b/schema/monsters.sql @@ -0,0 +1,97 @@ +-- -*- mode:sql sql-product:sqlite -*- + +PRAGMA foreign_keys = ON; + +CREATE TABLE monsters ( + monsters_id INTEGER PRIMARY KEY, + is_comty_use BOOLEAN NOT NULL, -- false = no community use policy req + sources_id INTEGER, + sources_pages TEXT, + "name" TEXT NOT NULL UNIQUE, + "level" INTEGER, + alignment_id INTEGER, -- i.e. NG, LE etc.. + perception INTEGER, + sizes_id INTEGER, -- i.e. large medium small etc.. + ac INTEGER, + fortitude INTEGER, + reflex INTEGER, + will INTEGER, + hp INTEGER, + speed INTEGER, + str_mod INTEGER, + dex_mod INTEGER, + con_mod INTEGER, + int_mod INTEGER, + wis_mod INTEGER, + cha_mod INTEGER, + descr TEXT, -- The idea with this is for this to hold the entire stat block + -- text in it for those that want to do a simple query. I DO + -- intend to break out all the actions etc. into a separate table + -- and do many-to-many joins. Yes, this duplicates some data but + -- this is more for getting markdown formatting of the stat block + -- in one nice column. + FOREIGN KEY (alignments_id) REFERENCES alignments(alignments_id), + FOREIGN KEY (sizes_id) REFERENCES sizes(sizes_id), + FOREIGN KEY (sources_id) REFERENCES sources(sources_id) + +); + +CREATE TABLE monsterflavortexttypes ( + monsterflavortexttypes_id INTEGER PRIMARY KEY, + "name" TEXT NOT NULL UNIQUE + -- page 7 Bestiary + -- 'Monster Category' -- i.e. "Bear" + -- 'Specific Monster' -- i.e. "Grizzly Bear" + -- 'Advice and Rules' + -- 'Related Creatures' + -- 'Additional Lore' + -- 'Treasure and Rewards' + -- 'Locations' +); + +CREATE TABLE monsterflavortexts ( + monsterflavortexts_id INTEGER PRIMARY KEY, + monsterflavortexttypes_id INTEGER, + heading TEXT NOT NULL, + mft_text TEXT NOT NULL, + FOREIGN KEY (monsterflavortexttypes_id) REFERENCES monsterflavortexttypes(monsterflavortexttype_id) +); + +CREATE TABLE monsters_senses ( + id INTEGER PRIMARY KEY, + monsters_id INTEGER NOT NULL, + immunities_id INTEGER NOT NULL, + FOREIGN KEY (monsters_id) REFERENCES monsters(monsters_id), + FOREIGN KEY (senses_id) REFERENCES senses(senses_id) +); + +CREATE TABLE monsters_immunities ( + id INTEGER PRIMARY KEY, + monsters_id INTEGER NOT NULL, + immunities_id INTEGER NOT NULL, + FOREIGN KEY (monsters_id) REFERENCES monsters(monsters_id), + FOREIGN KEY (immunities_id) REFERENCES immunities(immunities_id) +); + +CREATE TABLE monsters_skills ( + id INTEGER PRIMARY KEY, + monsters_id INTEGER NOT NULL, + skills_id INTEGER NOT NULL, + skill_mod INTEGER NOT NULL, + FOREIGN KEY (monsters_id) REFERENCES monsters(monsters_id), + FOREIGN KEY (skills_id) REFERENCES skills(skills_id) +); + +-- TODO does this need to be separate table for monsters only or share the main +-- actions table +CREATE TABLE monsteractions ( + monsteractions_id INTEGER PRIMARY KEY, + "name" TEXT, + -- TODO +); + +CREATE TABLE monsters_actions ( + id INTEGER PRIMARY KEY, + monsters_id INTEGER NOT NULL, + actions_id INTEGER NOT NULL, -- TODO actions table? or monsteractions table? +);