2023-02-18 08:13:28 -05:00
|
|
|
BEGIN;
|
|
|
|
|
|
|
|
CREATE TABLE translations (
|
|
|
|
-- name type constraints
|
|
|
|
id BIGSERIAL PRIMARY KEY,
|
|
|
|
word_id BIGINT NOT NULL REFERENCES words (id),
|
|
|
|
index BIGINT NOT NULL,
|
|
|
|
|
|
|
|
-- CONSTRAINT name CHECK (condition)
|
|
|
|
CONSTRAINT index_is_not_negative CHECK (index >= 0)
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE translation_texts (
|
|
|
|
-- name type constraints
|
|
|
|
id BIGSERIAL PRIMARY KEY,
|
|
|
|
translation_id BIGINT NOT NULL REFERENCES translations (id),
|
|
|
|
lang_id BIGINT NOT NULL REFERENCES languages (id),
|
|
|
|
value TEXT NOT NULL,
|
2023-02-18 08:39:25 -05:00
|
|
|
commentary TEXT,
|
2023-02-18 08:13:28 -05:00
|
|
|
|
2023-02-18 08:39:25 -05:00
|
|
|
-- CONSTRAINT name CHECK (condition)
|
|
|
|
CONSTRAINT value_is_sane_text CHECK (is_sane_text(value)),
|
|
|
|
CONSTRAINT commentary_is_sane_text CHECK (commentary IS NULL OR
|
|
|
|
is_sane_text(commentary))
|
2023-02-18 08:13:28 -05:00
|
|
|
);
|
|
|
|
|
|
|
|
CREATE UNIQUE INDEX translations_word_index ON translations (word_id, index);
|
|
|
|
CREATE UNIQUE INDEX translation_texts_translation_lang
|
|
|
|
ON translation_texts (translation_id, lang_id);
|
|
|
|
|
|
|
|
COMMIT;
|