CREATE TABLE INGESCHREVENPERSOON (
    INGESCHREVENPERSOON_ID NUMBER PRIMARY KEY,
    ADRESHERKOMST VARCHAR2(255),
    ANUMMER VARCHAR2(20),
    BESCHRIJVINGLOCATIE VARCHAR2(200),
    BUITENLANDSREISDOCUMENT VARCHAR2(80),
    BURGERLIJKESTAAT VARCHAR2(255),
    DATUMBEGINGELDIGHEIDVERBLIJFPLAATS DATE,
    DATUMEINDEGELDIGHEIDVERBLIJFSPLAATS DATE,
    DATUMINSCHRIJVINGGEMEENTE DATE,
    DATUMOPSCHORTINGBIJHOUDING DATE,
    DATUMVERTREKUITNEDERLAND DATE,
    DATUMVESTIGINGNEDERLAND DATE,
    GEMEENTEVANINSCHRIJVING VARCHAR2(80),
    GEZINSRELATIE VARCHAR2(255),
    INDICATIEGEHEIM NUMBER(1),
    INGEZETENE NUMBER(1),
    LANDWAARNAARVERTROKKEN VARCHAR2(255),
    LANDWAARVANDAANINGESCHREVEN VARCHAR2(255),
    OUDER1 VARCHAR2(255),
    OUDER2 VARCHAR2(255),
    OUDER_1_INGESCHREVENPERSOON_ID NUMBER,
    OUDER_2_INGESCHREVENPERSOON_ID NUMBER,
    PARTNERID VARCHAR2(255),
    REDENEINDEBEWONING DATE,
    REDENOPSCHORTINGBIJHOUDING VARCHAR2(200),
    SIGNALERINGREISDOCUMENT NUMBER(1),
    VERBLIJFSTITEL VARCHAR2(255)
);

CREATE TABLE NIETNATUURLIJKPERSOON (
    NIETNATUURLIJKPERSOON_ID NUMBER PRIMARY KEY,
    DATUMAANVANG DATE,
    DATUMEINDE DATE,
    DATUMUITSCHRIJVING DATE,
    DATUMVOORTZETTING DATE,
    FAXNUMMER VARCHAR2(20),
    INGESCHREVEN NUMBER(1),
    INOPRICHTING NUMBER(1),
    KVKNUMMER VARCHAR2(255),
    NNPID VARCHAR2(255),
    RECHTSVORM VARCHAR2(255),
    RSINNUMMER VARCHAR2(255),
    STATUTAIRENAAM VARCHAR2(255),
    STATUTAIREZETEL VARCHAR2(255),
    WEBSITEURL VARCHAR2(200)
);

CREATE TABLE CLIENT (
    INGESCHREVENPERSOON_ID NUMBER PRIMARY KEY,
    CODE VARCHAR2(80),
    GEZAGSDRAGERGEKEND NUMBER(1),
    JURIDISCHESTATUS VARCHAR2(80),
    WETTELIJKEVERTEGENWOORDIGING VARCHAR2(80)
);

CREATE TABLE SCHULDHULPTRAJECT (
    SCHULDHULPTRAJECT_ID NUMBER PRIMARY KEY,
    EINDDATUM DATE,
    HEEFT_TRAJECT_INGESCHREVENPERSOON_ID NUMBER,
    OMSCHRIJVING CLOB,
    STARTDATUM DATE,
    TOEKENNINGSDATUM DATE,
    TOTAALSCHULDBEDRAGBIJAANVANGSCHULD NUMBER(10,2)
);

CREATE TABLE SCHULDHULPORGANISATIE (
    NIETNATUURLIJKPERSOON_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(200)
);

CREATE TABLE KP_CLNT_INGSCHRVNPRSN (
    KP_CLNT_INGSCHRVNPRSN_ID NUMBER PRIMARY KEY,
    CLIENT_ID NUMBER,
    INGESCHREVENPERSOON_ID NUMBER
);

CREATE TABLE KP_SCHLDHLPRGNST_SCHLDHLPTRJCT (
    KP_SCHLDHLPRGNST_SCHLDHLPTRJCT_ID NUMBER PRIMARY KEY,
    SCHULDHULPORGANISATIE_ID NUMBER,
    SCHULDHULPTRAJECT_ID NUMBER
);

CREATE TABLE KP_SCHLDHLPRGNST_NTNTRLJKPRSN (
    KP_SCHLDHLPRGNST_NTNTRLJKPRSN_ID NUMBER PRIMARY KEY,
    SCHULDHULPORGANISATIE_ID NUMBER,
    NIETNATUURLIJKPERSOON_ID NUMBER
);

ALTER TABLE SCHULDHULPORGANISATIE ADD CONSTRAINT FK_SCHULDHULPORGANISATIE_GEN_NIETNATUURLIJKPERSOON FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- Generalization to NIETNATUURLIJKPERSOON

ALTER TABLE CLIENT ADD CONSTRAINT FK_CLIENT_GEN_INGESCHREVENPERSOON FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- Generalization to INGESCHREVENPERSOON

ALTER TABLE KP_CLNT_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_CLNT_INGSCHRVNPRSN_1 FOREIGN KEY (CLIENT_ID) REFERENCES CLIENT (INGESCHREVENPERSOON_ID);
-- CLIENT (many-to-many junction, Connector_ID: 958)

ALTER TABLE KP_CLNT_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_CLNT_INGSCHRVNPRSN_2 FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- INGESCHREVENPERSOON (many-to-many junction, Connector_ID: 958)

ALTER TABLE KP_SCHLDHLPRGNST_SCHLDHLPTRJCT ADD CONSTRAINT FK_KP_SCHLDHLPRGNST_SCHLDHLPTRJCT_1 FOREIGN KEY (SCHULDHULPORGANISATIE_ID) REFERENCES SCHULDHULPORGANISATIE (NIETNATUURLIJKPERSOON_ID);
-- SCHULDHULPORGANISATIE (many-to-many junction, Connector_ID: 967)

ALTER TABLE KP_SCHLDHLPRGNST_SCHLDHLPTRJCT ADD CONSTRAINT FK_KP_SCHLDHLPRGNST_SCHLDHLPTRJCT_2 FOREIGN KEY (SCHULDHULPTRAJECT_ID) REFERENCES SCHULDHULPTRAJECT (SCHULDHULPTRAJECT_ID);
-- SCHULDHULPTRAJECT (many-to-many junction, Connector_ID: 967)

ALTER TABLE KP_SCHLDHLPRGNST_NTNTRLJKPRSN ADD CONSTRAINT FK_KP_SCHLDHLPRGNST_NTNTRLJKPRSN_1 FOREIGN KEY (SCHULDHULPORGANISATIE_ID) REFERENCES SCHULDHULPORGANISATIE (NIETNATUURLIJKPERSOON_ID);
-- SCHULDHULPORGANISATIE (many-to-many junction, Connector_ID: 968)

ALTER TABLE KP_SCHLDHLPRGNST_NTNTRLJKPRSN ADD CONSTRAINT FK_KP_SCHLDHLPRGNST_NTNTRLJKPRSN_2 FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- NIETNATUURLIJKPERSOON (many-to-many junction, Connector_ID: 968)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_HEEFT_TRAJECT FOREIGN KEY (HEEFT_TRAJECT_INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- HEEFT_TRAJECT (0..* to 1..2, Connector_ID: 965)

ALTER TABLE INGESCHREVENPERSOON ADD CONSTRAINT FK_INGESCHREVENPERSOON_OUDER_1 FOREIGN KEY (OUDER_1_INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- OUDER_1 (1 to 1, Connector_ID: 1871)

ALTER TABLE INGESCHREVENPERSOON ADD CONSTRAINT FK_INGESCHREVENPERSOON_OUDER_2 FOREIGN KEY (OUDER_2_INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- OUDER_2 (1 to 1, Connector_ID: 1873)

