CREATE TABLE [VASTGOEDOBJECT] (
    [VASTGOEDOBJECT_ID] INT PRIMARY KEY,
    [AANTALETAGES] INT,
    [AANTALPARKEERPLAATSEN] INT,
    [AANTALRIOLERINGEN] INT,
    [ADRESAANDUIDING] VARCHAR(255),
    [AFGEKOCHTEERFPACHT] BIT,
    [AFGESPROKENCONDITIESCORE] VARCHAR(255),
    [AFKOOPWAARDE] VARCHAR(255),
    [ASBESTRAPPORTAGEAANWEZIG] BIT,
    [BEDRAGAANKOOP] DECIMAL(10,2),
    [BESTEMMINGSPLAN] VARCHAR(200),
    [BOEKWAARDE] VARCHAR(255),
    [BOUWJAAR] INT,
    [BOUWWERK] VARCHAR(80),
    [BOVENLIGGENDNIVEAU] VARCHAR(80),
    [BOVENLIGGENDNIVEAUCODE] VARCHAR(20),
    [BRUTOVLOEROPPERVLAKTE] INT,
    [CO2UITSTOOT] INT,
    [CONDITIESCORE] VARCHAR(255),
    [DATUMAFSTOTEN] DATE,
    [DATUMBEREKENINGOPPERVLAK] DATE,
    [DATUMEIGENDOM] DATE,
    [DATUMVERKOOP] DATE,
    [DEELPORTEFEUILLE] VARCHAR(80),
    [ENERGIEKOSTEN] DECIMAL(10,2),
    [ENERGIELABEL] VARCHAR(255),
    [ENERGIEVERBRUIK] INT,
    [FISCALEWAARDE] VARCHAR(255),
    [FOTO] VARCHAR(255),
    [GEARCHIVEERD] BIT,
    [HERBOUWWAARDE] VARCHAR(255),
    [HOOFDSTUK] VARCHAR(80),
    [IDENTIFICATIE] VARCHAR(80),
    [JAARLAATSTERENOVATIE] VARCHAR(255),
    [KOSTENPLAATS] DECIMAL(10,2),
    [LOCATIE] VARCHAR(255),
    [MARKTWAARDE] VARCHAR(255),
    [MONUMENT] VARCHAR(255),
    [NAAM] VARCHAR(80),
    [OBJECTSTATUS] VARCHAR(255),
    [OBJECTSTATUSCODE] VARCHAR(255),
    [OBJECTTYPE] VARCHAR(80),
    [OBJECTTYPECODE] VARCHAR(255),
    [OMSCHRIJVING] VARCHAR(80),
    [ONDERHOUDSCATEGORIE] VARCHAR(80),
    [OPPERVLAKTEKANTOOR] INT,
    [PORTEFEUILLE] VARCHAR(80),
    [PORTEFEUILLECODE] VARCHAR(255),
    [PROVINCIE] VARCHAR(255),
    [TOELICHTING] NVARCHAR(MAX),
    [VERHUURBAARVLOEROPPERVLAK] INT,
    [VERKOOPBAARHEID] VARCHAR(80),
    [VERKOOPBEDRAG] DECIMAL(10,2),
    [VERZEKERDEWAARDE] VARCHAR(255),
    [WAARDEGROND] VARCHAR(255),
    [WAARDEOPSTAL] VARCHAR(255),
    [WIJK] VARCHAR(255),
    [WOZWAARDE] VARCHAR(255)
);

CREATE TABLE [OBJECTRELATIEROL_ENUM] (
    [OBJECTRELATIEROL_ENUM_ID] INT PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO [OBJECTRELATIEROL_ENUM] ([OBJECTRELATIEROL_ENUM_ID], VALUE) VALUES
    (1, 'ACCOUNTMANAGER'),
    (2, 'ACCOUNTMANAGER_VERKOOP_JURIST_'),
    (3, 'BEHEERDER'),
    (4, 'SERVICE_PROVIDER'),
    (5, 'TAXATEUR'),
    (6, 'TECHNISCH_BEHEERDER');

CREATE TABLE [AANBESTEDING] (
    [AANBESTEDING_ID] INT PRIMARY KEY,
    [DATUMPUBLICATIE] DATE,
    [DATUMSTART] DATE,
    [DIGITAAL] BIT,
    [NAAM] VARCHAR(200),
    [PROCEDURE] VARCHAR(255),
    [REFERENTIENUMMER] VARCHAR(80),
    [SCOREMAXIMAAL] INT,
    [STATUS] VARCHAR(80),
    [TENDERNEDKENMERK] VARCHAR(80),
    [TYPE] VARCHAR(255),
    [VOLGENDESLUITING] VARCHAR(255)
);

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 [AANBESTEDING_VASTGOED] (
    [AANBESTEDING_ID] INT PRIMARY KEY
);

CREATE TABLE [WERKBON] (
    [WERKBON_ID] INT PRIMARY KEY,
    [BETREFT_VASTGOEDOBJECT_ID] INT,
    [UITVOERING_VAN_AANBESTEDING_ID] INT,
    [VOERT_WERK_UIT_CONFORM_RECHTSPERSOON_ID] INT
);

CREATE TABLE [OBJECTRELATIE] (
    [OBJECTRELATIE_ID] INT PRIMARY KEY,
    [HEEFT_RECHTSPERSOON_ID] INT,
    [HEEFT_VASTGOEDOBJECT_ID] INT,
    [ROL_ENUM_ID] INT
);

CREATE TABLE [LEVERANCIER] (
    [RECHTSPERSOON_ID] INT PRIMARY KEY,
    [NAAM] VARCHAR(200),
    [NUMMER] VARCHAR(255)
);

CREATE TABLE [KP_ANBSTDNG_VSTGD_ANBSTDNG] (
    [KP_ANBSTDNG_VSTGD_ANBSTDNG_ID] INT PRIMARY KEY,
    [AANBESTEDING_VASTGOED_ID] INT,
    [AANBESTEDING_ID] INT
);

CREATE TABLE [KP_LVRNCR_RCHTSPRSN] (
    [KP_LVRNCR_RCHTSPRSN_ID] INT PRIMARY KEY,
    [LEVERANCIER_ID] INT,
    [RECHTSPERSOON_ID] INT
);

CREATE TABLE [KP_LVRNCR_ANBSTDNG_VSTGD] (
    [KP_LVRNCR_ANBSTDNG_VSTGD_ID] INT PRIMARY KEY,
    [LEVERANCIER_ID] INT,
    [AANBESTEDING_VASTGOED_ID] INT
);

ALTER TABLE [AANBESTEDING_VASTGOED] ADD CONSTRAINT FK_AANBESTEDING_VASTGOED_GEN_AANBESTEDING FOREIGN KEY ([AANBESTEDING_ID]) REFERENCES [AANBESTEDING] ([AANBESTEDING_ID]);
-- Generalization to AANBESTEDING

ALTER TABLE [LEVERANCIER] ADD CONSTRAINT FK_LEVERANCIER_GEN_RECHTSPERSOON FOREIGN KEY ([RECHTSPERSOON_ID]) REFERENCES [RECHTSPERSOON] ([RECHTSPERSOON_ID]);
-- Generalization to RECHTSPERSOON

ALTER TABLE [KP_LVRNCR_RCHTSPRSN] ADD CONSTRAINT FK_KP_LVRNCR_RCHTSPRSN_1 FOREIGN KEY ([LEVERANCIER_ID]) REFERENCES [LEVERANCIER] ([RECHTSPERSOON_ID]);
-- LEVERANCIER (many-to-many junction, Connector_ID: 390)

ALTER TABLE [KP_LVRNCR_RCHTSPRSN] ADD CONSTRAINT FK_KP_LVRNCR_RCHTSPRSN_2 FOREIGN KEY ([RECHTSPERSOON_ID]) REFERENCES [RECHTSPERSOON] ([RECHTSPERSOON_ID]);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 390)

ALTER TABLE [KP_LVRNCR_ANBSTDNG_VSTGD] ADD CONSTRAINT FK_KP_LVRNCR_ANBSTDNG_VSTGD_1 FOREIGN KEY ([LEVERANCIER_ID]) REFERENCES [LEVERANCIER] ([RECHTSPERSOON_ID]);
-- LEVERANCIER (many-to-many junction, Connector_ID: 586)

ALTER TABLE [KP_LVRNCR_ANBSTDNG_VSTGD] ADD CONSTRAINT FK_KP_LVRNCR_ANBSTDNG_VSTGD_2 FOREIGN KEY ([AANBESTEDING_VASTGOED_ID]) REFERENCES [AANBESTEDING_VASTGOED] ([AANBESTEDING_ID]);
-- AANBESTEDING_VASTGOED (many-to-many junction, Connector_ID: 586)

ALTER TABLE [KP_ANBSTDNG_VSTGD_ANBSTDNG] ADD CONSTRAINT FK_KP_ANBSTDNG_VSTGD_ANBSTDNG_1 FOREIGN KEY ([AANBESTEDING_VASTGOED_ID]) REFERENCES [AANBESTEDING_VASTGOED] ([AANBESTEDING_ID]);
-- AANBESTEDING_VASTGOED (many-to-many junction, Connector_ID: 588)

ALTER TABLE [KP_ANBSTDNG_VSTGD_ANBSTDNG] ADD CONSTRAINT FK_KP_ANBSTDNG_VSTGD_ANBSTDNG_2 FOREIGN KEY ([AANBESTEDING_ID]) REFERENCES [AANBESTEDING] ([AANBESTEDING_ID]);
-- AANBESTEDING (many-to-many junction, Connector_ID: 588)

ALTER TABLE [WERKBON] ADD CONSTRAINT FK_WERKBON_VOERT_WERK_UIT_CONFORM FOREIGN KEY ([VOERT_WERK_UIT_CONFORM_RECHTSPERSOON_ID]) REFERENCES [RECHTSPERSOON] ([RECHTSPERSOON_ID]);
-- VOERT_WERK_UIT_CONFORM (1 to 0..*, Connector_ID: 538)

ALTER TABLE [WERKBON] ADD CONSTRAINT FK_WERKBON_BETREFT FOREIGN KEY ([BETREFT_VASTGOEDOBJECT_ID]) REFERENCES [VASTGOEDOBJECT] ([VASTGOEDOBJECT_ID]);
-- BETREFT (0..* to 1, Connector_ID: 542)

ALTER TABLE [OBJECTRELATIE] ADD CONSTRAINT FK_OBJECTRELATIE_HEEFT FOREIGN KEY ([HEEFT_VASTGOEDOBJECT_ID]) REFERENCES [VASTGOEDOBJECT] ([VASTGOEDOBJECT_ID]);
-- HEEFT (1 to 0..*, Connector_ID: 556)

ALTER TABLE [WERKBON] ADD CONSTRAINT FK_WERKBON_UITVOERING_VAN FOREIGN KEY ([UITVOERING_VAN_AANBESTEDING_ID]) REFERENCES [AANBESTEDING] ([AANBESTEDING_ID]);
-- UITVOERING_VAN (0..1 to 0..*, Connector_ID: 587)

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

ALTER TABLE [OBJECTRELATIE] ADD CONSTRAINT FK_OBJECTRELATIE_ROL_ENUM_ID FOREIGN KEY ([ROL_ENUM_ID_OBJECTRELATIEROL_ENUM_ID]) REFERENCES [OBJECTRELATIEROL_ENUM] ([OBJECTRELATIEROL_ENUM_ID]);
-- ROL_ENUM_ID (1 to 1, Connector_ID: enum_ref)

