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

CREATE TABLE OBJECTRELATIEROL_ENUM (
    OBJECTRELATIEROL_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

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

CREATE TABLE AANBESTEDING (
    AANBESTEDING_ID NUMBER PRIMARY KEY,
    DATUMPUBLICATIE DATE,
    DATUMSTART DATE,
    DIGITAAL NUMBER(1),
    NAAM VARCHAR2(200),
    PROCEDURE VARCHAR2(255),
    REFERENTIENUMMER VARCHAR2(80),
    SCOREMAXIMAAL NUMBER,
    STATUS VARCHAR2(80),
    TENDERNEDKENMERK VARCHAR2(80),
    TYPE VARCHAR2(255),
    VOLGENDESLUITING 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),
    IDENTIFICATIE VARCHAR2(255),
    KVKNUMMER VARCHAR2(20),
    NAAM VARCHAR2(200),
    RECHTSVORM VARCHAR2(100),
    REKENINGNUMMER VARCHAR2(255),
    TELEFOONNUMMER VARCHAR2(20)
);

CREATE TABLE AANBESTEDING_VASTGOED (
    AANBESTEDING_ID NUMBER PRIMARY KEY
);

CREATE TABLE WERKBON (
    WERKBON_ID NUMBER PRIMARY KEY,
    BETREFT_VASTGOEDOBJECT_ID NUMBER,
    UITVOERING_VAN_AANBESTEDING_ID NUMBER,
    VOERT_WERK_UIT_CONFORM_RECHTSPERSOON_ID NUMBER
);

CREATE TABLE OBJECTRELATIE (
    OBJECTRELATIE_ID NUMBER PRIMARY KEY,
    HEEFT_RECHTSPERSOON_ID NUMBER,
    HEEFT_VASTGOEDOBJECT_ID NUMBER,
    ROL_ENUM_ID NUMBER
);

CREATE TABLE LEVERANCIER (
    RECHTSPERSOON_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(200),
    NUMMER VARCHAR2(255)
);

CREATE TABLE KP_ANBSTDNG_VSTGD_ANBSTDNG (
    KP_ANBSTDNG_VSTGD_ANBSTDNG_ID NUMBER PRIMARY KEY,
    AANBESTEDING_VASTGOED_ID NUMBER,
    AANBESTEDING_ID NUMBER
);

CREATE TABLE KP_LVRNCR_RCHTSPRSN (
    KP_LVRNCR_RCHTSPRSN_ID NUMBER PRIMARY KEY,
    LEVERANCIER_ID NUMBER,
    RECHTSPERSOON_ID NUMBER
);

CREATE TABLE KP_LVRNCR_ANBSTDNG_VSTGD (
    KP_LVRNCR_ANBSTDNG_VSTGD_ID NUMBER PRIMARY KEY,
    LEVERANCIER_ID NUMBER,
    AANBESTEDING_VASTGOED_ID NUMBER
);

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)

