CREATE TABLE KP_NTNTRLJKPRSN_RCHTSPRSN (
    KP_NTNTRLJKPRSN_RCHTSPRSN_ID NUMBER PRIMARY KEY,
    NIETNATUURLIJKPERSOON_ID NUMBER,
    RECHTSPERSOON_ID NUMBER
);

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

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

CREATE TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN (
    KP_NTNTRLJKPRSN_NTRLJKPRSN_ID NUMBER PRIMARY KEY,
    NIETNATUURLIJKPERSOON_ID NUMBER,
    NATUURLIJKPERSOON_ID NUMBER
);

CREATE TABLE ADRESBUITENLAND (
    ADRESBUITENLAND_ID NUMBER PRIMARY KEY,
    ADRESREGELBUITENLAND1 VARCHAR2(50),
    ADRESREGELBUITENLAND2 VARCHAR2(50),
    ADRESREGELBUITENLAND3 VARCHAR2(50),
    DATUMAANVANGADRESBUITENLAND DATE,
    DATUMINSCHRIJVINGGEMEENTE DATE,
    DATUMVESTIGINGNEDERLAND DATE,
    GEMEENTEVANINSCHRIJVING VARCHAR2(100),
    LANDADRESBUITENLAND VARCHAR2(50),
    LANDWAARVANDAANINGESCHREVEN VARCHAR2(50),
    OMSCHRIJVINGVANDEAANGIFTEADRESHOUDING VARCHAR2(100)
);

CREATE TABLE VERBLIJFSTITEL (
    VERBLIJFSTITEL_ID NUMBER PRIMARY KEY,
    AANDUIDINGVERBLIJFSTITEL VARCHAR2(255),
    DATUMBEGINGELDIGHEIDVERBLIJFSTITEL DATE,
    DATUM_BEGIN DATE,
    DATUM_EINDE DATE,
    DATUM_OPNAME DATE,
    VERBLIJFSTITEL_CODE VARCHAR2(255)
);

CREATE TABLE KP_NTRLJKPRSN_RCHTSPRSN (
    KP_NTRLJKPRSN_RCHTSPRSN_ID NUMBER PRIMARY KEY,
    NATUURLIJKPERSOON_ID NUMBER,
    RECHTSPERSOON_ID NUMBER
);

CREATE TABLE HUISHOUDEN (
    HUISHOUDEN_ID NUMBER PRIMARY KEY,
    DATUMBEGINGELDIGHEIDHUISHOUDEN DATE,
    DATUMEINDEGELDIGHEIDHUISHOUDEN DATE,
    HUISHOUDENGROOTTE VARCHAR2(255),
    HUISHOUDENNUMMER VARCHAR2(255),
    HUISHOUDENSOORT VARCHAR2(255)
);

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

CREATE TABLE NATIONALITEIT (
    NATIONALITEIT_ID NUMBER PRIMARY KEY,
    BUITENLANDSE_NATIONALITEIT NUMBER(1),
    DATUM_EINDE_GELDIGHEID DATE,
    DATUM_INGANG_GELDIGHEID DATE,
    DATUM_OPNAMEN DATE,
    DATUM_VERLIES_NATIONALITEIT DATE,
    HEEFT_RECHTSPERSOON_ID NUMBER,
    NATIONALITEITCODE VARCHAR2(255),
    OMSCHRIJVING VARCHAR2(80),
    REDENVERKRIJGINGNLNATIONALITEIT VARCHAR2(100),
    REDENVERLIESNLNATIONALITEIT VARCHAR2(100)
);

CREATE TABLE NIETNATUURLIJKPERSOON (
    RECHTSPERSOON_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 INGEZETENE (
    RECHTSPERSOON_ID NUMBER PRIMARY KEY,
    AANDUIDINGEUROPEESKIESRECHT NUMBER(1),
    AANDUIDINGUITGESLOTENKIESRECHT NUMBER(1),
    DATUMVERKRIJGINGVERBLIJFSTITEL DATE,
    DATUMVERLIESVERBLIJFSTITEL DATE,
    HEEFT_VERBLIJFSTITEL_ID NUMBER,
    INDICATIEBLOKKERING VARCHAR2(255),
    INDICATIECURATELEREGISTER VARCHAR2(255),
    INDICATIEGEZAGMINDERJARIGE VARCHAR2(255)
);

CREATE TABLE INGESCHREVENPERSOON (
    RECHTSPERSOON_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),
    HEEFT_HUISHOUDEN_ID NUMBER,
    INDICATIEGEHEIM NUMBER(1),
    INGEZETENE NUMBER(1),
    LANDWAARNAARVERTROKKEN VARCHAR2(255),
    LANDWAARVANDAANINGESCHREVEN VARCHAR2(255),
    OUDER1 VARCHAR2(255),
    OUDER2 VARCHAR2(255),
    OUDER_1_RECHTSPERSOON_ID NUMBER,
    OUDER_2_RECHTSPERSOON_ID NUMBER,
    PARTNERID VARCHAR2(255),
    REDENEINDEBEWONING DATE,
    REDENOPSCHORTINGBIJHOUDING VARCHAR2(200),
    SIGNALERINGREISDOCUMENT NUMBER(1),
    VERBLIJFSTITEL VARCHAR2(255)
);

CREATE TABLE KP_INGZTN_INGSCHRVNPRSN (
    KP_INGZTN_INGSCHRVNPRSN_ID NUMBER PRIMARY KEY,
    INGEZETENE_ID NUMBER,
    INGESCHREVENPERSOON_ID NUMBER
);

ALTER TABLE NIETNATUURLIJKPERSOON ADD CONSTRAINT FK_NIETNATUURLIJKPERSOON_GEN_RECHTSPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- Generalization to RECHTSPERSOON

ALTER TABLE NATUURLIJKPERSOON ADD CONSTRAINT FK_NATUURLIJKPERSOON_GEN_RECHTSPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- Generalization to RECHTSPERSOON

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

ALTER TABLE INGEZETENE ADD CONSTRAINT FK_INGEZETENE_GEN_INGESCHREVENPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES INGESCHREVENPERSOON (RECHTSPERSOON_ID);
-- Generalization to INGESCHREVENPERSOON

ALTER TABLE KP_INGZTN_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_INGZTN_INGSCHRVNPRSN_1 FOREIGN KEY (INGEZETENE_ID) REFERENCES INGEZETENE (RECHTSPERSOON_ID);
-- INGEZETENE (many-to-many junction, Connector_ID: 1867)

ALTER TABLE KP_INGZTN_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_INGZTN_INGSCHRVNPRSN_2 FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (RECHTSPERSOON_ID);
-- INGESCHREVENPERSOON (many-to-many junction, Connector_ID: 1867)

ALTER TABLE KP_INGSCHRVNPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_INGSCHRVNPRSN_NTRLJKPRSN_1 FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (RECHTSPERSOON_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 (RECHTSPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1878)

ALTER TABLE KP_NTRLJKPRSN_RCHTSPRSN ADD CONSTRAINT FK_KP_NTRLJKPRSN_RCHTSPRSN_1 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (RECHTSPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1898)

ALTER TABLE KP_NTRLJKPRSN_RCHTSPRSN ADD CONSTRAINT FK_KP_NTRLJKPRSN_RCHTSPRSN_2 FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 1898)

ALTER TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_NTRLJKPRSN_1 FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (RECHTSPERSOON_ID);
-- NIETNATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1970)

ALTER TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_NTRLJKPRSN_2 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (RECHTSPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1970)

ALTER TABLE KP_NTNTRLJKPRSN_RCHTSPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_RCHTSPRSN_1 FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (RECHTSPERSOON_ID);
-- NIETNATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1971)

ALTER TABLE KP_NTNTRLJKPRSN_RCHTSPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_RCHTSPRSN_2 FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 1971)

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

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

ALTER TABLE INGEZETENE ADD CONSTRAINT FK_INGEZETENE_HEEFT FOREIGN KEY (HEEFT_VERBLIJFSTITEL_ID) REFERENCES VERBLIJFSTITEL (VERBLIJFSTITEL_ID);
-- HEEFT (0..* to 0..1, Connector_ID: 1875)

ALTER TABLE INGESCHREVENPERSOON ADD CONSTRAINT FK_INGESCHREVENPERSOON_HEEFT FOREIGN KEY (HEEFT_HUISHOUDEN_ID) REFERENCES HUISHOUDEN (HUISHOUDEN_ID);
-- HEEFT (0..1 to 1..*, Connector_ID: 1955)

ALTER TABLE NATIONALITEIT ADD CONSTRAINT FK_NATIONALITEIT_HEEFT FOREIGN KEY (HEEFT_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- HEEFT (1 to 1..*, Connector_ID: 1956)

ALTER TABLE RECHTSPERSOON ADD CONSTRAINT FK_RECHTSPERSOON_HEEFT FOREIGN KEY (HEEFT_ADRESBUITENLAND_ID) REFERENCES ADRESBUITENLAND (ADRESBUITENLAND_ID);
-- HEEFT (1 to 0..1, Connector_ID: 1958)

