26 lines
1,003 B
SQL
26 lines
1,003 B
SQL
PRAGMA foreign_keys = ON;
|
|
|
|
CREATE TABLE IF NOT EXISTS litters (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
mother_id INTEGER,
|
|
father_id INTEGER,
|
|
birth_date TEXT,
|
|
notes TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY(mother_id) REFERENCES animals(id) ON DELETE SET NULL,
|
|
FOREIGN KEY(father_id) REFERENCES animals(id) ON DELETE SET NULL,
|
|
CHECK (mother_id IS NULL OR father_id IS NULL OR mother_id != father_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS litter_kittens (
|
|
litter_id INTEGER NOT NULL,
|
|
animal_id INTEGER NOT NULL UNIQUE,
|
|
position INTEGER NOT NULL DEFAULT 1,
|
|
PRIMARY KEY(litter_id, animal_id),
|
|
FOREIGN KEY(litter_id) REFERENCES litters(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(animal_id) REFERENCES animals(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_litters_mother ON litters(mother_id);
|
|
CREATE INDEX IF NOT EXISTS idx_litters_father ON litters(father_id);
|
|
CREATE INDEX IF NOT EXISTS idx_litter_kittens_litter ON litter_kittens(litter_id, position);
|