feat(db): RESTRICT vocabulary deletes; non-empty label/lang constraints
This commit is contained in:
@@ -6,15 +6,15 @@ CREATE TABLE vocabulary (
|
|||||||
|
|
||||||
CREATE TABLE term (
|
CREATE TABLE term (
|
||||||
id UUID PRIMARY KEY,
|
id UUID PRIMARY KEY,
|
||||||
vocabulary_id UUID NOT NULL REFERENCES vocabulary (id) ON DELETE CASCADE,
|
vocabulary_id UUID NOT NULL REFERENCES vocabulary (id) ON DELETE RESTRICT,
|
||||||
external_uri TEXT -- e.g. Getty AAT / KulturNav / Wikidata URI
|
external_uri TEXT -- e.g. Getty AAT / KulturNav / Wikidata URI
|
||||||
);
|
);
|
||||||
CREATE INDEX term_vocabulary_idx ON term (vocabulary_id);
|
CREATE INDEX term_vocabulary_idx ON term (vocabulary_id);
|
||||||
|
|
||||||
CREATE TABLE term_label (
|
CREATE TABLE term_label (
|
||||||
term_id UUID NOT NULL REFERENCES term (id) ON DELETE CASCADE,
|
term_id UUID NOT NULL REFERENCES term (id) ON DELETE CASCADE,
|
||||||
lang TEXT NOT NULL, -- BCP-47, e.g. 'sv', 'en'
|
lang TEXT NOT NULL CHECK (lang <> ''),
|
||||||
label TEXT NOT NULL,
|
label TEXT NOT NULL CHECK (label <> ''),
|
||||||
PRIMARY KEY (term_id, lang)
|
PRIMARY KEY (term_id, lang)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ CREATE INDEX authority_kind_idx ON authority (kind);
|
|||||||
|
|
||||||
CREATE TABLE authority_label (
|
CREATE TABLE authority_label (
|
||||||
authority_id UUID NOT NULL REFERENCES authority (id) ON DELETE CASCADE,
|
authority_id UUID NOT NULL REFERENCES authority (id) ON DELETE CASCADE,
|
||||||
lang TEXT NOT NULL,
|
lang TEXT NOT NULL CHECK (lang <> ''),
|
||||||
label TEXT NOT NULL,
|
label TEXT NOT NULL CHECK (label <> ''),
|
||||||
PRIMARY KEY (authority_id, lang)
|
PRIMARY KEY (authority_id, lang)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user