1
0
Fork 0
database/20230211045705_words.up.sql

31 lines
959 B
PL/PgSQL

BEGIN;
CREATE TABLE words (
-- name type constraints
id BIGSERIAL PRIMARY KEY,
language_id BIGINT NOT NULL REFERENCES languages (id),
primary_form VARCHAR NOT NULL,
-- CONSTRAINT name CHECK (condition)
CONSTRAINT primary_form_is_sane_text CHECK (is_sane_text(primary_form))
);
CREATE TABLE word_forms (
-- name type constraints
id BIGSERIAL PRIMARY KEY,
word_id BIGINT NOT NULL REFERENCES words (id),
value VARCHAR NOT NULL,
-- CONSTRAINT name CHECK (condition)
CONSTRAINT value_is_sane_text CHECK (is_sane_text(value))
);
CREATE TABLE word_form_example_texts (
id BIGSERIAL PRIMARY KEY,
word_form_id BIGINT NOT NULL REFERENCES word_forms (id),
example_text_id BIGINT NOT NULL REFERENCES example_texts (id)
);
CREATE UNIQUE INDEX word_forms_word_value_index ON word_forms (word_id, value);
COMMIT;