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 MEDEWERKER (
    MEDEWERKER_ID NUMBER PRIMARY KEY,
    ACHTERNAAM VARCHAR2(200),
    DATUMINDIENST DATE,
    DATUMUITDIENST DATE,
    EMAILADRES VARCHAR2(255),
    EXTERN NUMBER(1),
    FUNCTIE VARCHAR2(50),
    GESLACHTSAANDUIDING VARCHAR2(255),
    IS_CONTACTPERSOON_VOOR_ORGANISATORISCHEEENHEID_ID NUMBER,
    IS_VERANTWOORDELIJK_VOOR_ORGANISATORISCHEEENHEID_ID NUMBER,
    MEDEWERKERIDENTIFICATIE VARCHAR2(255),
    MEDEWERKERTOELICHTING VARCHAR2(255),
    ROEPNAAM VARCHAR2(255),
    TELEFOONNUMMER VARCHAR2(20),
    VOORLETTERS VARCHAR2(20),
    VOORVOEGSELACHTERNAAM VARCHAR2(255)
);

CREATE TABLE SUBSIDIEPROGRAMMA (
    SUBSIDIEPROGRAMMA_ID NUMBER PRIMARY KEY,
    DATUMEINDE DATE,
    DATUMSTART DATE,
    NAAM VARCHAR2(200),
    OMSCHRIJVING CLOB,
    PROGRAMMABEGROTING VARCHAR2(255),
    VERANTWOORDELIJK_VOOR_ORGANISATORISCHEEENHEID_ID NUMBER
);

CREATE TABLE DOCUMENT (
    DOCUMENT_ID NUMBER PRIMARY KEY,
    COCUMENTBESCHRIJVING VARCHAR2(255),
    DATUMCREATIEDOCUMENT DATE,
    DATUMONTVANGSTDOCUMENT DATE,
    DATUMVERZENDINGDOCUMENT DATE,
    DOCUMENTAUTEUR VARCHAR2(200),
    DOCUMENTIDENTIFICATIE VARCHAR2(255),
    DOCUMENTTITEL VARCHAR2(200),
    HEEFT_RAPPORTAGEMOMENT_ID NUMBER,
    VERTROUWELIJKAANDUIDING VARCHAR2(20)
);

CREATE TABLE ORGANISATORISCHEEENHEID (
    ORGANISATORISCHEEENHEID_ID NUMBER PRIMARY KEY,
    DATUMONTSTAAN DATE,
    DATUMOPHEFFING DATE,
    EMAILADRES VARCHAR2(255),
    FAXNUMMER VARCHAR2(20),
    FORMATIE VARCHAR2(255),
    HEEFT_KOSTENPLAATS_ID NUMBER,
    IS_DEEL_VAN_ORGANISATORISCHEEENHEID_ID NUMBER,
    NAAM VARCHAR2(50),
    NAAMVERKORT VARCHAR2(255),
    OMSCHRIJVING VARCHAR2(80),
    ORGANISATIEIDENTIFICATIE VARCHAR2(255),
    TELEFOONNUMMER VARCHAR2(20),
    TOELICHTING VARCHAR2(255)
);

CREATE TABLE SUBSIDIENIVEAU_ENUM (
    SUBSIDIENIVEAU_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO SUBSIDIENIVEAU_ENUM (SUBSIDIENIVEAU_ENUM_ID, VALUE) VALUES (1, 'EUROPEES');
INSERT INTO SUBSIDIENIVEAU_ENUM (SUBSIDIENIVEAU_ENUM_ID, VALUE) VALUES (2, 'GEMEENTE');
INSERT INTO SUBSIDIENIVEAU_ENUM (SUBSIDIENIVEAU_ENUM_ID, VALUE) VALUES (3, 'NATIONAAL');
INSERT INTO SUBSIDIENIVEAU_ENUM (SUBSIDIENIVEAU_ENUM_ID, VALUE) VALUES (4, 'PROVINCIE');
INSERT INTO SUBSIDIENIVEAU_ENUM (SUBSIDIENIVEAU_ENUM_ID, VALUE) VALUES (5, 'REGIONAAL');

CREATE TABLE KP_MDWRKR_ORGNSTRSCHNHD (
    KP_MDWRKR_ORGNSTRSCHNHD_ID NUMBER PRIMARY KEY,
    MEDEWERKER_ID NUMBER,
    ORGANISATORISCHEEENHEID_ID NUMBER
);

CREATE TABLE SUBSIDIE (
    SUBSIDIE_ID NUMBER PRIMARY KEY,
    AANVRAGER_MEDEWERKER_ID NUMBER,
    AANVRAGER_RECHTSPERSOON_ID NUMBER,
    ACCOUNTANTSCONTROLE NUMBER(1),
    BEHANDELAAR_MEDEWERKER_ID NUMBER,
    COFINANCIERING VARCHAR2(255),
    DATUMBEHANDELTERMIJN DATE,
    DATUMBEWAARTERMIJN DATE,
    DATUMEINDE DATE,
    DATUMSTART DATE,
    DATUMSUBSIDIEVASTSTELLING DATE,
    DATUMVERZENDINGEINDEAFREKENING DATE,
    DEADLINEINDIENING DATE,
    DOELSTELLING VARCHAR2(200),
    GAAT_OVER_SUBSIDIEPROGRAMMA_ID NUMBER,
    GEREALISEERDEPROJECTKOSTEN NUMBER(10,2),
    HEEFT_DOCUMENT_ID NUMBER,
    HEEFT_KOSTENPLAATS_ID NUMBER,
    HEEFT_ZAAK_ID NUMBER,
    HOOGTESUBSIDIE VARCHAR2(255),
    NIVEAU_ENUM_ID NUMBER,
    ONDERWERP VARCHAR2(200),
    ONTVANGENBEDRAG NUMBER(10,2),
    OPMERKINGEN CLOB,
    OPMERKINGENVOORSCHOTTEN CLOB,
    PRESTATIESUBSIDIE NUMBER(1),
    SOCIALRETURNBEDRAG NUMBER(10,2),
    SOCIALRETURNNAGEKOMEN NUMBER(1),
    SOCIALRETURNVERPLICHTING NUMBER(1),
    STATUS VARCHAR2(80),
    SUBSIDIEBEDRAG NUMBER(10,2),
    SUBSIDIESOORT VARCHAR2(80),
    SUBSIDIEVASTSTELLINGBEDRAG NUMBER(10,2),
    UITGAANDESUBSIDIE NUMBER(1),
    VALT_BINNEN_SECTOR_ID NUMBER,
    VERANTWOORDENOP DATE,
    VERSTREKKER_RECHTSPERSOON_ID NUMBER
);

CREATE TABLE KP_ZK_MDWRKR (
    KP_ZK_MDWRKR_ID NUMBER PRIMARY KEY,
    ZAAK_ID NUMBER,
    MEDEWERKER_ID NUMBER
);

CREATE TABLE ZAAK (
    ZAAK_ID NUMBER PRIMARY KEY,
    ARCHIEFNOMINATIE VARCHAR2(255),
    DATUMEINDE DATE,
    DATUMEINDEGEPLAND DATE,
    DATUMEINDEUITERLIJKEAFDOENING DATE,
    DATUMLAATSTEBETALING DATE,
    DATUMPUBLICATIE DATE,
    DATUMREGISTRATIE DATE,
    DATUMSTART DATE,
    DATUMVERNIETIGINGDOSSIER DATE,
    DUURVERLENGING VARCHAR2(255),
    HEEFT_BETREKKING_OP_ANDERE_ZAAK_ID NUMBER,
    INDICATIEBETALING VARCHAR2(255),
    INDICATIEDEELZAKEN NUMBER(1),
    INDICATIEOPSCHORTING VARCHAR2(255),
    IS_DEELZAAK_VAN_ZAAK_ID NUMBER,
    LEGES VARCHAR2(100),
    OMSCHRIJVING VARCHAR2(80),
    OMSCHRIJVINGRESULTAAT VARCHAR2(80),
    REDENOPSCHORTING VARCHAR2(200),
    REDENVERLENGING VARCHAR2(200),
    TOELICHTING VARCHAR2(255),
    TOELICHTINGRESULTAAT VARCHAR2(255),
    VERTROUWELIJKHEID VARCHAR2(255),
    ZAAKIDENTIFICATIE VARCHAR2(255),
    ZAAKNIVEAU VARCHAR2(255)
);

CREATE TABLE TAAK (
    TAAK_ID NUMBER PRIMARY KEY,
    DATUMEINDE DATE,
    DATUMSTART DATE,
    HEEFT_SUBSIDIE_ID NUMBER,
    PROJECTLEIDER_RECHTSPERSOON_ID NUMBER,
    TAAKOMSCHRIJVING CLOB,
    TERMIJN NUMBER
);

CREATE TABLE SUBSIDIEAANVRAAG (
    SUBSIDIEAANVRAAG_ID NUMBER PRIMARY KEY,
    AANGEVRAAGDBEDRAG NUMBER(10,2),
    BETREFT_SUBSIDIE_ID NUMBER,
    DATUMINDIENING DATE,
    KENMERK VARCHAR2(80),
    MONDT_UIT_SUBSIDIEBESCHIKKING_ID NUMBER,
    ONTVANGSTBEVESTIGING DATE,
    VERWACHTEBESCHIKKING DATE
);

CREATE TABLE RAPPORTAGEMOMENT (
    RAPPORTAGEMOMENT_ID NUMBER PRIMARY KEY,
    DATUM DATE,
    HEEFT_SUBSIDIE_ID NUMBER,
    NAAM VARCHAR2(200),
    OMSCHRIJVING CLOB,
    PROJECTLEIDER_RECHTSPERSOON_ID NUMBER,
    TERMIJN NUMBER
);

CREATE TABLE SECTOR (
    SECTOR_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(200),
    OMSCHRIJVING CLOB
);

CREATE TABLE SUBSIDIEBESCHIKKING (
    SUBSIDIEBESCHIKKING_ID NUMBER PRIMARY KEY,
    BESCHIKKINGSNUMMER VARCHAR2(80),
    BESCHIKTBEDRAG NUMBER(10,2),
    BESLUIT VARCHAR2(80),
    BETREFT_SUBSIDIE_ID NUMBER,
    INTERNKENMERK VARCHAR2(80),
    KENMERK VARCHAR2(80),
    ONTVANGEN DATE,
    OPMERKINGEN CLOB
);

CREATE TABLE KP_ZK_DCMNT (
    KP_ZK_DCMNT_ID NUMBER PRIMARY KEY,
    ZAAK_ID NUMBER,
    DOCUMENT_ID NUMBER
);

CREATE TABLE RECHTSPERSOON (
    RECHTSPERSOON_ID NUMBER PRIMARY KEY,
    ADRESBINNENLAND VARCHAR2(255),
    ADRESBUITENLAND VARCHAR2(255),
    ADRESCORRESPONDENTIE VARCHAR2(100),
    EMAILADRES VARCHAR2(80),
    FAXNUMMER VARCHAR2(20),
    IDENTIFICATIE VARCHAR2(255),
    KVKNUMMER VARCHAR2(20),
    NAAM VARCHAR2(200),
    RECHTSVORM VARCHAR2(100),
    REKENINGNUMMER VARCHAR2(255),
    TELEFOONNUMMER VARCHAR2(20)
);

CREATE TABLE SUBSIDIECOMPONENT (
    SUBSIDIECOMPONENT_ID NUMBER PRIMARY KEY,
    GERESERVEERDBEDRAG NUMBER(10,2),
    HEEFT_KOSTENPLAATS_ID NUMBER,
    TOEGEKENDBEDRAG NUMBER(10,2)
);

ALTER TABLE KP_ZK_DCMNT ADD CONSTRAINT FK_KP_ZK_DCMNT_1 FOREIGN KEY (ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- ZAAK (many-to-many junction, Connector_ID: 2132)

ALTER TABLE KP_ZK_DCMNT ADD CONSTRAINT FK_KP_ZK_DCMNT_2 FOREIGN KEY (DOCUMENT_ID) REFERENCES DOCUMENT (DOCUMENT_ID);
-- DOCUMENT (many-to-many junction, Connector_ID: 2132)

ALTER TABLE KP_MDWRKR_ORGNSTRSCHNHD ADD CONSTRAINT FK_KP_MDWRKR_ORGNSTRSCHNHD_1 FOREIGN KEY (MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- MEDEWERKER (many-to-many junction, Connector_ID: 2175)

ALTER TABLE KP_MDWRKR_ORGNSTRSCHNHD ADD CONSTRAINT FK_KP_MDWRKR_ORGNSTRSCHNHD_2 FOREIGN KEY (ORGANISATORISCHEEENHEID_ID) REFERENCES ORGANISATORISCHEEENHEID (ORGANISATORISCHEEENHEID_ID);
-- ORGANISATORISCHEEENHEID (many-to-many junction, Connector_ID: 2175)

ALTER TABLE KP_ZK_MDWRKR ADD CONSTRAINT FK_KP_ZK_MDWRKR_1 FOREIGN KEY (ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- ZAAK (many-to-many junction, Connector_ID: 2190)

ALTER TABLE KP_ZK_MDWRKR ADD CONSTRAINT FK_KP_ZK_MDWRKR_2 FOREIGN KEY (MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- MEDEWERKER (many-to-many junction, Connector_ID: 2190)

ALTER TABLE TAAK ADD CONSTRAINT FK_TAAK_PROJECTLEIDER FOREIGN KEY (PROJECTLEIDER_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- PROJECTLEIDER (0..* to 0..1, Connector_ID: 589)

ALTER TABLE SUBSIDIEPROGRAMMA ADD CONSTRAINT FK_SUBSIDIEPROGRAMMA_VERANTWOORDELIJK_VOOR FOREIGN KEY (VERANTWOORDELIJK_VOOR_ORGANISATORISCHEEENHEID_ID) REFERENCES ORGANISATORISCHEEENHEID (ORGANISATORISCHEEENHEID_ID);
-- VERANTWOORDELIJK_VOOR (0..* to 1, Connector_ID: 590)

ALTER TABLE SUBSIDIECOMPONENT ADD CONSTRAINT FK_SUBSIDIECOMPONENT_HEEFT FOREIGN KEY (HEEFT_KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- HEEFT (0..* to 1, Connector_ID: 591)

ALTER TABLE SUBSIDIEAANVRAAG ADD CONSTRAINT FK_SUBSIDIEAANVRAAG_MONDT_UIT FOREIGN KEY (MONDT_UIT_SUBSIDIEBESCHIKKING_ID) REFERENCES SUBSIDIEBESCHIKKING (SUBSIDIEBESCHIKKING_ID);
-- MONDT_UIT (1 to 0..1, Connector_ID: 592)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_GAAT_OVER FOREIGN KEY (GAAT_OVER_SUBSIDIEPROGRAMMA_ID) REFERENCES SUBSIDIEPROGRAMMA (SUBSIDIEPROGRAMMA_ID);
-- GAAT_OVER (0..1 to 1..*, Connector_ID: 593)

ALTER TABLE SUBSIDIEBESCHIKKING ADD CONSTRAINT FK_SUBSIDIEBESCHIKKING_BETREFT FOREIGN KEY (BETREFT_SUBSIDIE_ID) REFERENCES SUBSIDIE (SUBSIDIE_ID);
-- BETREFT (0..1 to 1, Connector_ID: 595)

ALTER TABLE SUBSIDIEAANVRAAG ADD CONSTRAINT FK_SUBSIDIEAANVRAAG_BETREFT FOREIGN KEY (BETREFT_SUBSIDIE_ID) REFERENCES SUBSIDIE (SUBSIDIE_ID);
-- BETREFT (1 to 1, Connector_ID: 597)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_HEEFT FOREIGN KEY (HEEFT_ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- HEEFT (0..1 to 0..1, Connector_ID: 598)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_HEEFT_2 FOREIGN KEY (HEEFT_DOCUMENT_ID) REFERENCES DOCUMENT (DOCUMENT_ID);
-- HEEFT (0..* to 0..1, Connector_ID: 599)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_HEEFT_3 FOREIGN KEY (HEEFT_KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- HEEFT (0..* to 0..1, Connector_ID: 600)

ALTER TABLE TAAK ADD CONSTRAINT FK_TAAK_HEEFT FOREIGN KEY (HEEFT_SUBSIDIE_ID) REFERENCES SUBSIDIE (SUBSIDIE_ID);
-- HEEFT (1 to 0..*, Connector_ID: 601)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_VERSTREKKER FOREIGN KEY (VERSTREKKER_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- VERSTREKKER (0..* to 0..1, Connector_ID: 602)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_BEHANDELAAR FOREIGN KEY (BEHANDELAAR_MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- BEHANDELAAR (0..* to 0..1, Connector_ID: 603)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_VALT_BINNEN FOREIGN KEY (VALT_BINNEN_SECTOR_ID) REFERENCES SECTOR (SECTOR_ID);
-- VALT_BINNEN (0..* to 0..1, Connector_ID: 604)

ALTER TABLE RAPPORTAGEMOMENT ADD CONSTRAINT FK_RAPPORTAGEMOMENT_HEEFT FOREIGN KEY (HEEFT_SUBSIDIE_ID) REFERENCES SUBSIDIE (SUBSIDIE_ID);
-- HEEFT (1 to 0..*, Connector_ID: 606)

ALTER TABLE DOCUMENT ADD CONSTRAINT FK_DOCUMENT_HEEFT FOREIGN KEY (HEEFT_RAPPORTAGEMOMENT_ID) REFERENCES RAPPORTAGEMOMENT (RAPPORTAGEMOMENT_ID);
-- HEEFT (0..1 to 0..*, Connector_ID: 607)

ALTER TABLE RAPPORTAGEMOMENT ADD CONSTRAINT FK_RAPPORTAGEMOMENT_PROJECTLEIDER FOREIGN KEY (PROJECTLEIDER_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- PROJECTLEIDER (0..1 to 0..*, Connector_ID: 1907)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_AANVRAGER FOREIGN KEY (AANVRAGER_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- AANVRAGER (0..1 to 0..*, Connector_ID: 1924)

ALTER TABLE ORGANISATORISCHEEENHEID ADD CONSTRAINT FK_ORGANISATORISCHEEENHEID_IS_DEEL_VAN FOREIGN KEY (IS_DEEL_VAN_ORGANISATORISCHEEENHEID_ID) REFERENCES ORGANISATORISCHEEENHEID (ORGANISATORISCHEEENHEID_ID);
-- IS_DEEL_VAN (1 to 0..1, Connector_ID: 2059)

ALTER TABLE ORGANISATORISCHEEENHEID ADD CONSTRAINT FK_ORGANISATORISCHEEENHEID_HEEFT FOREIGN KEY (HEEFT_KOSTENPLAATS_ID) REFERENCES KOSTENPLAATS (KOSTENPLAATS_ID);
-- HEEFT (0..1 to 1, Connector_ID: 2063)

ALTER TABLE ZAAK ADD CONSTRAINT FK_ZAAK_HEEFT_BETREKKING_OP_ANDERE FOREIGN KEY (HEEFT_BETREKKING_OP_ANDERE_ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- HEEFT_BETREKKING_OP_ANDERE (1 to 0..*, Connector_ID: 2108)

ALTER TABLE ZAAK ADD CONSTRAINT FK_ZAAK_IS_DEELZAAK_VAN FOREIGN KEY (IS_DEELZAAK_VAN_ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- IS_DEELZAAK_VAN (1 to 0..1, Connector_ID: 2121)

ALTER TABLE MEDEWERKER ADD CONSTRAINT FK_MEDEWERKER_IS_VERANTWOORDELIJK_VOOR FOREIGN KEY (IS_VERANTWOORDELIJK_VOOR_ORGANISATORISCHEEENHEID_ID) REFERENCES ORGANISATORISCHEEENHEID (ORGANISATORISCHEEENHEID_ID);
-- IS_VERANTWOORDELIJK_VOOR (0..1 to 0..1, Connector_ID: 2166)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_AANVRAGER_2 FOREIGN KEY (AANVRAGER_MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- AANVRAGER (0..1 to 0..*, Connector_ID: 2181)

ALTER TABLE MEDEWERKER ADD CONSTRAINT FK_MEDEWERKER_IS_CONTACTPERSOON_VOOR FOREIGN KEY (IS_CONTACTPERSOON_VOOR_ORGANISATORISCHEEENHEID_ID) REFERENCES ORGANISATORISCHEEENHEID (ORGANISATORISCHEEENHEID_ID);
-- IS_CONTACTPERSOON_VOOR (0..1 to 0..1, Connector_ID: 2185)

ALTER TABLE SUBSIDIE ADD CONSTRAINT FK_SUBSIDIE_NIVEAU_ENUM_ID FOREIGN KEY (NIVEAU_ENUM_ID_SUBSIDIENIVEAU_ENUM_ID) REFERENCES SUBSIDIENIVEAU_ENUM (SUBSIDIENIVEAU_ENUM_ID);
-- NIVEAU_ENUM_ID (1 to 1, Connector_ID: enum_ref)

