CREATE TABLE EXTERNEBRON (
    EXTERNEBRON_ID INTEGER PRIMARY KEY
);

CREATE TABLE BANKREKENING (
    BANKREKENING_ID INTEGER PRIMARY KEY,
    BANK VARCHAR(80),
    NUMMER VARCHAR(255),
    TENNAAMSTELLING VARCHAR(80)
);

CREATE TABLE HOOFDREKENING (
    HOOFDREKENING_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(80),
    NUMMER VARCHAR(255),
    OMSCHRIJVING VARCHAR(200),
    PIAHOOFCATEGORIEOMSCHRIJVING VARCHAR(80),
    PIAHOOFDCATEGORIECODE VARCHAR(20),
    SUBCODE VARCHAR(20),
    SUBCODEOMSCHRIJVING VARCHAR(80),
    VALT_BINNEN_HOOFDREKENING_ID INTEGER
);

CREATE TABLE KOSTENPLAATS (
    KOSTENPLAATS_ID INTEGER PRIMARY KEY,
    BTWCODE VARCHAR(255),
    BTWOMSCHRIJVING VARCHAR(80),
    KOSTENPLAATSSOORTCODE DECIMAL(10,2),
    KOSTENPLAATSSOORTOMSCHRIJVING DECIMAL(10,2),
    KOSTENPLAATSTYPECODE DECIMAL(10,2),
    KOSTENPLAATSTYPEOMSCHRIJVING DECIMAL(10,2),
    NAAM VARCHAR(80),
    OMSCHRIJVING VARCHAR(200)
);

CREATE TABLE APPLICATIE (
    APPLICATIE_ID INTEGER PRIMARY KEY,
    APPLICATIEURL VARCHAR(255),
    BEHEERSTATUS INTEGER,
    BELEIDSDOMEIN VARCHAR(255),
    CATEGORIE VARCHAR(255),
    GUID VARCHAR(255),
    NAAM VARCHAR(255),
    OMSCHRIJVING TEXT,
    PACKAGINGSTATUS INTEGER
);

CREATE TABLE BANKAFSCHRIFT (
    BANKAFSCHRIFT_ID INTEGER PRIMARY KEY,
    DATUM DATE,
    HEEFT_BANKREKENING_ID INTEGER,
    NUMMER VARCHAR(255)
);

CREATE TABLE KP_HFDRKNNG_KSTNPLTS (
    KP_HFDRKNNG_KSTNPLTS_ID INTEGER PRIMARY KEY,
    HOOFDREKENING_ID INTEGER,
    KOSTENPLAATS_ID INTEGER
);

CREATE TABLE SUBREKENING (
    SUBREKENING_ID INTEGER PRIMARY KEY,
    HEEFT_HOOFDREKENING_ID INTEGER,
    HEEFT_KOSTENPLAATS_ID INTEGER,
    NAAM VARCHAR(80),
    NUMMER VARCHAR(20),
    OMSCHRIJVING TEXT
);

CREATE TABLE WERKORDER (
    WERKORDER_ID INTEGER PRIMARY KEY,
    CODE VARCHAR(20),
    DOCUMENTNUMMER INTEGER,
    HEEFT_HOOFDREKENING_ID INTEGER,
    HEEFT_KOSTENPLAATS_ID INTEGER,
    NAAM VARCHAR(80),
    OMSCHRIJVING TEXT,
    WERKORDERTYPE VARCHAR(80)
);

CREATE TABLE MUTATIE (
    MUTATIE_ID INTEGER PRIMARY KEY,
    BEDRAG DECIMAL(10,2),
    DATUM DATE,
    HEEFT_BETREKKING_OP_KOSTENPLAATS_ID INTEGER,
    NAAR_HOOFDREKENING_ID INTEGER,
    VAN_HOOFDREKENING_ID INTEGER
);

CREATE TABLE FACTUUR (
    FACTUUR_ID INTEGER PRIMARY KEY,
    BETAALBAARPER DATE,
    BETAALTERMIJN VARCHAR(255),
    CODE VARCHAR(255),
    DATUMFACTUUR DATE,
    FACTUURBEDRAGBTW DECIMAL(10,2),
    FACTUURBEDRAGEXCLUSIEFBTW DECIMAL(10,2),
    OMSCHRIJVING VARCHAR(200),
    SCHRIJFT_OP_KOSTENPLAATS_ID INTEGER
);

CREATE TABLE BATCH (
    BATCH_ID INTEGER PRIMARY KEY,
    DATUM DATE,
    HEEFT_HERKOMST_APPLICATIE_ID INTEGER,
    HEEFT_HERKOMST_EXTERNEBRON_ID INTEGER,
    NUMMER VARCHAR(255),
    TIJD TIMESTAMP
);

CREATE TABLE BANKAFSCHRIFTREGEL (
    BANKAFSCHRIFTREGEL_ID INTEGER PRIMARY KEY,
    BEDRAG DECIMAL(10,2),
    BIJ BOOLEAN,
    DATUM DATE,
    HEEFT_BANKAFSCHRIFT_ID INTEGER,
    LEIDT_TOT_MUTATIE_ID INTEGER,
    REKENINGVAN VARCHAR(255)
);

CREATE TABLE FACTUURREGEL (
    FACTUURREGEL_ID INTEGER PRIMARY KEY,
    AANTAL VARCHAR(255),
    BEDRAGBTW DECIMAL(10,2),
    BEDRAGEXBTW DECIMAL(10,2),
    BTWPERCENTAGE VARCHAR(255),
    HEEFT_FACTUUR_ID INTEGER,
    LEIDT_TOT_MUTATIE_ID INTEGER,
    NUMMER VARCHAR(255),
    OMSCHRIJVING VARCHAR(80)
);

CREATE TABLE BATCHREGEL (
    BATCHREGEL_ID INTEGER PRIMARY KEY,
    BEDRAG DECIMAL(10,2),
    DATUMBETALING DATE,
    HEEFT_BATCH_ID INTEGER,
    LEIDT_TOT_MUTATIE_ID INTEGER,
    OMSCHRIJVING VARCHAR(200),
    REKENINGNAAR VARCHAR(255),
    REKENINGVAN VARCHAR(255)
);

CREATE TABLE BETALING (
    BETALING_ID INTEGER PRIMARY KEY,
    BEDRAG DECIMAL(10,2),
    DATUMTIJD TIMESTAMP,
    KOMT_VOOR_OP_BANKAFSCHRIFTREGEL_ID INTEGER,
    NAAR_BANKREKENING_ID INTEGER,
    OMSCHRIJVING VARCHAR(200),
    VALUTA VARCHAR(255),
    VAN_BANKREKENING_ID INTEGER
);

ALTER TABLE KP_HFDRKNNG_KSTNPLTS ADD CONSTRAINT FK_KP_HFDRKNNG_KSTNPLTS_1 FOREIGN KEY (HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- HOOFDREKENING (many-to-many junction, Connector_ID: 505)

ALTER TABLE KP_HFDRKNNG_KSTNPLTS ADD CONSTRAINT FK_KP_HFDRKNNG_KSTNPLTS_2 FOREIGN KEY (KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- KOSTENPLAATS (many-to-many junction, Connector_ID: 505)

ALTER TABLE MUTATIE ADD CONSTRAINT FK_MUTATIE_HEEFT_BETREKKING_OP FOREIGN KEY (HEEFT_BETREKKING_OP_KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- HEEFT_BETREKKING_OP (0..* to 1, Connector_ID: 483)

ALTER TABLE SUBREKENING ADD CONSTRAINT FK_SUBREKENING_HEEFT FOREIGN KEY (HEEFT_KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- HEEFT (1 to 0..*, Connector_ID: 488)

ALTER TABLE WERKORDER ADD CONSTRAINT FK_WERKORDER_HEEFT FOREIGN KEY (HEEFT_KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- HEEFT (1 to 0..*, Connector_ID: 489)

ALTER TABLE MUTATIE ADD CONSTRAINT FK_MUTATIE_NAAR FOREIGN KEY (NAAR_HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- NAAR (0..* to 1, Connector_ID: 500)

ALTER TABLE MUTATIE ADD CONSTRAINT FK_MUTATIE_VAN FOREIGN KEY (VAN_HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- VAN (0..* to 1, Connector_ID: 501)

ALTER TABLE WERKORDER ADD CONSTRAINT FK_WERKORDER_HEEFT_2 FOREIGN KEY (HEEFT_HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- HEEFT (1 to 0..*, Connector_ID: 502)

ALTER TABLE SUBREKENING ADD CONSTRAINT FK_SUBREKENING_HEEFT_2 FOREIGN KEY (HEEFT_HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- HEEFT (1 to 0..*, Connector_ID: 503)

ALTER TABLE HOOFDREKENING ADD CONSTRAINT FK_HOOFDREKENING_VALT_BINNEN FOREIGN KEY (VALT_BINNEN_HOOFDREKENING_ID) REFERENCES HOOFDREKENING (HOOFDREKENING_ID);
-- VALT_BINNEN (1 to 0..*, Connector_ID: 504)

ALTER TABLE FACTUURREGEL ADD CONSTRAINT FK_FACTUURREGEL_LEIDT_TOT FOREIGN KEY (LEIDT_TOT_MUTATIE_ID) REFERENCES MUTATIE (MUTATIE_ID);
-- LEIDT_TOT (0..1 to 0..1, Connector_ID: 506)

ALTER TABLE FACTUURREGEL ADD CONSTRAINT FK_FACTUURREGEL_HEEFT FOREIGN KEY (HEEFT_FACTUUR_ID) REFERENCES FACTUUR (FACTUUR_ID);
-- HEEFT (1 to 1..*, Connector_ID: 508)

ALTER TABLE FACTUUR ADD CONSTRAINT FK_FACTUUR_SCHRIJFT_OP FOREIGN KEY (SCHRIJFT_OP_KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- SCHRIJFT_OP (0..* to 0..1, Connector_ID: 510)

ALTER TABLE BATCHREGEL ADD CONSTRAINT FK_BATCHREGEL_LEIDT_TOT FOREIGN KEY (LEIDT_TOT_MUTATIE_ID) REFERENCES MUTATIE (MUTATIE_ID);
-- LEIDT_TOT (0..1 to 0..1, Connector_ID: 523)

ALTER TABLE BATCHREGEL ADD CONSTRAINT FK_BATCHREGEL_HEEFT FOREIGN KEY (HEEFT_BATCH_ID) REFERENCES BATCH (BATCH_ID);
-- HEEFT (1 to 0..*, Connector_ID: 524)

ALTER TABLE BATCH ADD CONSTRAINT FK_BATCH_HEEFT_HERKOMST FOREIGN KEY (HEEFT_HERKOMST_EXTERNEBRON_ID) REFERENCES EXTERNEBRON (EXTERNEBRON_ID);
-- HEEFT_HERKOMST (0..* to 1, Connector_ID: 525)

ALTER TABLE BETALING ADD CONSTRAINT FK_BETALING_NAAR FOREIGN KEY (NAAR_BANKREKENING_ID) REFERENCES BANKREKENING (BANKREKENING_ID);
-- NAAR (1 to 0..*, Connector_ID: 526)

ALTER TABLE BETALING ADD CONSTRAINT FK_BETALING_VAN FOREIGN KEY (VAN_BANKREKENING_ID) REFERENCES BANKREKENING (BANKREKENING_ID);
-- VAN (1 to 0..*, Connector_ID: 527)

ALTER TABLE BANKAFSCHRIFTREGEL ADD CONSTRAINT FK_BANKAFSCHRIFTREGEL_LEIDT_TOT FOREIGN KEY (LEIDT_TOT_MUTATIE_ID) REFERENCES MUTATIE (MUTATIE_ID);
-- LEIDT_TOT (0..1 to 0..1, Connector_ID: 529)

ALTER TABLE BANKAFSCHRIFT ADD CONSTRAINT FK_BANKAFSCHRIFT_HEEFT FOREIGN KEY (HEEFT_BANKREKENING_ID) REFERENCES BANKREKENING (BANKREKENING_ID);
-- HEEFT (1 to 0..*, Connector_ID: 530)

ALTER TABLE BANKAFSCHRIFTREGEL ADD CONSTRAINT FK_BANKAFSCHRIFTREGEL_HEEFT FOREIGN KEY (HEEFT_BANKAFSCHRIFT_ID) REFERENCES BANKAFSCHRIFT (BANKAFSCHRIFT_ID);
-- HEEFT (1 to 0..*, Connector_ID: 531)

ALTER TABLE BATCH ADD CONSTRAINT FK_BATCH_HEEFT_HERKOMST_2 FOREIGN KEY (HEEFT_HERKOMST_APPLICATIE_ID) REFERENCES APPLICATIE (APPLICATIE_ID);
-- HEEFT_HERKOMST (1 to 0..*, Connector_ID: 644)

ALTER TABLE BETALING ADD CONSTRAINT FK_BETALING_KOMT_VOOR_OP FOREIGN KEY (KOMT_VOOR_OP_BANKAFSCHRIFTREGEL_ID) REFERENCES BANKAFSCHRIFTREGEL (BANKAFSCHRIFTREGEL_ID);
-- KOMT_VOOR_OP (0..* to 0..1, Connector_ID: 2045)

