CREATE TABLE NIETNATUURLIJKPERSOON (
    NIETNATUURLIJKPERSOON_ID INTEGER PRIMARY KEY,
    DATUMAANVANG DATE,
    DATUMEINDE DATE,
    DATUMUITSCHRIJVING DATE,
    DATUMVOORTZETTING DATE,
    FAXNUMMER VARCHAR(20),
    INGESCHREVEN BOOLEAN,
    INOPRICHTING BOOLEAN,
    KVKNUMMER VARCHAR(255),
    NNPID VARCHAR(255),
    RECHTSVORM VARCHAR(255),
    RSINNUMMER VARCHAR(255),
    STATUTAIRENAAM VARCHAR(255),
    STATUTAIREZETEL VARCHAR(255),
    WEBSITEURL VARCHAR(200)
);

CREATE TABLE INGESCHREVENPERSOON (
    INGESCHREVENPERSOON_ID INTEGER PRIMARY KEY,
    ADRESHERKOMST VARCHAR(255),
    ANUMMER VARCHAR(20),
    BESCHRIJVINGLOCATIE VARCHAR(200),
    BUITENLANDSREISDOCUMENT VARCHAR(80),
    BURGERLIJKESTAAT VARCHAR(255),
    DATUMBEGINGELDIGHEIDVERBLIJFPLAATS DATE,
    DATUMEINDEGELDIGHEIDVERBLIJFSPLAATS DATE,
    DATUMINSCHRIJVINGGEMEENTE DATE,
    DATUMOPSCHORTINGBIJHOUDING DATE,
    DATUMVERTREKUITNEDERLAND DATE,
    DATUMVESTIGINGNEDERLAND DATE,
    GEMEENTEVANINSCHRIJVING VARCHAR(80),
    GEZINSRELATIE VARCHAR(255),
    INDICATIEGEHEIM BOOLEAN,
    INGEZETENE BOOLEAN,
    LANDWAARNAARVERTROKKEN VARCHAR(255),
    LANDWAARVANDAANINGESCHREVEN VARCHAR(255),
    OUDER1 VARCHAR(255),
    OUDER2 VARCHAR(255),
    OUDER_1_INGESCHREVENPERSOON_ID INTEGER,
    OUDER_2_INGESCHREVENPERSOON_ID INTEGER,
    PARTNERID VARCHAR(255),
    REDENEINDEBEWONING DATE,
    REDENOPSCHORTINGBIJHOUDING VARCHAR(200),
    SIGNALERINGREISDOCUMENT BOOLEAN,
    VERBLIJFSTITEL VARCHAR(255)
);

CREATE TABLE MEDEWERKER (
    MEDEWERKER_ID INTEGER PRIMARY KEY,
    ACHTERNAAM VARCHAR(200),
    DATUMINDIENST DATE,
    DATUMUITDIENST DATE,
    EMAILADRES VARCHAR(255),
    EXTERN BOOLEAN,
    FUNCTIE VARCHAR(50),
    GESLACHTSAANDUIDING VARCHAR(255),
    MEDEWERKERIDENTIFICATIE VARCHAR(255),
    MEDEWERKERTOELICHTING VARCHAR(255),
    ROEPNAAM VARCHAR(255),
    TELEFOONNUMMER VARCHAR(20),
    VOORLETTERS VARCHAR(20),
    VOORVOEGSELACHTERNAAM VARCHAR(255)
);

CREATE TABLE SCHOOL (
    NIETNATUURLIJKPERSOON_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(200)
);

CREATE TABLE LEERLING (
    INGESCHREVENPERSOON_ID INTEGER PRIMARY KEY,
    KWETSBAREJONGERE BOOLEAN
);

CREATE TABLE OUDER_OF_VERZORGER (
    INGESCHREVENPERSOON_ID INTEGER PRIMARY KEY
);

CREATE TABLE LEERPLICHTAMBTENAAR (
    MEDEWERKER_ID INTEGER PRIMARY KEY
);

CREATE TABLE KP_SCHL_NTNTRLJKPRSN (
    KP_SCHL_NTNTRLJKPRSN_ID INTEGER PRIMARY KEY,
    SCHOOL_ID INTEGER,
    NIETNATUURLIJKPERSOON_ID INTEGER
);

CREATE TABLE KP_LRLNG_INGSCHRVNPRSN (
    KP_LRLNG_INGSCHRVNPRSN_ID INTEGER PRIMARY KEY,
    LEERLING_ID INTEGER,
    INGESCHREVENPERSOON_ID INTEGER
);

CREATE TABLE KP_ODR_OF_VRZRGR_INGSCHRVNPRSN (
    KP_ODR_OF_VRZRGR_INGSCHRVNPRSN_ID INTEGER PRIMARY KEY,
    OUDER_OF_VERZORGER_ID INTEGER,
    INGESCHREVENPERSOON_ID INTEGER
);

CREATE TABLE KP_LRPLCHTMBTNR_MDWRKR (
    KP_LRPLCHTMBTNR_MDWRKR_ID INTEGER PRIMARY KEY,
    LEERPLICHTAMBTENAAR_ID INTEGER,
    MEDEWERKER_ID INTEGER
);

ALTER TABLE LEERPLICHTAMBTENAAR ADD CONSTRAINT FK_LEERPLICHTAMBTENAAR_GEN_MEDEWERKER FOREIGN KEY (MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- Generalization to MEDEWERKER

ALTER TABLE LEERLING ADD CONSTRAINT FK_LEERLING_GEN_INGESCHREVENPERSOON FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- Generalization to INGESCHREVENPERSOON

ALTER TABLE OUDER_OF_VERZORGER ADD CONSTRAINT FK_OUDER_OF_VERZORGER_GEN_INGESCHREVENPERSOON FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- Generalization to INGESCHREVENPERSOON

ALTER TABLE SCHOOL ADD CONSTRAINT FK_SCHOOL_GEN_NIETNATUURLIJKPERSOON FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- Generalization to NIETNATUURLIJKPERSOON

ALTER TABLE KP_SCHL_NTNTRLJKPRSN ADD CONSTRAINT FK_KP_SCHL_NTNTRLJKPRSN_1 FOREIGN KEY (SCHOOL_ID) REFERENCES SCHOOL (NIETNATUURLIJKPERSOON_ID);
-- SCHOOL (many-to-many junction, Connector_ID: 1207)

ALTER TABLE KP_SCHL_NTNTRLJKPRSN ADD CONSTRAINT FK_KP_SCHL_NTNTRLJKPRSN_2 FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- NIETNATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1207)

ALTER TABLE KP_ODR_OF_VRZRGR_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_ODR_OF_VRZRGR_INGSCHRVNPRSN_1 FOREIGN KEY (OUDER_OF_VERZORGER_ID) REFERENCES OUDER_OF_VERZORGER (INGESCHREVENPERSOON_ID);
-- OUDER_OF_VERZORGER (many-to-many junction, Connector_ID: 1209)

ALTER TABLE KP_ODR_OF_VRZRGR_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_ODR_OF_VRZRGR_INGSCHRVNPRSN_2 FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- INGESCHREVENPERSOON (many-to-many junction, Connector_ID: 1209)

ALTER TABLE KP_LRLNG_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_LRLNG_INGSCHRVNPRSN_1 FOREIGN KEY (LEERLING_ID) REFERENCES LEERLING (INGESCHREVENPERSOON_ID);
-- LEERLING (many-to-many junction, Connector_ID: 1218)

ALTER TABLE KP_LRLNG_INGSCHRVNPRSN ADD CONSTRAINT FK_KP_LRLNG_INGSCHRVNPRSN_2 FOREIGN KEY (INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- INGESCHREVENPERSOON (many-to-many junction, Connector_ID: 1218)

ALTER TABLE KP_LRPLCHTMBTNR_MDWRKR ADD CONSTRAINT FK_KP_LRPLCHTMBTNR_MDWRKR_1 FOREIGN KEY (LEERPLICHTAMBTENAAR_ID) REFERENCES LEERPLICHTAMBTENAAR (MEDEWERKER_ID);
-- LEERPLICHTAMBTENAAR (many-to-many junction, Connector_ID: 1234)

ALTER TABLE KP_LRPLCHTMBTNR_MDWRKR ADD CONSTRAINT FK_KP_LRPLCHTMBTNR_MDWRKR_2 FOREIGN KEY (MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- MEDEWERKER (many-to-many junction, Connector_ID: 1234)

ALTER TABLE INGESCHREVENPERSOON ADD CONSTRAINT FK_INGESCHREVENPERSOON_OUDER_1 FOREIGN KEY (OUDER_1_INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- OUDER_1 (1 to 1, Connector_ID: 1871)

ALTER TABLE INGESCHREVENPERSOON ADD CONSTRAINT FK_INGESCHREVENPERSOON_OUDER_2 FOREIGN KEY (OUDER_2_INGESCHREVENPERSOON_ID) REFERENCES INGESCHREVENPERSOON (INGESCHREVENPERSOON_ID);
-- OUDER_2 (1 to 1, Connector_ID: 1873)

