CREATE TABLE INGESCHREVENPERSOON (
    NATUURLIJKPERSOON_ID INTEGER PRIMARY KEY,
    ADRESHERKOMST VARCHAR(255),
    ANUMMER VARCHAR(20),
    BESCHRIJVINGLOCATIE VARCHAR(200),
    BUITENLANDSREISDOCUMENT VARCHAR(80),
    BURGERLIJKESTAAT VARCHAR(255),
    DATUMBEGINGELDIGHEIDVERBLIJFPLAATS DATE,
    DATUMEINDEGELDIGHEIDVERBLIJFSPLAATS DATE,
    DATUMINSCHRIJVINGGEMEENTE DATE,
    DATUMOPSCHORTINGBIJHOUDING DATE,
    DATUMVERTREKUITNEDERLAND DATE,
    DATUMVESTIGINGNEDERLAND DATE,
    GEMEENTEVANINSCHRIJVING VARCHAR(80),
    GEZINSRELATIE VARCHAR(255),
    INDICATIEGEHEIM BOOLEAN,
    INGEZETENE BOOLEAN,
    LANDWAARNAARVERTROKKEN VARCHAR(255),
    LANDWAARVANDAANINGESCHREVEN VARCHAR(255),
    OUDER1 VARCHAR(255),
    OUDER2 VARCHAR(255),
    OUDER_1_NATUURLIJKPERSOON_ID INTEGER,
    OUDER_2_NATUURLIJKPERSOON_ID INTEGER,
    PARTNERID VARCHAR(255),
    REDENEINDEBEWONING DATE,
    REDENOPSCHORTINGBIJHOUDING VARCHAR(200),
    SIGNALERINGREISDOCUMENT BOOLEAN,
    VERBLIJFSTITEL VARCHAR(255)
);

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

CREATE TABLE NATUURLIJKPERSOON (
    NATUURLIJKPERSOON_ID INTEGER PRIMARY KEY,
    AANDUIDINGNAAMGEBRUIK VARCHAR(50),
    AANHEFAANSCHRIJVING VARCHAR(50),
    ACADEMISCHETITEL VARCHAR(80),
    ACHTERNAAM VARCHAR(100),
    ADELLIJKETITELOFPREDIKAAT VARCHAR(255),
    ANUMMER VARCHAR(20),
    BIJZONDERNEDERLANDERSCHAP VARCHAR(50),
    BURGERSERVICENUMMER VARCHAR(255),
    DATUMGEBOORTE DATE,
    DATUMOVERLIJDEN DATE,
    GEBOORTELAND VARCHAR(255),
    GEBOORTEPLAATS VARCHAR(200),
    GESLACHTSAANDUIDING VARCHAR(255),
    GESLACHTSNAAM VARCHAR(200),
    GESLACHTSNAAMAANSCHRIJVING VARCHAR(200),
    HANDLICHTING VARCHAR(50),
    INDICATIEAFSCHERMINGPERSOONSGEGEVENS BOOLEAN,
    INDICATIEOVERLEDEN BOOLEAN,
    LANDOVERLIJDEN VARCHAR(255),
    NATIONALITEIT VARCHAR(100),
    OVERLIJDENSPLAATS VARCHAR(200),
    VOORLETTERSAANSCHRIJVING VARCHAR(20),
    VOORNAMEN VARCHAR(200),
    VOORNAMENAANSCHRIJVING VARCHAR(200),
    VOORVOEGSELGESLACHTSNAAM VARCHAR(80)
);

CREATE TABLE SOCIALE_GROEP (
    SOCIALE_GROEP_ID INTEGER PRIMARY KEY,
    EINDDATUM DATE,
    NAAM VARCHAR(80),
    OMSCHRIJVING TEXT,
    STARTDATUM DATE,
    TYPERING TEXT
);

CREATE TABLE KP_INGSCHRVNPRSN_NTRLJKPRSN (
    KP_INGSCHRVNPRSN_NTRLJKPRSN_ID INTEGER PRIMARY KEY,
    INGESCHREVENPERSOON_ID INTEGER,
    NATUURLIJKPERSOON_ID INTEGER
);

CREATE TABLE KP_SCL_RLT_NTRLJKPRSN (
    KP_SCL_RLT_NTRLJKPRSN_ID INTEGER PRIMARY KEY,
    SOCIALE_RELATIE_ID INTEGER,
    NATUURLIJKPERSOON_ID INTEGER
);

CREATE TABLE KP_NTRLJKPRSN_SCL_GRP (
    KP_NTRLJKPRSN_SCL_GRP_ID INTEGER PRIMARY KEY,
    NATUURLIJKPERSOON_ID INTEGER,
    SOCIALE_GROEP_ID INTEGER
);

CREATE TABLE SOCIALE_RELATIE (
    SOCIALE_RELATIE_ID INTEGER PRIMARY KEY,
    EINDDATUM DATE,
    STARTDATUM DATE,
    TYPERING TEXT
);

CREATE TABLE CLIENT (
    NATUURLIJKPERSOON_ID INTEGER PRIMARY KEY,
    CODE VARCHAR(80),
    GEZAGSDRAGERGEKEND BOOLEAN,
    JURIDISCHESTATUS VARCHAR(80),
    WETTELIJKEVERTEGENWOORDIGING VARCHAR(80)
);

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

ALTER TABLE INGESCHREVENPERSOON ADD CONSTRAINT FK_INGESCHREVENPERSOON_GEN_NATUURLIJKPERSOON FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- Generalization to NATUURLIJKPERSOON

ALTER TABLE KP_SCL_RLT_NTRLJKPRSN ADD CONSTRAINT FK_KP_SCL_RLT_NTRLJKPRSN_1 FOREIGN KEY (SOCIALE_RELATIE_ID) REFERENCES SOCIALE_RELATIE (SOCIALE_RELATIE_ID);
-- SOCIALE_RELATIE (many-to-many junction, Connector_ID: 919)

ALTER TABLE KP_SCL_RLT_NTRLJKPRSN ADD CONSTRAINT FK_KP_SCL_RLT_NTRLJKPRSN_2 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 919)

ALTER TABLE KP_CLNT_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_CLNT_INGSCHRVNPRSN_1 FOREIGN KEY (CLIENT_ID) REFERENCES CLIENT (NATUURLIJKPERSOON_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 (NATUURLIJKPERSOON_ID);
-- INGESCHREVENPERSOON (many-to-many junction, Connector_ID: 958)

ALTER TABLE KP_INGSCHRVNPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_INGSCHRVNPRSN_NTRLJKPRSN_1 FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (NATUURLIJKPERSOON_ID);
-- INGESCHREVENPERSOON (many-to-many junction, Connector_ID: 1878)

ALTER TABLE KP_INGSCHRVNPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_INGSCHRVNPRSN_NTRLJKPRSN_2 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1878)

ALTER TABLE KP_NTRLJKPRSN_SCL_GRP ADD CONSTRAINT FK_KP_NTRLJKPRSN_SCL_GRP_1 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1890)

ALTER TABLE KP_NTRLJKPRSN_SCL_GRP ADD CONSTRAINT FK_KP_NTRLJKPRSN_SCL_GRP_2 FOREIGN KEY (SOCIALE_GROEP_ID) REFERENCES SOCIALE_GROEP (SOCIALE_GROEP_ID);
-- SOCIALE_GROEP (many-to-many junction, Connector_ID: 1890)

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

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

