CREATE TABLE NATUURLIJKPERSOON (
    NATUURLIJKPERSOON_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),
    MAAKT_ONDERDEEL_UIT_VAN_HUISHOUDEN_ID NUMBER,
    NATIONALITEIT VARCHAR2(100),
    OVERLIJDENSPLAATS VARCHAR2(200),
    VOORLETTERSAANSCHRIJVING VARCHAR2(20),
    VOORNAMEN VARCHAR2(200),
    VOORNAMENAANSCHRIJVING VARCHAR2(200),
    VOORVOEGSELGESLACHTSNAAM VARCHAR2(80)
);

CREATE TABLE SLUITINGOFAANGAANHUWELIJKOFGEREGISTREERDPARTNERSCHAP (
    SLUITINGOFAANGAANHUWELIJKOFGEREGISTREERDPARTNERSCHAP_ID NUMBER PRIMARY KEY,
    BUITENLANDSEPLAATSAANVANG VARCHAR2(255),
    BUITENLANDSEREGIOAANVANG VARCHAR2(255),
    DATUMAANVANG DATE,
    GEMEENTEAANVANG VARCHAR2(80),
    LANDOFGEBIEDAANVANG VARCHAR2(255),
    OMSCHRIJVINGLOCATIEAANVANG VARCHAR2(255)
);

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

CREATE TABLE HUISHOUDEN (
    HUISHOUDEN_ID NUMBER PRIMARY KEY,
    HEEFT_ALS_ADRES_NUMMERAANDUIDING_ID NUMBER,
    SOORT VARCHAR2(255)
);

CREATE TABLE ONTBINDINGHUWELIJK_GEREGISTREERDPARTNERSCHAP (
    ONTBINDINGHUWELIJK_GEREGISTREERDPARTNERSCHAP_ID NUMBER PRIMARY KEY,
    BUITENLANDSEPLAATSEINDE DATE,
    BUITENLANDSEREGIOEINDE DATE,
    DATUMEINDE DATE,
    GEMEENTEEINDE DATE,
    LANDOFGEBIEDEINDE DATE,
    OMSCHRIJVINGLOCATIEEINDE DATE,
    REDENEINDE DATE
);

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

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

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

CREATE TABLE OPENBARERUIMTE (
    OPENBARERUIMTE_ID NUMBER PRIMARY KEY,
    BEGINGELDIGHEID DATE,
    DATUMEINDE DATE,
    DATUMINGANG DATE,
    DOCUMENTDATUM DATE,
    DOCUMENTNUMMER NUMBER,
    EINDGELDIGHEID DATE,
    GECONSTATEERD NUMBER(1),
    GEOMETRIE SDO_GEOMETRY,
    HUISNUMMERRANGE_EVEN_EN_ONEVEN_NUMMERS VARCHAR2(255),
    HUISNUMMERRANGE_EVEN_NUMMERS VARCHAR2(255),
    HUISNUMMERRANGE_ONEVEN_NUMMERS VARCHAR2(255),
    IDENTIFICATIE VARCHAR2(255),
    LABELNAAM VARCHAR2(80),
    NAAMOPENBARERUIMTE VARCHAR2(80),
    STATUS VARCHAR2(255),
    STRAATCODE VARCHAR2(80),
    STRAATNAAM VARCHAR2(255),
    TYPEOPENBARERUIMTE VARCHAR2(255),
    VERSIE NUMBER,
    WEGSEGMENT VARCHAR2(255)
);

CREATE TABLE NUMMERAANDUIDING (
    NUMMERAANDUIDING_ID NUMBER PRIMARY KEY,
    BEGINGELDIGHEID DATE,
    DATUMEINDE DATE,
    DATUMINGANG DATE,
    DOCUMENTDATUM DATE,
    DOCUMENTNUMMER NUMBER,
    EINDEGELDIGHEID DATE,
    GECONSTATEERD NUMBER(1),
    GEOMETRIE SDO_GEOMETRY,
    HUISLETTER VARCHAR2(255),
    HUISNUMMER VARCHAR2(255),
    HUISNUMMERTOEVOEGING VARCHAR2(255),
    IDENTIFICATIE VARCHAR2(255),
    LIGT_AAN_OPENBARERUIMTE_ID NUMBER,
    POSTCODE VARCHAR2(255),
    STATUS VARCHAR2(255),
    TYPEADRESSEERBAAROBJECT VARCHAR2(255),
    VERSIE NUMBER
);

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_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 HUISHOUDEN ADD CONSTRAINT FK_HUISHOUDEN_HEEFT_ALS_ADRES FOREIGN KEY (HEEFT_ALS_ADRES_NUMMERAANDUIDING_ID) REFERENCES NUMMERAANDUIDING (NUMMERAANDUIDING_ID);
-- HEEFT_ALS_ADRES (0..* to 1, Connector_ID: 931)

ALTER TABLE CLIENT ADD CONSTRAINT FK_CLIENT_MAAKT_ONDERDEEL_UIT_VAN FOREIGN KEY (MAAKT_ONDERDEEL_UIT_VAN_HUISHOUDEN_ID) REFERENCES HUISHOUDEN (HUISHOUDEN_ID);
-- MAAKT_ONDERDEEL_UIT_VAN (0..* to 1, Connector_ID: 949)

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)

ALTER TABLE NATUURLIJKPERSOON ADD CONSTRAINT FK_NATUURLIJKPERSOON_MAAKT_ONDERDEEL_UIT_VAN FOREIGN KEY (MAAKT_ONDERDEEL_UIT_VAN_HUISHOUDEN_ID) REFERENCES HUISHOUDEN (HUISHOUDEN_ID);
-- MAAKT_ONDERDEEL_UIT_VAN (1..* to 0..1, Connector_ID: 1889)

ALTER TABLE INGESCHREVENPERSOON ADD CONSTRAINT FK_INGESCHREVENPERSOON_HEEFT_ALS_ADRES FOREIGN KEY (HEEFT_ALS_ADRES_NUMMERAANDUIDING_ID) REFERENCES NUMMERAANDUIDING (NUMMERAANDUIDING_ID);
-- HEEFT_ALS_ADRES (0..* to 0..1, Connector_ID: 2273)

ALTER TABLE NUMMERAANDUIDING ADD CONSTRAINT FK_NUMMERAANDUIDING_LIGT_AAN FOREIGN KEY (LIGT_AAN_OPENBARERUIMTE_ID) REFERENCES OPENBARERUIMTE (OPENBARERUIMTE_ID);
-- LIGT_AAN (0..* to 1, Connector_ID: 2281)

