| PRAGMA foreign_keys = ON; |
|
|
| CREATE TABLE IF NOT EXISTS shows ( |
| id INTEGER PRIMARY KEY, |
| show_number INTEGER, |
| air_date TEXT, |
| title TEXT |
| ); |
|
|
| CREATE TABLE IF NOT EXISTS rounds ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| show_id INTEGER NOT NULL REFERENCES shows(id) ON DELETE CASCADE, |
| name TEXT NOT NULL CHECK (name IN ('jeopardy','double','final')), |
| UNIQUE (show_id, name) |
| ); |
|
|
| CREATE TABLE IF NOT EXISTS categories ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| round_id INTEGER NOT NULL REFERENCES rounds(id) ON DELETE CASCADE, |
| position INTEGER NOT NULL, |
| name TEXT NOT NULL, |
| comments TEXT, |
| UNIQUE (round_id, position) |
| ); |
|
|
| CREATE TABLE IF NOT EXISTS clues ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| round_id INTEGER NOT NULL REFERENCES rounds(id) ON DELETE CASCADE, |
| category_id INTEGER NOT NULL REFERENCES categories(id) ON DELETE CASCADE, |
| row_index INTEGER, |
| value INTEGER, |
| is_daily_double INTEGER NOT NULL DEFAULT 0, |
| question TEXT NOT NULL, |
| answer TEXT NOT NULL, |
| media TEXT, |
| UNIQUE (round_id, category_id, row_index) |
| ); |
|
|
| CREATE INDEX IF NOT EXISTS idx_rounds_show ON rounds(show_id); |
| CREATE INDEX IF NOT EXISTS idx_categories_round ON categories(round_id); |
| CREATE INDEX IF NOT EXISTS idx_clues_cat_row ON clues(category_id, row_index); |
| CREATE INDEX IF NOT EXISTS idx_clues_round_value ON clues(round_id, value); |
|
|