CREATE TABLE EXTERNEBRON (
    EXTERNEBRON_ID NUMBER PRIMARY KEY
);

CREATE TABLE BANKREKENING (
    BANKREKENING_ID NUMBER PRIMARY KEY,
    BANK VARCHAR2(80),
    NUMMER VARCHAR2(255),
    TENNAAMSTELLING VARCHAR2(80)
);

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

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

CREATE TABLE APPLICATIE (
    APPLICATIE_ID NUMBER PRIMARY KEY,
    APPLICATIEURL VARCHAR2(255),
    BEHEERSTATUS NUMBER,
    BELEIDSDOMEIN VARCHAR2(255),
    CATEGORIE VARCHAR2(255),
    GUID VARCHAR2(255),
    NAAM VARCHAR2(255),
    OMSCHRIJVING CLOB,
    PACKAGINGSTATUS NUMBER
);

CREATE TABLE BANKAFSCHRIFT (
    BANKAFSCHRIFT_ID NUMBER PRIMARY KEY,
    DATUM DATE,
    HEEFT_BANKREKENING_ID NUMBER,
    NUMMER VARCHAR2(255)
);

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

CREATE TABLE SUBREKENING (
    SUBREKENING_ID NUMBER PRIMARY KEY,
    HEEFT_HOOFDREKENING_ID NUMBER,
    HEEFT_KOSTENPLAATS_ID NUMBER,
    NAAM VARCHAR2(80),
    NUMMER VARCHAR2(20),
    OMSCHRIJVING CLOB
);

CREATE TABLE WERKORDER (
    WERKORDER_ID NUMBER PRIMARY KEY,
    CODE VARCHAR2(20),
    DOCUMENTNUMMER NUMBER,
    HEEFT_HOOFDREKENING_ID NUMBER,
    HEEFT_KOSTENPLAATS_ID NUMBER,
    NAAM VARCHAR2(80),
    OMSCHRIJVING CLOB,
    WERKORDERTYPE VARCHAR2(80)
);

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

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

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

CREATE TABLE BANKAFSCHRIFTREGEL (
    BANKAFSCHRIFTREGEL_ID NUMBER PRIMARY KEY,
    BEDRAG NUMBER(10,2),
    BIJ NUMBER(1),
    DATUM DATE,
    HEEFT_BANKAFSCHRIFT_ID NUMBER,
    LEIDT_TOT_MUTATIE_ID NUMBER,
    REKENINGVAN VARCHAR2(255)
);

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

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

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

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)

