diff --git a/sql/sample.sql b/sql/sample.sql index a6e7706..736ed36 100644 --- a/sql/sample.sql +++ b/sql/sample.sql @@ -4,6 +4,9 @@ INSERT INTO wb_gl VALUES (2, 'Wolkersdorfer Hochleiten'), (3, 'Falkensteiner Hügelland'); +INSERT INTO branch VALUES +('M', 'Matzen'); + -- Wien -- Gemeinde Wien INSERT INTO wb_gem VALUES diff --git a/sql/v01/01.create.sql b/sql/v01/01.create.sql index 2c04b9c..cc250c0 100644 --- a/sql/v01/01.create.sql +++ b/sql/v01/01.create.sql @@ -200,3 +200,79 @@ CREATE TABLE wb_rd ( ON UPDATE CASCADE ON DELETE RESTRICT ) STRICT; + + +---------------------------------------------------------------- + + +CREATE TABLE branch ( + zwstid TEXT NOT NULL CHECK (zwstid REGEXP '[A-Z]'), + name TEXT NOT NULL, + + CONSTRAINT pk_branch PRIMARY KEY (zwstid) +); + +CREATE TABLE member ( + mgnr INTEGER NOT NULL, + + predecessor_mgnr INTEGER DEFAULT NULL, + + prefix TEXT DEFAULT NULL, + given_name TEXT NOT NULL, + middle_names TEXT DEFAULT NULL, + family_name TEXT NOT NULL, + suffix TEXT DEFAULT NULL, + year_of_birth INTEGER CHECK (year_of_birth >= 1000 AND year_of_birth <= 9999) DEFAULT NULL, + entry_date TEXT NOT NULL CHECK (entry_date REGEXP '[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])') DEFAULT CURRENT_DATE, + exit_date TEXT CHECK (exit_date REGEXP '[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])') DEFAULT NULL, + + business_shares INTEGER NOT NULL DEFAULT 0, + accounting_nr TEXT DEFAULT NULL, + + betriebs_nr INTEGER DEFAULT NULL, + uid TEXT CHECK (uid REGEXP '[A-Z]{2}[A-Z0-9]{2,12}') DEFAULT NULL, + voll_lieferant INTEGER NOT NULL CHECK (voll_lieferant IN (0, 1)) DEFAULT 0, + buchführend INTEGER NOT NULL CHECK (buchführend IN (0, 1)) DEFAULT 0, + active INTEGER NOT NULL CHECK (active IN (0, 1)) DEFAULT 1, + + iban TEXT CHECK (iban REGEXP '[A-Z]{2}[0-9]{2}[A-Z0-9]{8,30}') DEFAULT NULL, + bic TEXT CHECK (bic REGEXP '[A-Z0-9]{4}[A-Z]{2}[A-Z0-9]{2}[A-Z0-9]{3}?') DEFAULT NULL, + + country TEXT NOT NULL, + postal_dest TEXT NOT NULL, + address TEXT, + + email TEXT CHECK (email REGEXP '[^@]+@([a-z0-9_\x2D]+\.)[a-z]{2,}') DEFAULT NULL, + phone_landline TEXT CHECK (phone_landline REGEXP '\+[0-9]+') DEFAULT NULL, + phone_mobile TEXT CHECK (phone_landline REGEXP '\+[0-9]+') DEFAULT NULL, + + comment TEXT DEFAULT NULL, + default_kgnr INTEGER NOT NULL, + default_zwstid TEXT NOT NULL, + + CONSTRAINT pk_member PRIMARY KEY (mgnr), + CONSTRAINT fk_member_postal_dest FOREIGN KEY (country, postal_dest) REFERENCES postal_dest (country, id) + ON UPDATE CASCADE + ON DELETE RESTRICT, + CONSTRAINT fk_member_wb_kg FOREIGN KEY (default_kgnr) REFERENCES wb_kg (kgnr) + ON UPDATE CASCADE + ON DELETE RESTRICT, + CONSTRAINT fk_member_branch FOREIGN KEY (default_zwstid) REFERENCES branch (zwstid) + ON UPDATE CASCADE + ON DELETE RESTRICT +) STRICT; + +CREATE TABLE member_billing_address ( + mgnr INTEGER NOT NULL, + + name TEXT NOT NULL, + + country TEXT NOT NULL, + postal_dest TEXT NOT NULL, + address TEXT NOT NULL, + + CONSTRAINT pk_member_billing_address PRIMARY KEY (mgnr), + CONSTRAINT fk_member_billing_address_postal_dest FOREIGN KEY (country, postal_dest) references postal_dest (country, id) + ON UPDATE CASCADE + ON DELETE RESTRICT +) STRICT; diff --git a/tt/STE.csv b/tt/STE.csv index 9d32be5..960c907 100644 --- a/tt/STE.csv +++ b/tt/STE.csv @@ -8,10 +8,11 @@ date;from;to;hours;category;name 2022-11-06;11:45;12:30;0.75;wpf;Dialog Bankverbindung 2022-11-06;20:30;21:00;0.5;wpf;Dialog Bankverbindung 2022-11-08;10:30;11:30;1;structure;Gradation -2022-11-10;17:00;18:00;1;structure;Herkunftsbezeichnungen +2022-11-10;17:00;18:00;1;database;Herkunftsbezeichnungen 2022-11-14;22:00;23:30;1.5;export;VBA Export 2022-11-15;11:00;12:00;1;export;WGdaten export -2022-11-15;15:30;21:30;6;structure;ER Diagram -2022-11-27;21:00;22:00;1;structure;Extract PLZ +2022-11-15;15:30;21:30;6;database;ER Diagram +2022-11-27;21:00;22:00;1;database;Extract PLZ 2022-12-02;13:00;15:30;2.5;meeting;Kickoff Meeting -2023-02-04;13:30;17:30;4;structure;Weinbaugemeinden +2023-02-04;13:30;17:30;4;database;Weinbaugemeinden +2023-02-04;22:00;01:00;3;database;Mitglieder