CREATE TABLE VASTGOEDOBJECT (
    VASTGOEDOBJECT_ID NUMBER PRIMARY KEY,
    AANTALETAGES NUMBER,
    AANTALPARKEERPLAATSEN NUMBER,
    AANTALRIOLERINGEN NUMBER,
    ADRESAANDUIDING VARCHAR2(255),
    AFGEKOCHTEERFPACHT_ENUM_ID NUMBER,
    AFGESPROKENCONDITIESCORE VARCHAR2(255),
    AFKOOPWAARDE VARCHAR2(255),
    ASBESTRAPPORTAGEAANWEZIG_ENUM_ID NUMBER,
    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_ENUM_ID NUMBER,
    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 LOCATIE (
    VASTGOEDOBJECT_ID NUMBER PRIMARY KEY,
    ADRES VARCHAR2(255),
    SCHOOL_HEEFT_SCHOOL_ID NUMBER
);

CREATE TABLE LEERLING (
    LEERLING_ID NUMBER PRIMARY KEY,
    HEEFT_STARTKWALIFICATIE_ID NUMBER,
    KWETSBAREJONGERE_ENUM_ID NUMBER
);

CREATE TABLE STARTKWALIFICATIE (
    STARTKWALIFICATIE_ID NUMBER PRIMARY KEY,
    DATUMBEHAALD DATE
);

CREATE TABLE KP_SCHL_ONDRWJSLPBN (
    KP_SCHL_ONDRWJSLPBN_ID NUMBER PRIMARY KEY,
    SCHOOL_ID NUMBER,
    ONDERWIJSLOOPBAAN_ID NUMBER
);

CREATE TABLE KP_SCHL_ONDRWJSSRT (
    KP_SCHL_ONDRWJSSRT_ID NUMBER PRIMARY KEY,
    SCHOOL_ID NUMBER,
    ONDERWIJSSOORT_ID NUMBER
);

CREATE TABLE KP_LCT_VSTGDBJCT (
    KP_LCT_VSTGDBJCT_ID NUMBER PRIMARY KEY,
    LOCATIE_ID NUMBER,
    VASTGOEDOBJECT_ID NUMBER
);

CREATE TABLE SCHOOL (
    SCHOOL_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(200)
);

CREATE TABLE LEERJAAR (
    LEERJAAR_ID NUMBER PRIMARY KEY,
    JAAREINDE DATE,
    JAARSTART DATE
);

CREATE TABLE INSCHRIJVING (
    INSCHRIJVING_ID NUMBER PRIMARY KEY,
    DATUM DATE,
    HEEFT_LEERLING_ID NUMBER,
    HEEFT_SCHOOL_ID NUMBER
);

CREATE TABLE ONDERWIJSTYPE_ENUM (
    ONDERWIJSTYPE_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO ONDERWIJSTYPE_ENUM (ONDERWIJSTYPE_ENUM_ID, VALUE) VALUES (1, 'HAVO');
INSERT INTO ONDERWIJSTYPE_ENUM (ONDERWIJSTYPE_ENUM_ID, VALUE) VALUES (2, 'VMBO_B');
INSERT INTO ONDERWIJSTYPE_ENUM (ONDERWIJSTYPE_ENUM_ID, VALUE) VALUES (3, 'VMBO_K');
INSERT INTO ONDERWIJSTYPE_ENUM (ONDERWIJSTYPE_ENUM_ID, VALUE) VALUES (4, 'VMBO_T');
INSERT INTO ONDERWIJSTYPE_ENUM (ONDERWIJSTYPE_ENUM_ID, VALUE) VALUES (5, 'VWO');

CREATE TABLE UITSCHRIJVING (
    UITSCHRIJVING_ID NUMBER PRIMARY KEY,
    DATUM DATE,
    DIPLOMABEHAALD_ENUM_ID NUMBER,
    HEEFT_LEERLING_ID NUMBER,
    HEEFT_SCHOOL_ID NUMBER
);

CREATE TABLE ONDERWIJSLOOPBAAN (
    ONDERWIJSLOOPBAAN_ID NUMBER PRIMARY KEY,
    HEEFT_LEERLING_ID NUMBER
);

CREATE TABLE ONDERWIJSSOORT (
    ONDERWIJSSOORT_ID NUMBER PRIMARY KEY,
    OMSCHRIJVING VARCHAR2(80),
    ONDERWIJSTYPE_ENUM_ID NUMBER
);

CREATE TABLE LOOPBAANSTAP (
    LOOPBAANSTAP_ID NUMBER PRIMARY KEY,
    KLAS NUMBER,
    ONDERWIJSLOOPBAAN_ID NUMBER,
    ONDERWIJSTYPE_ENUM_ID NUMBER,
    SCHOOLJAAR VARCHAR2(255)
);

CREATE TABLE BOOLEAN_ENUM (
    BOOLEAN_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

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

ALTER TABLE LOCATIE ADD CONSTRAINT FK_LOCATIE_GEN_VASTGOEDOBJECT FOREIGN KEY (VASTGOEDOBJECT_ID) REFERENCES VASTGOEDOBJECT (VASTGOEDOBJECT_ID);
-- Generalization to VASTGOEDOBJECT

ALTER TABLE KP_SCHL_ONDRWJSSRT ADD CONSTRAINT FK_KP_SCHL_ONDRWJSSRT_1 FOREIGN KEY (SCHOOL_ID) REFERENCES SCHOOL (SCHOOL_ID);
-- SCHOOL (many-to-many junction, Connector_ID: 1210)

ALTER TABLE KP_SCHL_ONDRWJSSRT ADD CONSTRAINT FK_KP_SCHL_ONDRWJSSRT_2 FOREIGN KEY (ONDERWIJSSOORT_ID) REFERENCES ONDERWIJSSOORT (ONDERWIJSSOORT_ID);
-- ONDERWIJSSOORT (many-to-many junction, Connector_ID: 1210)

ALTER TABLE KP_SCHL_ONDRWJSLPBN ADD CONSTRAINT FK_KP_SCHL_ONDRWJSLPBN_1 FOREIGN KEY (SCHOOL_ID) REFERENCES SCHOOL (SCHOOL_ID);
-- SCHOOL (many-to-many junction, Connector_ID: 1211)

ALTER TABLE KP_SCHL_ONDRWJSLPBN ADD CONSTRAINT FK_KP_SCHL_ONDRWJSLPBN_2 FOREIGN KEY (ONDERWIJSLOOPBAAN_ID) REFERENCES ONDERWIJSLOOPBAAN (ONDERWIJSLOOPBAAN_ID);
-- ONDERWIJSLOOPBAAN (many-to-many junction, Connector_ID: 1211)

ALTER TABLE KP_LCT_VSTGDBJCT ADD CONSTRAINT FK_KP_LCT_VSTGDBJCT_1 FOREIGN KEY (LOCATIE_ID) REFERENCES LOCATIE (VASTGOEDOBJECT_ID);
-- LOCATIE (many-to-many junction, Connector_ID: 1214)

ALTER TABLE KP_LCT_VSTGDBJCT ADD CONSTRAINT FK_KP_LCT_VSTGDBJCT_2 FOREIGN KEY (VASTGOEDOBJECT_ID) REFERENCES VASTGOEDOBJECT (VASTGOEDOBJECT_ID);
-- VASTGOEDOBJECT (many-to-many junction, Connector_ID: 1214)

ALTER TABLE UITSCHRIJVING ADD CONSTRAINT FK_UITSCHRIJVING_HEEFT FOREIGN KEY (HEEFT_SCHOOL_ID) REFERENCES SCHOOL (SCHOOL_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1206)

ALTER TABLE LOOPBAANSTAP ADD CONSTRAINT FK_LOOPBAANSTAP_ONDERWIJSLOOPBAAN FOREIGN KEY (ONDERWIJSLOOPBAAN_ID) REFERENCES ONDERWIJSLOOPBAAN (ONDERWIJSLOOPBAAN_ID);
-- unnamed (1 to 0..*, Connector_ID: 1212)

ALTER TABLE LOCATIE ADD CONSTRAINT FK_LOCATIE_SCHOOL_HEEFT FOREIGN KEY (SCHOOL_HEEFT_SCHOOL_ID) REFERENCES SCHOOL (SCHOOL_ID);
-- SCHOOL_HEEFT (0..1 to 1..*, Connector_ID: 1213)

ALTER TABLE UITSCHRIJVING ADD CONSTRAINT FK_UITSCHRIJVING_HEEFT_2 FOREIGN KEY (HEEFT_LEERLING_ID) REFERENCES LEERLING (LEERLING_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1215)

ALTER TABLE ONDERWIJSLOOPBAAN ADD CONSTRAINT FK_ONDERWIJSLOOPBAAN_HEEFT FOREIGN KEY (HEEFT_LEERLING_ID) REFERENCES LEERLING (LEERLING_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1216)

ALTER TABLE LEERLING ADD CONSTRAINT FK_LEERLING_HEEFT FOREIGN KEY (HEEFT_STARTKWALIFICATIE_ID) REFERENCES STARTKWALIFICATIE (STARTKWALIFICATIE_ID);
-- HEEFT (1 to 0..1, Connector_ID: 1217)

ALTER TABLE INSCHRIJVING ADD CONSTRAINT FK_INSCHRIJVING_HEEFT FOREIGN KEY (HEEFT_LEERLING_ID) REFERENCES LEERLING (LEERLING_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1219)

ALTER TABLE INSCHRIJVING ADD CONSTRAINT FK_INSCHRIJVING_HEEFT_2 FOREIGN KEY (HEEFT_SCHOOL_ID) REFERENCES SCHOOL (SCHOOL_ID);
-- HEEFT (0..* to 1, Connector_ID: 1220)

ALTER TABLE LEERLING ADD CONSTRAINT FK_LEERLING_KWETSBAREJONGERE_ENUM_ID FOREIGN KEY (KWETSBAREJONGERE_ENUM_ID_BOOLEAN_ENUM_ID) REFERENCES BOOLEAN_ENUM (BOOLEAN_ENUM_ID);
-- KWETSBAREJONGERE_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE LOOPBAANSTAP ADD CONSTRAINT FK_LOOPBAANSTAP_ONDERWIJSTYPE_ENUM_ID FOREIGN KEY (ONDERWIJSTYPE_ENUM_ID_ONDERWIJSTYPE_ENUM_ID) REFERENCES ONDERWIJSTYPE_ENUM (ONDERWIJSTYPE_ENUM_ID);
-- ONDERWIJSTYPE_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE ONDERWIJSSOORT ADD CONSTRAINT FK_ONDERWIJSSOORT_ONDERWIJSTYPE_ENUM_ID FOREIGN KEY (ONDERWIJSTYPE_ENUM_ID_ONDERWIJSTYPE_ENUM_ID) REFERENCES ONDERWIJSTYPE_ENUM (ONDERWIJSTYPE_ENUM_ID);
-- ONDERWIJSTYPE_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE UITSCHRIJVING ADD CONSTRAINT FK_UITSCHRIJVING_DIPLOMABEHAALD_ENUM_ID FOREIGN KEY (DIPLOMABEHAALD_ENUM_ID_BOOLEAN_ENUM_ID) REFERENCES BOOLEAN_ENUM (BOOLEAN_ENUM_ID);
-- DIPLOMABEHAALD_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE VASTGOEDOBJECT ADD CONSTRAINT FK_VASTGOEDOBJECT_ASBESTRAPPORTAGEAANWEZIG_ENUM_ID FOREIGN KEY (ASBESTRAPPORTAGEAANWEZIG_ENUM_ID_BOOLEAN_ENUM_ID) REFERENCES BOOLEAN_ENUM (BOOLEAN_ENUM_ID);
-- ASBESTRAPPORTAGEAANWEZIG_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE VASTGOEDOBJECT ADD CONSTRAINT FK_VASTGOEDOBJECT_AFGEKOCHTEERFPACHT_ENUM_ID FOREIGN KEY (AFGEKOCHTEERFPACHT_ENUM_ID_BOOLEAN_ENUM_ID) REFERENCES BOOLEAN_ENUM (BOOLEAN_ENUM_ID);
-- AFGEKOCHTEERFPACHT_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE VASTGOEDOBJECT ADD CONSTRAINT FK_VASTGOEDOBJECT_GEARCHIVEERD_ENUM_ID FOREIGN KEY (GEARCHIVEERD_ENUM_ID_BOOLEAN_ENUM_ID) REFERENCES BOOLEAN_ENUM (BOOLEAN_ENUM_ID);
-- GEARCHIVEERD_ENUM_ID (1 to 1, Connector_ID: enum_ref)

