Update create.sql

This commit is contained in:
2022-11-29 23:19:34 +01:00
parent 8e179bd0d3
commit 45169a6557

View File

@ -1,11 +1,13 @@
PRAGMA foreign_keys = ON;
CREATE TABLE country ( CREATE TABLE country (
alpha2 TEXT NOT NULL CHECK(LENGTH(alpha2) = 2), alpha2 TEXT NOT NULL CHECK (alpha2 REGEXP '[A-Z]{2}'),
alpha3 TEXT NOT NULL CHECK(LENGTH(alpha3) = 3), alpha3 TEXT NOT NULL CHECK (alpha3 REGEXP '[A-Z]{3}'),
num INTEGER NOT NULL CHECK(num >= 0), num INTEGER NOT NULL CHECK (num >= 0),
name TEXT NOT NULL, name TEXT NOT NULL,
is_visible INTEGER NOT NULL CHECK(is_visible = TRUE OR is_visible = FALSE) DEFAULT TRUE, is_visible INTEGER NOT NULL CHECK (is_visible = TRUE OR is_visible = FALSE) DEFAULT TRUE,
CONSTRAINT pk_country PRIMARY KEY (alpha2), CONSTRAINT pk_country PRIMARY KEY (alpha2),
CONSTRAINT sk_country_alpha3 UNIQUE (alpha3), CONSTRAINT sk_country_alpha3 UNIQUE (alpha3),
@ -14,7 +16,7 @@ CREATE TABLE country (
) STRICT; ) STRICT;
CREATE TABLE currency ( CREATE TABLE currency (
code TEXT NOT NULL CHECK(LENGTH(code) = 3), code TEXT NOT NULL CHECK (code REGEXP '[A-Z]{3}'),
name TEXT NOT NULL, name TEXT NOT NULL,
symbol TEXT, symbol TEXT,
@ -24,8 +26,8 @@ CREATE TABLE currency (
) STRICT; ) STRICT;
CREATE TABLE wine_variety ( CREATE TABLE wine_variety (
code TEXT NOT NULL CHECK(LENGTH(code) = 2), code TEXT NOT NULL CHECK (code REGEXP '[A-Z]{2}'),
type TEXT NOT NULL CHECK(type IN ('R', 'W')), type TEXT NOT NULL CHECK (type IN ('R', 'W')),
name TEXT NOT NULL, name TEXT NOT NULL,
comment TEXT, comment TEXT,
@ -33,7 +35,7 @@ CREATE TABLE wine_variety (
) STRICT; ) STRICT;
CREATE TABLE AT_bundesland ( CREATE TABLE AT_bundesland (
id INTEGER NOT NULL CHECK(id >= 0), id INTEGER NOT NULL CHECK (id >= 0),
short1 TEXT NOT NULL, short1 TEXT NOT NULL,
short2 TEXT, short2 TEXT,
name TEXT NOT NULL, name TEXT NOT NULL,
@ -44,32 +46,43 @@ CREATE TABLE AT_bundesland (
CONSTRAINT sk_AT_bundesland_name UNIQUE (name) CONSTRAINT sk_AT_bundesland_name UNIQUE (name)
) STRICT; ) STRICT;
CREATE TABLE AT_gemeinde ( CREATE TABLE AT_gem (
gkz INTEGER NOT NULL CHECK(gkz >= 10000 AND gkz <= 99999), gkz INTEGER NOT NULL CHECK (gkz >= 10000 AND gkz <= 99999),
land_id INTEGER NOT NULL CHECK(land_id = gkz / 10000), land_id INTEGER NOT NULL GENERATED ALWAYS AS (gkz / 10000) VIRTUAL,
name TEXT NOT NULL, name TEXT NOT NULL,
CONSTRAINT pk_AT_gemeinde PRIMARY KEY (gkz), CONSTRAINT pk_AT_gem PRIMARY KEY (gkz),
CONSTRAINT fk_AT_gemeinde_AT_bundesland FOREIGN KEY (land_id) REFERENCES AT_bundesland (id) CONSTRAINT fk_AT_gem_AT_bundesland FOREIGN KEY (land_id) REFERENCES AT_bundesland (id)
ON UPDATE CASCADE
ON DELETE RESTRICT
) STRICT;
CREATE TABLE AT_kg (
kgnr INTEGER NOT NULL CHECK (kgnr > 0 AND kgnr < 100000),
gkz INTEGER NOT NULL,
name TEXT NOT NULL,
CONSTRAINT pk_AT_kg PRIMARY KEY (kgnr),
CONSTRAINT fk_AT_kg_AT_gem FOREIGN KEY (gkz) REFERENCES AT_gem (gkz)
ON UPDATE CASCADE ON UPDATE CASCADE
ON DELETE RESTRICT ON DELETE RESTRICT
) STRICT; ) STRICT;
CREATE TABLE AT_ort ( CREATE TABLE AT_ort (
okz INTEGER NOT NULL CHECK(okz > 0), okz INTEGER NOT NULL CHECK (okz > 0 AND okz < 100000),
gkz INTEGER NOT NULL, kgnr INTEGER NOT NULL,
name TEXT NOT NULL, name TEXT NOT NULL,
CONSTRAINT pk_AT_ort PRIMARY KEY (okz), CONSTRAINT pk_AT_ort PRIMARY KEY (okz),
CONSTRAINT fk_AT_ort_AT_gemeinde FOREIGN KEY (gkz) REFERENCES AT_gemeinde (gkz) CONSTRAINT fk_AT_ort_AT_kg FOREIGN KEY (kgnr) REFERENCES AT_kg (kgnr)
ON UPDATE CASCADE ON UPDATE CASCADE
ON DELETE RESTRICT ON DELETE RESTRICT
) STRICT; ) STRICT;
CREATE TABLE AT_plz ( CREATE TABLE AT_plz (
plz INTEGER NOT NULL CHECK(plz >= 1000 AND plz <= 9999), plz INTEGER NOT NULL CHECK (plz >= 1000 AND plz <= 9999),
okz INTEGER NOT NULL, okz INTEGER NOT NULL,
id INTEGER NOT NULL CHECK(id = plz * 100000 + okz), id INTEGER NOT NULL GENERATED ALWAYS AS (plz * 100000 + okz) STORED,
name TEXT NOT NULL, name TEXT NOT NULL,
CONSTRAINT pk_AT_plz PRIMARY KEY (plz, okz), CONSTRAINT pk_AT_plz PRIMARY KEY (plz, okz),
@ -80,7 +93,7 @@ CREATE TABLE AT_plz (
) STRICT; ) STRICT;
CREATE TABLE origin ( CREATE TABLE origin (
code TEXT NOT NULL CHECK(LENGTH(code) = 4), code TEXT NOT NULL CHECK (code REGEXP '[A-Z]{4}'),
parent_code TEXT, parent_code TEXT,
name TEXT NOT NULL, name TEXT NOT NULL,