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

CREATE TABLE LOCATIE (
    LOCATIE_ID INTEGER PRIMARY KEY,
    HOOGTE INTEGER,
    NAAM VARCHAR(200),
    NEN3610ID VARCHAR(80)
);

CREATE TABLE KP_VRZK_PRJCTLCT (
    KP_VRZK_PRJCTLCT_ID INTEGER PRIMARY KEY,
    VERZOEK_ID INTEGER,
    PROJECTLOCATIE_ID INTEGER
);

CREATE TABLE KP_GMCHTGD_RCHTSPRSN (
    KP_GMCHTGD_RCHTSPRSN_ID INTEGER PRIMARY KEY,
    GEMACHTIGDE_ID INTEGER,
    RECHTSPERSOON_ID INTEGER
);

CREATE TABLE INITIATIEFNEMER (
    RECHTSPERSOON_ID INTEGER PRIMARY KEY,
    IS_GEMACHTIGD_DOOR_RECHTSPERSOON_ID INTEGER
);

CREATE TABLE ZAAKTYPE (
    ZAAKTYPE_ID INTEGER PRIMARY KEY,
    ARCHIEFCODE VARCHAR(20),
    DATUMBEGINGELDIGHEIDZAAKTYPE DATE,
    DATUMEINDEGELDIGHEIDZAAKTYPE DATE,
    DOORLOOPTIJDBEHANDELING TIMESTAMP,
    INDICATIEPUBLICATIE VARCHAR(255),
    IS_VERANTWOORDELIJKE_VOOR_MEDEWERKER_ID INTEGER,
    PUBLICATIETEKST VARCHAR(255),
    SERVICENORMBEHANDELING VARCHAR(255),
    TREFWOORD VARCHAR(255),
    VERTROUWELIJKAANDUIDING VARCHAR(20),
    ZAAKCATEGORIE VARCHAR(255),
    ZAAKTYPEOMSCHRIJVING VARCHAR(80),
    ZAAKTYPEOMSCHRIJVINGGENERIEK VARCHAR(80)
);

CREATE TABLE PROJECT (
    PROJECT_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(200),
    OMSCHRIJVING TEXT
);

CREATE TABLE GEMACHTIGDE (
    RECHTSPERSOON_ID INTEGER PRIMARY KEY
);

CREATE TABLE BEVOEGD_GEZAG (
    RECHTSPERSOON_ID INTEGER PRIMARY KEY
);

CREATE TABLE SPECIFICATIE (
    SPECIFICATIE_ID INTEGER PRIMARY KEY,
    ANTWOORD VARCHAR(200),
    BEVAT_VERZOEK_ID INTEGER,
    GROEPERING VARCHAR(200),
    PUBLICEERBAAR BOOLEAN,
    VRAAGCLASSIFICATIE_ENUM_ID INTEGER,
    VRAAGID VARCHAR(80),
    VRAAGREFERENTIE VARCHAR(200),
    VRAAGTEKST TEXT
);

CREATE TABLE VRAAG_CLASSIFICATIE_ENUM (
    VRAAG_CLASSIFICATIE_ENUM_ID INTEGER PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO VRAAG_CLASSIFICATIE_ENUM (VRAAG_CLASSIFICATIE_ENUM_ID, VALUE) VALUES
    (1, 'AANVRAGER'),
    (2, 'ACTIVITEIT'),
    (3, 'GEVRAAGDE_BIJLAGE'),
    (4, 'PROJECT'),
    (5, 'VERZOEK');

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

CREATE TABLE PROJECTLOCATIE (
    PROJECTLOCATIE_ID INTEGER PRIMARY KEY,
    ADRES INTEGER,
    BETREFT_LOCATIE_ID INTEGER,
    HEEFT_PROJECT_ID INTEGER,
    KADASTRAALPERCEEL VARCHAR(80),
    KADASTRALEGEMEENTE VARCHAR(80),
    KADASTRALESECTIE VARCHAR(80)
);

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

CREATE TABLE KP_INTTFNMR_RCHTSPRSN (
    KP_INTTFNMR_RCHTSPRSN_ID INTEGER PRIMARY KEY,
    INITIATIEFNEMER_ID INTEGER,
    RECHTSPERSOON_ID INTEGER
);

CREATE TABLE KP_VRZK_DCMNT (
    KP_VRZK_DCMNT_ID INTEGER PRIMARY KEY,
    VERZOEK_ID INTEGER,
    DOCUMENT_ID INTEGER
);

CREATE TABLE UITVOERENDE_INSTANTIE (
    UITVOERENDE_INSTANTIE_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(200)
);

CREATE TABLE KP_VRZK_LCT (
    KP_VRZK_LCT_ID INTEGER PRIMARY KEY,
    VERZOEK_ID INTEGER,
    LOCATIE_ID INTEGER
);

CREATE TABLE KP_BVGD_GZG_RCHTSPRSN (
    KP_BVGD_GZG_RCHTSPRSN_ID INTEGER PRIMARY KEY,
    BEVOEGD_GEZAG_ID INTEGER,
    RECHTSPERSOON_ID INTEGER
);

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

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

CREATE TABLE MEDEWERKER (
    MEDEWERKER_ID INTEGER PRIMARY KEY,
    ACHTERNAAM VARCHAR(200),
    DATUMINDIENST DATE,
    DATUMUITDIENST DATE,
    EMAILADRES VARCHAR(255),
    EXTERN BOOLEAN,
    FUNCTIE VARCHAR(50),
    GESLACHTSAANDUIDING VARCHAR(255),
    MEDEWERKERIDENTIFICATIE VARCHAR(255),
    MEDEWERKERTOELICHTING VARCHAR(255),
    ROEPNAAM VARCHAR(255),
    TELEFOONNUMMER VARCHAR(20),
    VOORLETTERS VARCHAR(20),
    VOORVOEGSELACHTERNAAM VARCHAR(255),
    WERKT_BIJ_UITVOERENDE_INSTANTIE_ID INTEGER
);

CREATE TABLE VERZOEK (
    VERZOEK_ID INTEGER PRIMARY KEY,
    AKKOORDVERKLARING BOOLEAN,
    AMBTSHALVE BOOLEAN,
    BEHANDELAAR_UITVOERENDE_INSTANTIE_ID INTEGER,
    BETREFT_EERDER_VERZOEK_VERZOEK_ID INTEGER,
    BETREFT_PROJECT_ID INTEGER,
    DATUMINDIENING DATE,
    DIENT_IN__RECHTSPERSOON_ID INTEGER,
    DOEL VARCHAR(255),
    HEEFT_ALS_VERANTWOORDELIJKE_RECHTSPERSOON_ID INTEGER,
    LEIDT_TOT_ZAAK_ID INTEGER,
    NAAM VARCHAR(200),
    REFERENTIEAANVRAGER VARCHAR(200),
    TOELICHTINGLATERAANTELEVERENINFORMATIE TEXT,
    TOELICHTINGNIETAANTELEVERENINFORMATIE TEXT,
    TOELICHTINGVERZOEK TEXT,
    TYPE VARCHAR(255),
    VERANTWOORDELIJKE_RECHTSPERSOON_ID INTEGER,
    VERZOEKNUMMER VARCHAR(80),
    VOLGNUMMER VARCHAR(80)
);

ALTER TABLE BEVOEGD_GEZAG ADD CONSTRAINT FK_BEVOEGD_GEZAG_GEN_RECHTSPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- Generalization to RECHTSPERSOON

ALTER TABLE GEMACHTIGDE ADD CONSTRAINT FK_GEMACHTIGDE_GEN_RECHTSPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- Generalization to RECHTSPERSOON

ALTER TABLE INITIATIEFNEMER ADD CONSTRAINT FK_INITIATIEFNEMER_GEN_RECHTSPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- Generalization to RECHTSPERSOON

ALTER TABLE KP_VRZK_PRJCTLCT ADD CONSTRAINT FK_KP_VRZK_PRJCTLCT_1 FOREIGN KEY (VERZOEK_ID) REFERENCES VERZOEK (VERZOEK_ID);
-- VERZOEK (many-to-many junction, Connector_ID: 112)

ALTER TABLE KP_VRZK_PRJCTLCT ADD CONSTRAINT FK_KP_VRZK_PRJCTLCT_2 FOREIGN KEY (PROJECTLOCATIE_ID) REFERENCES PROJECTLOCATIE (PROJECTLOCATIE_ID);
-- PROJECTLOCATIE (many-to-many junction, Connector_ID: 112)

ALTER TABLE KP_VRZK_DCMNT ADD CONSTRAINT FK_KP_VRZK_DCMNT_1 FOREIGN KEY (VERZOEK_ID) REFERENCES VERZOEK (VERZOEK_ID);
-- VERZOEK (many-to-many junction, Connector_ID: 113)

ALTER TABLE KP_VRZK_DCMNT ADD CONSTRAINT FK_KP_VRZK_DCMNT_2 FOREIGN KEY (DOCUMENT_ID) REFERENCES DOCUMENT (DOCUMENT_ID);
-- DOCUMENT (many-to-many junction, Connector_ID: 113)

ALTER TABLE KP_VRZK_LCT ADD CONSTRAINT FK_KP_VRZK_LCT_1 FOREIGN KEY (VERZOEK_ID) REFERENCES VERZOEK (VERZOEK_ID);
-- VERZOEK (many-to-many junction, Connector_ID: 692)

ALTER TABLE KP_VRZK_LCT ADD CONSTRAINT FK_KP_VRZK_LCT_2 FOREIGN KEY (LOCATIE_ID) REFERENCES LOCATIE (LOCATIE_ID);
-- LOCATIE (many-to-many junction, Connector_ID: 692)

ALTER TABLE KP_INTTFNMR_RCHTSPRSN ADD CONSTRAINT FK_KP_INTTFNMR_RCHTSPRSN_1 FOREIGN KEY (INITIATIEFNEMER_ID) REFERENCES INITIATIEFNEMER (RECHTSPERSOON_ID);
-- INITIATIEFNEMER (many-to-many junction, Connector_ID: 706)

ALTER TABLE KP_INTTFNMR_RCHTSPRSN ADD CONSTRAINT FK_KP_INTTFNMR_RCHTSPRSN_2 FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 706)

ALTER TABLE KP_GMCHTGD_RCHTSPRSN ADD CONSTRAINT FK_KP_GMCHTGD_RCHTSPRSN_1 FOREIGN KEY (GEMACHTIGDE_ID) REFERENCES GEMACHTIGDE (RECHTSPERSOON_ID);
-- GEMACHTIGDE (many-to-many junction, Connector_ID: 708)

ALTER TABLE KP_GMCHTGD_RCHTSPRSN ADD CONSTRAINT FK_KP_GMCHTGD_RCHTSPRSN_2 FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 708)

ALTER TABLE KP_BVGD_GZG_RCHTSPRSN ADD CONSTRAINT FK_KP_BVGD_GZG_RCHTSPRSN_1 FOREIGN KEY (BEVOEGD_GEZAG_ID) REFERENCES BEVOEGD_GEZAG (RECHTSPERSOON_ID);
-- BEVOEGD_GEZAG (many-to-many junction, Connector_ID: 710)

ALTER TABLE KP_BVGD_GZG_RCHTSPRSN ADD CONSTRAINT FK_KP_BVGD_GZG_RCHTSPRSN_2 FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 710)

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_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 INITIATIEFNEMER ADD CONSTRAINT FK_INITIATIEFNEMER_IS_GEMACHTIGD_DOOR FOREIGN KEY (IS_GEMACHTIGD_DOOR_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- IS_GEMACHTIGD_DOOR (0..1 to 1..*, Connector_ID: 114)

ALTER TABLE VERZOEK ADD CONSTRAINT FK_VERZOEK_BETREFT_EERDER_VERZOEK FOREIGN KEY (BETREFT_EERDER_VERZOEK_VERZOEK_ID) REFERENCES VERZOEK (VERZOEK_ID);
-- BETREFT_EERDER_VERZOEK (0..1 to 0..*, Connector_ID: 690)

ALTER TABLE VERZOEK ADD CONSTRAINT FK_VERZOEK_LEIDT_TOT FOREIGN KEY (LEIDT_TOT_ZAAK_ID) REFERENCES ZAAK (ZAAK_ID);
-- LEIDT_TOT (0..1 to 0..1, Connector_ID: 691)

ALTER TABLE VERZOEK ADD CONSTRAINT FK_VERZOEK_BEHANDELAAR FOREIGN KEY (BEHANDELAAR_UITVOERENDE_INSTANTIE_ID) REFERENCES UITVOERENDE_INSTANTIE (UITVOERENDE_INSTANTIE_ID);
-- BEHANDELAAR (0..* to 0..1, Connector_ID: 695)

ALTER TABLE SPECIFICATIE ADD CONSTRAINT FK_SPECIFICATIE_BEVAT FOREIGN KEY (BEVAT_VERZOEK_ID) REFERENCES VERZOEK (VERZOEK_ID);
-- BEVAT (1 to 0..*, Connector_ID: 696)

ALTER TABLE PROJECTLOCATIE ADD CONSTRAINT FK_PROJECTLOCATIE_BETREFT FOREIGN KEY (BETREFT_LOCATIE_ID) REFERENCES LOCATIE (LOCATIE_ID);
-- BETREFT (0..* to 0..1, Connector_ID: 697)

ALTER TABLE VERZOEK ADD CONSTRAINT FK_VERZOEK_BETREFT FOREIGN KEY (BETREFT_PROJECT_ID) REFERENCES PROJECT (PROJECT_ID);
-- BETREFT (1..* to 1.., Connector_ID: 701)

ALTER TABLE PROJECTLOCATIE ADD CONSTRAINT FK_PROJECTLOCATIE_HEEFT FOREIGN KEY (HEEFT_PROJECT_ID) REFERENCES PROJECT (PROJECT_ID);
-- HEEFT (1 to 0..*, Connector_ID: 704)

ALTER TABLE VERZOEK ADD CONSTRAINT FK_VERZOEK_HEEFT_ALS_VERANTWOORDELIJKE FOREIGN KEY (HEEFT_ALS_VERANTWOORDELIJKE_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- HEEFT_ALS_VERANTWOORDELIJKE (1 to 1..*, Connector_ID: 705)

ALTER TABLE VERZOEK ADD CONSTRAINT FK_VERZOEK_DIENT_IN_ FOREIGN KEY (DIENT_IN__RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- DIENT_IN_ (0..1 to 1..*, Connector_ID: 707)

ALTER TABLE VERZOEK ADD CONSTRAINT FK_VERZOEK_VERANTWOORDELIJKE FOREIGN KEY (VERANTWOORDELIJKE_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- VERANTWOORDELIJKE (0..* to 1, Connector_ID: 709)

ALTER TABLE ZAAK ADD CONSTRAINT FK_ZAAK_BETREFT FOREIGN KEY (BETREFT_PROJECT_ID) REFERENCES PROJECT (PROJECT_ID);
-- BETREFT (0..* to 0..1, Connector_ID: 2106)

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_VAN FOREIGN KEY (IS_VAN_ZAAKTYPE_ID) REFERENCES ZAAKTYPE (ZAAKTYPE_ID);
-- IS_VAN (0..* to 1, Connector_ID: 2119)

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 ZAAKTYPE ADD CONSTRAINT FK_ZAAKTYPE_IS_VERANTWOORDELIJKE_VOOR FOREIGN KEY (IS_VERANTWOORDELIJKE_VOOR_MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- IS_VERANTWOORDELIJKE_VOOR (0..1 to 0..*, Connector_ID: 2170)

ALTER TABLE MEDEWERKER ADD CONSTRAINT FK_MEDEWERKER_WERKT_BIJ FOREIGN KEY (WERKT_BIJ_UITVOERENDE_INSTANTIE_ID) REFERENCES UITVOERENDE_INSTANTIE (UITVOERENDE_INSTANTIE_ID);
-- WERKT_BIJ (0..* to 1, Connector_ID: 2172)

ALTER TABLE SPECIFICATIE ADD CONSTRAINT FK_SPECIFICATIE_VRAAGCLASSIFICATIE_ENUM_ID FOREIGN KEY (VRAAGCLASSIFICATIE_ENUM_ID_VRAAG_CLASSIFICATIE_ENUM_ID) REFERENCES VRAAG_CLASSIFICATIE_ENUM (VRAAG_CLASSIFICATIE_ENUM_ID);
-- VRAAGCLASSIFICATIE_ENUM_ID (1 to 1, Connector_ID: enum_ref)

