DROP TABLE IF EXISTS application, film, language, subtitle_line, subtitle; /** Store some information on the application. */ CREATE TABLE IF NOT EXISTS application ( id int GENERATED ALWAYS AS IDENTITY, app_key text NOT NULL, app_value text NOT NULL, PRIMARY KEY (id), UNIQUE (app_key) ); /** Film */ CREATE TABLE IF NOT EXISTS film ( id int GENERATED ALWAYS AS IDENTITY, imdb_id varchar(10) NOT NULL, title text NOT NULL, release_date date, poster_link text, PRIMARY KEY (id) ); /** Available languages */ CREATE TABLE IF NOT EXISTS language ( id int GENERATED ALWAYS AS IDENTITY, alpha3_b char(3) NOT NULL, alpha3_t char(3), alpha2 char(2), english text NOT NULL, french text NOT NULL, PRIMARY KEY (id) ); /** Subtitles */ CREATE TABLE IF NOT EXISTS subtitle ( id int GENERATED ALWAYS AS IDENTITY, film_id int NOT NULL, language_id int NOT NULL, importer varchar(37), imported_date timestamptz NOT NULL DEFAULT now(), UNIQUE (film_id, language_id), PRIMARY KEY (id), FOREIGN KEY (film_id) REFERENCES film (id), FOREIGN KEY (language_id) REFERENCES language (id) ); /** Subtitle lines */ CREATE TABLE IF NOT EXISTS subtitle_line ( id int GENERATED ALWAYS AS IDENTITY, subtitle_id int NOT NULL, dialog_line text NOT NULL, time_code text NOT NULL, PRIMARY KEY (id), FOREIGN KEY (subtitle_id) REFERENCES subtitle (id) );