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

CREATE TABLE [LEERLING] (
    [LEERLING_ID] INT PRIMARY KEY,
    [HEEFT_STARTKWALIFICATIE_ID] INT,
    [KWETSBAREJONGERE_ENUM_ID] INT
);

CREATE TABLE [STARTKWALIFICATIE] (
    [STARTKWALIFICATIE_ID] INT PRIMARY KEY,
    [DATUMBEHAALD] DATE
);

CREATE TABLE [KP_SCHL_ONDRWJSLPBN] (
    [KP_SCHL_ONDRWJSLPBN_ID] INT PRIMARY KEY,
    [SCHOOL_ID] INT,
    [ONDERWIJSLOOPBAAN_ID] INT
);

CREATE TABLE [KP_SCHL_ONDRWJSSRT] (
    [KP_SCHL_ONDRWJSSRT_ID] INT PRIMARY KEY,
    [SCHOOL_ID] INT,
    [ONDERWIJSSOORT_ID] INT
);

CREATE TABLE [KP_LCT_VSTGDBJCT] (
    [KP_LCT_VSTGDBJCT_ID] INT PRIMARY KEY,
    [LOCATIE_ID] INT,
    [VASTGOEDOBJECT_ID] INT
);

CREATE TABLE [SCHOOL] (
    [SCHOOL_ID] INT PRIMARY KEY,
    [NAAM] VARCHAR(200)
);

CREATE TABLE [LEERJAAR] (
    [LEERJAAR_ID] INT PRIMARY KEY,
    [JAAREINDE] DATE,
    [JAARSTART] DATE
);

CREATE TABLE [INSCHRIJVING] (
    [INSCHRIJVING_ID] INT PRIMARY KEY,
    [DATUM] DATE,
    [HEEFT_LEERLING_ID] INT,
    [HEEFT_SCHOOL_ID] INT
);

CREATE TABLE [ONDERWIJSTYPE_ENUM] (
    [ONDERWIJSTYPE_ENUM_ID] INT PRIMARY KEY,
    VALUE VARCHAR(255)
);

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

CREATE TABLE [UITSCHRIJVING] (
    [UITSCHRIJVING_ID] INT PRIMARY KEY,
    [DATUM] DATE,
    [DIPLOMABEHAALD_ENUM_ID] INT,
    [HEEFT_LEERLING_ID] INT,
    [HEEFT_SCHOOL_ID] INT
);

CREATE TABLE [ONDERWIJSLOOPBAAN] (
    [ONDERWIJSLOOPBAAN_ID] INT PRIMARY KEY,
    [HEEFT_LEERLING_ID] INT
);

CREATE TABLE [ONDERWIJSSOORT] (
    [ONDERWIJSSOORT_ID] INT PRIMARY KEY,
    [OMSCHRIJVING] VARCHAR(80),
    [ONDERWIJSTYPE_ENUM_ID] INT
);

CREATE TABLE [LOOPBAANSTAP] (
    [LOOPBAANSTAP_ID] INT PRIMARY KEY,
    [KLAS] INT,
    [ONDERWIJSLOOPBAAN_ID] INT,
    [ONDERWIJSTYPE_ENUM_ID] INT,
    [SCHOOLJAAR] VARCHAR(255)
);

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 [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_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)

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_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)

