BEGIN; ALTER TABLE languages DROP COLUMN english_name; ALTER TABLE languages DROP COLUMN self_name; CREATE TABLE language_names ( -- name type constraints id BIGSERIAL PRIMARY KEY, lang_id BIGINT NOT NULL REFERENCES languages (id), name_lang_id BIGINT NOT NULL REFERENCES languages (id), value VARCHAR NOT NULL, -- CONSTRAINT name CHECK (condition) CONSTRAINT value_is_sane_text CHECK (is_sane_text(value)) ); CREATE UNIQUE INDEX languages_lang_name_lang ON language_names (lang_id, name_lang_id); COMMIT;