-- -*- 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? );