-- Enable foreign key support PRAGMA foreign_keys = ON; -- Words table CREATE TABLE words ( id INTEGER PRIMARY KEY AUTOINCREMENT, spelling TEXT NOT NULL, ipa TEXT NOT NULL, language_id INTEGER NOT NULL, FOREIGN KEY (language_id) REFERENCES languages(id) ); -- Languages table CREATE TABLE languages ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL ); -- Parts of Speech table CREATE TABLE parts_of_speech ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL ); -- Categories table (for noun and verb categories) CREATE TABLE categories ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, part_of_speech_id INTEGER NOT NULL, FOREIGN KEY (part_of_speech_id) REFERENCES parts_of_speech(id) ); -- Word Categories junction table CREATE TABLE word_categories ( word_id INTEGER NOT NULL, category_id INTEGER NOT NULL, PRIMARY KEY (word_id, category_id), FOREIGN KEY (word_id) REFERENCES words(id) ); -- Example data insertion INSERT INTO languages (name) VALUES ('en-us'); INSERT INTO languages (name) VALUES ('th'); INSERT INTO languages (name) VALUES ('zh-cn'); INSERT INTO languages (name) VALUES ('zh-hk'); INSERT INTO languages (name) VALUES ('ja-jp'); INSERT INTO parts_of_speech (name) VALUES ('noun'), ('verb'), ('adjective'), ('adverb'), ('pronoun'), ('adposition'), ('conjunction'); INSERT INTO categories (name, part_of_speech_id) VALUES ('countable', 1), ('uncountable', 1), ('animate', 1), ('inanimate', 1), ('spatial', 1), ('temporal', 1), ('transitive', 2), ('intransitive', 2), ('action', 2), ('mental', 2), ('preposition', 6), ('postposition', 6), ('circumposition', 6); -- Example word insertion INSERT INTO words (spelling, ipa, language_id) VALUES ('book', 'bʊk', 1); -- Categorize 'book' as a countable, inanimate noun INSERT INTO word_categories (word_id, category_id) SELECT (SELECT id FROM words WHERE spelling = 'book'), id FROM categories WHERE name IN ('countable', 'inanimate'); -- Example verb insertion INSERT INTO words (spelling, ipa, language_id) VALUES ('think','θɪŋk', 1); -- Categorize 'think' as an intransitive, mental verb INSERT INTO word_categories (word_id, category_id) SELECT (SELECT id FROM words WHERE spelling = 'think'), id FROM categories WHERE name IN ('intransitive', 'mental');