CREATE TABLE [NATUURLIJKPERSOON] (
    [RECHTSPERSOON_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_ENUM_ID] INT,
    [INDICATIEOVERLEDEN_ENUM_ID] INT,
    [LANDOVERLIJDEN] VARCHAR(255),
    [NATIONALITEIT] VARCHAR(100),
    [OVERLIJDENSPLAATS] VARCHAR(200),
    [VOORLETTERSAANSCHRIJVING] VARCHAR(20),
    [VOORNAMEN] VARCHAR(200),
    [VOORNAMENAANSCHRIJVING] VARCHAR(200),
    [VOORVOEGSELGESLACHTSNAAM] VARCHAR(80)
);

CREATE TABLE [KP_NTRLJKPRSN_RCHTSPRSN] (
    [KP_NTRLJKPRSN_RCHTSPRSN_ID] INT PRIMARY KEY,
    [NATUURLIJKPERSOON_ID] INT,
    [RECHTSPERSOON_ID] INT
);

CREATE TABLE [ADRESSEERBAAROBJECT] (
    [ADRESSEERBAAROBJECT_ID] INT PRIMARY KEY,
    [HEEFT_ALS_HOOFDADRES_NUMMERAANDUIDING_ID] INT,
    [IDENTIFICATIE] VARCHAR(255),
    [TYPEADRESSEERBAAROBJECT] VARCHAR(255),
    [VERSIE] INT
);

CREATE TABLE [KP_NTNTRLJKPRSN_RCHTSPRSN] (
    [KP_NTNTRLJKPRSN_RCHTSPRSN_ID] INT PRIMARY KEY,
    [NIETNATUURLIJKPERSOON_ID] INT,
    [RECHTSPERSOON_ID] INT
);

CREATE TABLE [SBIACTIVITEIT] (
    [SBIACTIVITEIT_ID] INT PRIMARY KEY,
    [DATUMEINDESBIACTIVITEIT] DATE,
    [DATUMINGANGSBIACTIVITEIT] DATE,
    [HOOFDNIVEAU] VARCHAR(255),
    [HOOFDNIVEAUOMSCHRIJVING] VARCHAR(100),
    [NAAMACTIVITEIT] VARCHAR(255),
    [SBICODE] VARCHAR(255),
    [SBIGROEP] VARCHAR(255),
    [SBIGROEPOMSCHRIJVING] VARCHAR(100)
);

CREATE TABLE [MAATSCHAPPELIJKEACTIVITEIT] (
    [MAATSCHAPPELIJKEACTIVITEIT_ID] INT PRIMARY KEY,
    [ADRESBINNENLAND] VARCHAR(255),
    [ADRESCORRESPONDENTIE] VARCHAR(100),
    [DATUMAANVANG] DATE,
    [DATUMEINDEGELDIG] DATE,
    [DATUMFAILLISEMENT] DATE,
    [HEEFT_ALS_EIGENAAR_RECHTSPERSOON_ID] INT,
    [INDICATIEECONOMISCHACTIEF_ENUM_ID] INT,
    [IS_FUNCTIONARIS_VAN_RECHTSPERSOON_ID] INT,
    [KVKNUMMER] VARCHAR(255),
    [RECHTSVORM] VARCHAR(100),
    [RSIN] VARCHAR(255),
    [STATUTAIRENAAM] VARCHAR(100),
    [TELEFOONNUMMER] VARCHAR(20),
    [URL] VARCHAR(100)
);

CREATE TABLE [NIETNATUURLIJKPERSOON] (
    [RECHTSPERSOON_ID] INT PRIMARY KEY,
    [DATUMAANVANG] DATE,
    [DATUMEINDE] DATE,
    [DATUMUITSCHRIJVING] DATE,
    [DATUMVOORTZETTING] DATE,
    [FAXNUMMER] VARCHAR(20),
    [INGESCHREVEN_ENUM_ID] INT,
    [INOPRICHTING_ENUM_ID] INT,
    [KVKNUMMER] VARCHAR(255),
    [NNPID] VARCHAR(255),
    [RECHTSVORM_ENUM_ID] INT,
    [RSINNUMMER] VARCHAR(255),
    [STATUTAIRENAAM] VARCHAR(255),
    [STATUTAIREZETEL] VARCHAR(255),
    [WEBSITEURL] VARCHAR(200)
);

CREATE TABLE [VESTIGING] (
    [VESTIGING_ID] INT PRIMARY KEY,
    [COMMERCIELEVESTIGING_ENUM_ID] INT,
    [DATUMAANVANG] DATE,
    [DATUMEINDE] DATE,
    [DATUMVOORTZETTING] DATE,
    [FULLTIMEWERKZAMEMANNEN] VARCHAR(255),
    [FULLTIMEWERKZAMEVROUWEN] VARCHAR(255),
    [HANDELSNAAM] VARCHAR(255),
    [HEEFT_ALS_LOCATIE_ADRES_NUMMERAANDUIDING_ID] INT,
    [HEEFT_HOOFDLOCATIE_IN_OF_OP_ADRESSEERBAAROBJECT_ID] INT,
    [HEEFT_NEVENLOCATIE_IN_OF_OP_ADRESSEERBAAROBJECT_ID] INT,
    [HEEFT_RECHTSPERSOON_ID] INT,
    [IS_HOOFDVESTIGING_VAN_MAATSCHAPPELIJKEACTIVITEIT_ID] INT,
    [PARTTIMEWERKZAMEMANNEN] VARCHAR(255),
    [PARTTIMEWERKZAMEVROUWEN] VARCHAR(255),
    [TOEVOEGINGADRES] VARCHAR(100),
    [TOTAALWERKZAMEPERSONEN] VARCHAR(255),
    [UITOEFENING_VAN_ACTIVITEITEN_MAATSCHAPPELIJKEACTIVITEIT_ID] INT,
    [VERKORTENAAM] VARCHAR(255),
    [VESTIGINGSNUMMER] VARCHAR(255)
);

CREATE TABLE [SBIACTIVITEITVESTIGING] (
    [SBIACTIVITEITVESTIGING_ID] INT PRIMARY KEY,
    [INDICATIEHOOFDACTIVITEIT] VARCHAR(100),
    [SBICODE] VARCHAR(50),
    [VESTIGING_ID] INT
);

CREATE TABLE [NUMMERAANDUIDING] (
    [NUMMERAANDUIDING_ID] INT PRIMARY KEY,
    [BEGINGELDIGHEID] DATE,
    [DATUMEINDE] DATE,
    [DATUMINGANG] DATE,
    [DOCUMENTDATUM] DATE,
    [DOCUMENTNUMMER] INT,
    [EINDEGELDIGHEID] DATE,
    [GECONSTATEERD_ENUM_ID] INT,
    [GEOMETRIE] GEOMETRY,
    [HEEFT_ALS_NEVENADRES_ADRESSEERBAAROBJECT_ID] INT,
    [HUISLETTER] VARCHAR(255),
    [HUISNUMMER] VARCHAR(255),
    [HUISNUMMERTOEVOEGING] VARCHAR(255),
    [IDENTIFICATIE] VARCHAR(255),
    [POSTCODE] VARCHAR(255),
    [STATUS] VARCHAR(255),
    [TYPEADRESSEERBAAROBJECT] VARCHAR(255),
    [VERSIE] INT
);

CREATE TABLE [RECHTSPERSOON] (
    [RECHTSPERSOON_ID] INT PRIMARY KEY,
    [ADRESBINNENLAND] VARCHAR(255),
    [ADRESBUITENLAND] VARCHAR(255),
    [ADRESCORRESPONDENTIE] VARCHAR(100),
    [EMAILADRES] VARCHAR(80),
    [FAXNUMMER] VARCHAR(20),
    [IDENTIFICATIE] VARCHAR(255),
    [KVKNUMMER] VARCHAR(20),
    [NAAM] VARCHAR(200),
    [RECHTSVORM] VARCHAR(100),
    [REKENINGNUMMER] VARCHAR(255),
    [TELEFOONNUMMER] VARCHAR(20)
);

CREATE TABLE [SOORTRECHTSVORM_ENUM] (
    [SOORTRECHTSVORM_ENUM_ID] INT PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO [SOORTRECHTSVORM_ENUM] ([SOORTRECHTSVORM_ENUM_ID], VALUE) VALUES
    (1, 'BESLOTEN_VENNOOTSCHAP'),
    (2, 'COMMANDITAIRE_VENNOOTSCHAP'),
    (3, 'COOPERATIE_EUROPEES_ECONOMISCHE_SAMENWERKING'),
    (4, 'EUROPESE_COOPERATIEVE_VENNOOTSCHAP'),
    (5, 'EUROPESE_NAAMLOZE_VENNOOTSCHAP'),
    (6, 'KAPITAALVENNOOTSCHAP_BINNEN_EER'),
    (7, 'KAPITAALVENNOOTSCHAP_BUITEN_EER'),
    (8, 'KERKELIJKE_ORGANISATIE'),
    (9, 'LEEG'),
    (10, 'MAATSCHAP'),
    (11, 'NAAMLOZE_VENNOOTSCHAP'),
    (12, 'ONBEKEND'),
    (13, 'ONDERLINGE_WAARBORG_MAATSCHAPPIJ'),
    (14, 'OVERIGE_BUITENLANDSE_RECHTSPERSOON_VENNOOTSCHAP'),
    (15, 'OVERIG_PRIVAATRECHTELIJKE_RECHTSPERSOON'),
    (16, 'PUBLIEKRECHTELIJKE_RECHTSPERSOON'),
    (17, 'REDERIJ'),
    (18, 'STICHTING'),
    (19, 'VENNOOTSCHAP_ONDER_FIRMA'),
    (20, 'VERENIGING'),
    (21, 'VERENIGING_VAN_EIGENAARS');

CREATE TABLE [KP_NTNTRLJKPRSN_NTRLJKPRSN] (
    [KP_NTNTRLJKPRSN_NTRLJKPRSN_ID] INT PRIMARY KEY,
    [NIETNATUURLIJKPERSOON_ID] INT,
    [NATUURLIJKPERSOON_ID] INT
);

CREATE TABLE [BOOLEAN_ENUM] (
    [BOOLEAN_ENUM_ID] INT PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO [BOOLEAN_ENUM] ([BOOLEAN_ENUM_ID], VALUE) VALUES
    (1, 'JA'),
    (2, 'LEEG'),
    (3, 'NEE'),
    (4, 'ONBEKEND');

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 [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 [SBIACTIVITEITVESTIGING] ADD CONSTRAINT FK_SBIACTIVITEITVESTIGING_VESTIGING FOREIGN KEY ([VESTIGING_ID]) REFERENCES [VESTIGING] ([VESTIGING_ID]);
-- unnamed (1 to 1..*, Connector_ID: 1861)

ALTER TABLE [VESTIGING] ADD CONSTRAINT FK_VESTIGING_IS_HOOFDVESTIGING_VAN FOREIGN KEY ([IS_HOOFDVESTIGING_VAN_MAATSCHAPPELIJKEACTIVITEIT_ID]) REFERENCES [MAATSCHAPPELIJKEACTIVITEIT] ([MAATSCHAPPELIJKEACTIVITEIT_ID]);
-- IS_HOOFDVESTIGING_VAN (0..1 to 0..1, Connector_ID: 1959)

ALTER TABLE [MAATSCHAPPELIJKEACTIVITEIT] ADD CONSTRAINT FK_MAATSCHAPPELIJKEACTIVITEIT_HEEFT_ALS_EIGENAAR FOREIGN KEY ([HEEFT_ALS_EIGENAAR_RECHTSPERSOON_ID]) REFERENCES [RECHTSPERSOON] ([RECHTSPERSOON_ID]);
-- HEEFT_ALS_EIGENAAR (0..1 to 1, Connector_ID: 1960)

ALTER TABLE [VESTIGING] ADD CONSTRAINT FK_VESTIGING_UITOEFENING_VAN_ACTIVITEITEN FOREIGN KEY ([UITOEFENING_VAN_ACTIVITEITEN_MAATSCHAPPELIJKEACTIVITEIT_ID]) REFERENCES [MAATSCHAPPELIJKEACTIVITEIT] ([MAATSCHAPPELIJKEACTIVITEIT_ID]);
-- UITOEFENING_VAN_ACTIVITEITEN (0..* to 1, Connector_ID: 1961)

ALTER TABLE [MAATSCHAPPELIJKEACTIVITEIT] ADD CONSTRAINT FK_MAATSCHAPPELIJKEACTIVITEIT_IS_FUNCTIONARIS_VAN FOREIGN KEY ([IS_FUNCTIONARIS_VAN_RECHTSPERSOON_ID]) REFERENCES [RECHTSPERSOON] ([RECHTSPERSOON_ID]);
-- IS_FUNCTIONARIS_VAN (0..* to 1.., Connector_ID: 1962)

ALTER TABLE [VESTIGING] ADD CONSTRAINT FK_VESTIGING_HEEFT FOREIGN KEY ([HEEFT_RECHTSPERSOON_ID]) REFERENCES [RECHTSPERSOON] ([RECHTSPERSOON_ID]);
-- HEEFT (1 to 0..*, Connector_ID: 1968)

ALTER TABLE [VESTIGING] ADD CONSTRAINT FK_VESTIGING_HEEFT_HOOFDLOCATIE_IN_OF_OP FOREIGN KEY ([HEEFT_HOOFDLOCATIE_IN_OF_OP_ADRESSEERBAAROBJECT_ID]) REFERENCES [ADRESSEERBAAROBJECT] ([ADRESSEERBAAROBJECT_ID]);
-- HEEFT_HOOFDLOCATIE_IN_OF_OP (0..* to 0..1, Connector_ID: 2240)

ALTER TABLE [VESTIGING] ADD CONSTRAINT FK_VESTIGING_HEEFT_NEVENLOCATIE_IN_OF_OP FOREIGN KEY ([HEEFT_NEVENLOCATIE_IN_OF_OP_ADRESSEERBAAROBJECT_ID]) REFERENCES [ADRESSEERBAAROBJECT] ([ADRESSEERBAAROBJECT_ID]);
-- HEEFT_NEVENLOCATIE_IN_OF_OP (0..* to 0..1, Connector_ID: 2244)

ALTER TABLE [NUMMERAANDUIDING] ADD CONSTRAINT FK_NUMMERAANDUIDING_HEEFT_ALS_NEVENADRES FOREIGN KEY ([HEEFT_ALS_NEVENADRES_ADRESSEERBAAROBJECT_ID]) REFERENCES [ADRESSEERBAAROBJECT] ([ADRESSEERBAAROBJECT_ID]);
-- HEEFT_ALS_NEVENADRES (1 to 0..*, Connector_ID: 2268)

ALTER TABLE [ADRESSEERBAAROBJECT] ADD CONSTRAINT FK_ADRESSEERBAAROBJECT_HEEFT_ALS_HOOFDADRES FOREIGN KEY ([HEEFT_ALS_HOOFDADRES_NUMMERAANDUIDING_ID]) REFERENCES [NUMMERAANDUIDING] ([NUMMERAANDUIDING_ID]);
-- HEEFT_ALS_HOOFDADRES (1 to 1, Connector_ID: 2274)

ALTER TABLE [VESTIGING] ADD CONSTRAINT FK_VESTIGING_HEEFT_ALS_LOCATIE_ADRES FOREIGN KEY ([HEEFT_ALS_LOCATIE_ADRES_NUMMERAANDUIDING_ID]) REFERENCES [NUMMERAANDUIDING] ([NUMMERAANDUIDING_ID]);
-- HEEFT_ALS_LOCATIE_ADRES (1 to 0..*, Connector_ID: 2282)

ALTER TABLE [NUMMERAANDUIDING] ADD CONSTRAINT FK_NUMMERAANDUIDING_GECONSTATEERD_ENUM_ID FOREIGN KEY ([GECONSTATEERD_ENUM_ID_BOOLEAN_ENUM_ID]) REFERENCES [BOOLEAN_ENUM] ([BOOLEAN_ENUM_ID]);
-- GECONSTATEERD_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE [NIETNATUURLIJKPERSOON] ADD CONSTRAINT FK_NIETNATUURLIJKPERSOON_INOPRICHTING_ENUM_ID FOREIGN KEY ([INOPRICHTING_ENUM_ID_BOOLEAN_ENUM_ID]) REFERENCES [BOOLEAN_ENUM] ([BOOLEAN_ENUM_ID]);
-- INOPRICHTING_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE [NIETNATUURLIJKPERSOON] ADD CONSTRAINT FK_NIETNATUURLIJKPERSOON_RECHTSVORM_ENUM_ID FOREIGN KEY ([RECHTSVORM_ENUM_ID_SOORTRECHTSVORM_ENUM_ID]) REFERENCES [SOORTRECHTSVORM_ENUM] ([SOORTRECHTSVORM_ENUM_ID]);
-- RECHTSVORM_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE [NIETNATUURLIJKPERSOON] ADD CONSTRAINT FK_NIETNATUURLIJKPERSOON_INGESCHREVEN_ENUM_ID FOREIGN KEY ([INGESCHREVEN_ENUM_ID_BOOLEAN_ENUM_ID]) REFERENCES [BOOLEAN_ENUM] ([BOOLEAN_ENUM_ID]);
-- INGESCHREVEN_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE [MAATSCHAPPELIJKEACTIVITEIT] ADD CONSTRAINT FK_MAATSCHAPPELIJKEACTIVITEIT_INDICATIEECONOMISCHACTIEF_ENUM_ID FOREIGN KEY ([INDICATIEECONOMISCHACTIEF_ENUM_ID_BOOLEAN_ENUM_ID]) REFERENCES [BOOLEAN_ENUM] ([BOOLEAN_ENUM_ID]);
-- INDICATIEECONOMISCHACTIEF_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE [NATUURLIJKPERSOON] ADD CONSTRAINT FK_NATUURLIJKPERSOON_INDICATIEOVERLEDEN_ENUM_ID FOREIGN KEY ([INDICATIEOVERLEDEN_ENUM_ID_BOOLEAN_ENUM_ID]) REFERENCES [BOOLEAN_ENUM] ([BOOLEAN_ENUM_ID]);
-- INDICATIEOVERLEDEN_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE [NATUURLIJKPERSOON] ADD CONSTRAINT FK_NATUURLIJKPERSOON_INDICATIEAFSCHERMINGPERSOONSGEGEVENS_ENUM_ID FOREIGN KEY ([INDICATIEAFSCHERMINGPERSOONSGEGEVENS_ENUM_ID_BOOLEAN_ENUM_ID]) REFERENCES [BOOLEAN_ENUM] ([BOOLEAN_ENUM_ID]);
-- INDICATIEAFSCHERMINGPERSOONSGEGEVENS_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE [VESTIGING] ADD CONSTRAINT FK_VESTIGING_COMMERCIELEVESTIGING_ENUM_ID FOREIGN KEY ([COMMERCIELEVESTIGING_ENUM_ID_BOOLEAN_ENUM_ID]) REFERENCES [BOOLEAN_ENUM] ([BOOLEAN_ENUM_ID]);
-- COMMERCIELEVESTIGING_ENUM_ID (1 to 1, Connector_ID: enum_ref)

