CREATE TABLE `NATUURLIJKPERSOON` (
    `NATUURLIJKPERSOON_ID` INT 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),
    `MAAKT_ONDERDEEL_UIT_VAN_HUISHOUDEN_ID` INT,
    `NATIONALITEIT` VARCHAR(100),
    `OVERLIJDENSPLAATS` VARCHAR(200),
    `VOORLETTERSAANSCHRIJVING` VARCHAR(20),
    `VOORNAMEN` VARCHAR(200),
    `VOORNAMENAANSCHRIJVING` VARCHAR(200),
    `VOORVOEGSELGESLACHTSNAAM` VARCHAR(80)
) ENGINE=InnoDB;

CREATE TABLE `SLUITINGOFAANGAANHUWELIJKOFGEREGISTREERDPARTNERSCHAP` (
    `SLUITINGOFAANGAANHUWELIJKOFGEREGISTREERDPARTNERSCHAP_ID` INT PRIMARY KEY,
    `BUITENLANDSEPLAATSAANVANG` VARCHAR(255),
    `BUITENLANDSEREGIOAANVANG` VARCHAR(255),
    `DATUMAANVANG` DATE,
    `GEMEENTEAANVANG` VARCHAR(80),
    `LANDOFGEBIEDAANVANG` VARCHAR(255),
    `OMSCHRIJVINGLOCATIEAANVANG` VARCHAR(255)
) ENGINE=InnoDB;

CREATE TABLE `KP_INGSCHRVNPRSN_NTRLJKPRSN` (
    `KP_INGSCHRVNPRSN_NTRLJKPRSN_ID` INT PRIMARY KEY,
    `INGESCHREVENPERSOON_ID` INT,
    `NATUURLIJKPERSOON_ID` INT
) ENGINE=InnoDB;

CREATE TABLE `HUISHOUDEN` (
    `HUISHOUDEN_ID` INT PRIMARY KEY,
    `HEEFT_ALS_ADRES_NUMMERAANDUIDING_ID` INT,
    `SOORT` VARCHAR(255)
) ENGINE=InnoDB;

CREATE TABLE `ONTBINDINGHUWELIJK_GEREGISTREERDPARTNERSCHAP` (
    `ONTBINDINGHUWELIJK_GEREGISTREERDPARTNERSCHAP_ID` INT PRIMARY KEY,
    `BUITENLANDSEPLAATSEINDE` DATE,
    `BUITENLANDSEREGIOEINDE` DATE,
    `DATUMEINDE` DATE,
    `GEMEENTEEINDE` DATE,
    `LANDOFGEBIEDEINDE` DATE,
    `OMSCHRIJVINGLOCATIEEINDE` DATE,
    `REDENEINDE` DATE
) ENGINE=InnoDB;

CREATE TABLE `KP_CLNT_INGSCHRVNPRSN` (
    `KP_CLNT_INGSCHRVNPRSN_ID` INT PRIMARY KEY,
    `CLIENT_ID` INT,
    `INGESCHREVENPERSOON_ID` INT
) ENGINE=InnoDB;

CREATE TABLE `INGESCHREVENPERSOON` (
    `NATUURLIJKPERSOON_ID` INT 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),
    `HEEFT_ALS_ADRES_NUMMERAANDUIDING_ID` INT,
    `INDICATIEGEHEIM` BOOLEAN,
    `INGEZETENE` BOOLEAN,
    `LANDWAARNAARVERTROKKEN` VARCHAR(255),
    `LANDWAARVANDAANINGESCHREVEN` VARCHAR(255),
    `OUDER1` VARCHAR(255),
    `OUDER2` VARCHAR(255),
    `OUDER_1_NATUURLIJKPERSOON_ID` INT,
    `OUDER_2_NATUURLIJKPERSOON_ID` INT,
    `PARTNERID` VARCHAR(255),
    `REDENEINDEBEWONING` DATE,
    `REDENOPSCHORTINGBIJHOUDING` VARCHAR(200),
    `SIGNALERINGREISDOCUMENT` BOOLEAN,
    `VERBLIJFSTITEL` VARCHAR(255)
) ENGINE=InnoDB;

CREATE TABLE `CLIENT` (
    `NATUURLIJKPERSOON_ID` INT PRIMARY KEY,
    `CODE` VARCHAR(80),
    `GEZAGSDRAGERGEKEND` BOOLEAN,
    `JURIDISCHESTATUS` VARCHAR(80),
    `MAAKT_ONDERDEEL_UIT_VAN_HUISHOUDEN_ID` INT,
    `WETTELIJKEVERTEGENWOORDIGING` VARCHAR(80)
) ENGINE=InnoDB;

CREATE TABLE `OPENBARERUIMTE` (
    `OPENBARERUIMTE_ID` INT PRIMARY KEY,
    `BEGINGELDIGHEID` DATE,
    `DATUMEINDE` DATE,
    `DATUMINGANG` DATE,
    `DOCUMENTDATUM` DATE,
    `DOCUMENTNUMMER` INT,
    `EINDGELDIGHEID` DATE,
    `GECONSTATEERD` BOOLEAN,
    `GEOMETRIE` GEOMETRY,
    `HUISNUMMERRANGE_EVEN_EN_ONEVEN_NUMMERS` VARCHAR(255),
    `HUISNUMMERRANGE_EVEN_NUMMERS` VARCHAR(255),
    `HUISNUMMERRANGE_ONEVEN_NUMMERS` VARCHAR(255),
    `IDENTIFICATIE` VARCHAR(255),
    `LABELNAAM` VARCHAR(80),
    `NAAMOPENBARERUIMTE` VARCHAR(80),
    `STATUS` VARCHAR(255),
    `STRAATCODE` VARCHAR(80),
    `STRAATNAAM` VARCHAR(255),
    `TYPEOPENBARERUIMTE` VARCHAR(255),
    `VERSIE` INT,
    `WEGSEGMENT` VARCHAR(255)
) ENGINE=InnoDB;

CREATE TABLE `NUMMERAANDUIDING` (
    `NUMMERAANDUIDING_ID` INT PRIMARY KEY,
    `BEGINGELDIGHEID` DATE,
    `DATUMEINDE` DATE,
    `DATUMINGANG` DATE,
    `DOCUMENTDATUM` DATE,
    `DOCUMENTNUMMER` INT,
    `EINDEGELDIGHEID` DATE,
    `GECONSTATEERD` BOOLEAN,
    `GEOMETRIE` GEOMETRY,
    `HUISLETTER` VARCHAR(255),
    `HUISNUMMER` VARCHAR(255),
    `HUISNUMMERTOEVOEGING` VARCHAR(255),
    `IDENTIFICATIE` VARCHAR(255),
    `LIGT_AAN_OPENBARERUIMTE_ID` INT,
    `POSTCODE` VARCHAR(255),
    `STATUS` VARCHAR(255),
    `TYPEADRESSEERBAAROBJECT` VARCHAR(255),
    `VERSIE` INT
) ENGINE=InnoDB;

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)

