CREATE TABLE NATUURLIJKPERSOON (
    NATUURLIJKPERSOON_ID NUMBER PRIMARY KEY,
    AANDUIDINGNAAMGEBRUIK VARCHAR2(50),
    AANHEFAANSCHRIJVING VARCHAR2(50),
    ACADEMISCHETITEL VARCHAR2(80),
    ACHTERNAAM VARCHAR2(100),
    ADELLIJKETITELOFPREDIKAAT VARCHAR2(255),
    ANUMMER VARCHAR2(20),
    BIJZONDERNEDERLANDERSCHAP VARCHAR2(50),
    BURGERSERVICENUMMER VARCHAR2(255),
    DATUMGEBOORTE DATE,
    DATUMOVERLIJDEN DATE,
    GEBOORTELAND VARCHAR2(255),
    GEBOORTEPLAATS VARCHAR2(200),
    GESLACHTSAANDUIDING VARCHAR2(255),
    GESLACHTSNAAM VARCHAR2(200),
    GESLACHTSNAAMAANSCHRIJVING VARCHAR2(200),
    HANDLICHTING VARCHAR2(50),
    INDICATIEAFSCHERMINGPERSOONSGEGEVENS NUMBER(1),
    INDICATIEOVERLEDEN NUMBER(1),
    LANDOVERLIJDEN VARCHAR2(255),
    NATIONALITEIT VARCHAR2(100),
    OVERLIJDENSPLAATS VARCHAR2(200),
    VOORLETTERSAANSCHRIJVING VARCHAR2(20),
    VOORNAMEN VARCHAR2(200),
    VOORNAMENAANSCHRIJVING VARCHAR2(200),
    VOORVOEGSELGESLACHTSNAAM VARCHAR2(80)
);

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

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

CREATE TABLE SOLLICITANT (
    NATUURLIJKPERSOON_ID NUMBER PRIMARY KEY
);

CREATE TABLE WERKNEMER (
    MEDEWERKER_ID NUMBER PRIMARY KEY,
    GEBOORTEDATUM DATE,
    IS_PARTNER_VAN_NATUURLIJKPERSOON_ID NUMBER,
    NAAM VARCHAR2(80),
    VOORNAAM VARCHAR2(255),
    WOONPLAATS VARCHAR2(50)
);

CREATE TABLE RELATIE (
    NATUURLIJKPERSOON_ID NUMBER PRIMARY KEY,
    IS_KIND_VAN_MEDEWERKER_ID NUMBER
);

CREATE TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN (
    KP_NTNTRLJKPRSN_NTRLJKPRSN_ID NUMBER PRIMARY KEY,
    NIETNATUURLIJKPERSOON_ID NUMBER,
    NATUURLIJKPERSOON_ID NUMBER
);

CREATE TABLE ONDERWIJSINSTITUUT (
    NIETNATUURLIJKPERSOON_ID NUMBER PRIMARY KEY
);

CREATE TABLE KP_SLLCTNT_NTRLJKPRSN (
    KP_SLLCTNT_NTRLJKPRSN_ID NUMBER PRIMARY KEY,
    SOLLICITANT_ID NUMBER,
    NATUURLIJKPERSOON_ID NUMBER
);

CREATE TABLE KP_WRKNMR_MDWRKR (
    KP_WRKNMR_MDWRKR_ID NUMBER PRIMARY KEY,
    WERKNEMER_ID NUMBER,
    MEDEWERKER_ID NUMBER
);

CREATE TABLE KP_RLT_NTRLJKPRSN (
    KP_RLT_NTRLJKPRSN_ID NUMBER PRIMARY KEY,
    RELATIE_ID NUMBER,
    NATUURLIJKPERSOON_ID NUMBER
);

CREATE TABLE KP_ONDRWJSNSTTT_NTNTRLJKPRSN (
    KP_ONDRWJSNSTTT_NTNTRLJKPRSN_ID NUMBER PRIMARY KEY,
    ONDERWIJSINSTITUUT_ID NUMBER,
    NIETNATUURLIJKPERSOON_ID NUMBER
);

ALTER TABLE ONDERWIJSINSTITUUT ADD CONSTRAINT FK_ONDERWIJSINSTITUUT_GEN_NIETNATUURLIJKPERSOON FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- Generalization to NIETNATUURLIJKPERSOON

ALTER TABLE RELATIE ADD CONSTRAINT FK_RELATIE_GEN_NATUURLIJKPERSOON FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- Generalization to NATUURLIJKPERSOON

ALTER TABLE SOLLICITANT ADD CONSTRAINT FK_SOLLICITANT_GEN_NATUURLIJKPERSOON FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- Generalization to NATUURLIJKPERSOON

ALTER TABLE WERKNEMER ADD CONSTRAINT FK_WERKNEMER_GEN_MEDEWERKER FOREIGN KEY (MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- Generalization to MEDEWERKER

ALTER TABLE KP_WRKNMR_MDWRKR ADD CONSTRAINT FK_KP_WRKNMR_MDWRKR_1 FOREIGN KEY (WERKNEMER_ID) REFERENCES WERKNEMER (MEDEWERKER_ID);
-- WERKNEMER (many-to-many junction, Connector_ID: 431)

ALTER TABLE KP_WRKNMR_MDWRKR ADD CONSTRAINT FK_KP_WRKNMR_MDWRKR_2 FOREIGN KEY (MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- MEDEWERKER (many-to-many junction, Connector_ID: 431)

ALTER TABLE KP_SLLCTNT_NTRLJKPRSN ADD CONSTRAINT FK_KP_SLLCTNT_NTRLJKPRSN_1 FOREIGN KEY (SOLLICITANT_ID) REFERENCES SOLLICITANT (NATUURLIJKPERSOON_ID);
-- SOLLICITANT (many-to-many junction, Connector_ID: 442)

ALTER TABLE KP_SLLCTNT_NTRLJKPRSN ADD CONSTRAINT FK_KP_SLLCTNT_NTRLJKPRSN_2 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 442)

ALTER TABLE KP_RLT_NTRLJKPRSN ADD CONSTRAINT FK_KP_RLT_NTRLJKPRSN_1 FOREIGN KEY (RELATIE_ID) REFERENCES RELATIE (NATUURLIJKPERSOON_ID);
-- RELATIE (many-to-many junction, Connector_ID: 446)

ALTER TABLE KP_RLT_NTRLJKPRSN ADD CONSTRAINT FK_KP_RLT_NTRLJKPRSN_2 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 446)

ALTER TABLE KP_ONDRWJSNSTTT_NTNTRLJKPRSN ADD CONSTRAINT FK_KP_ONDRWJSNSTTT_NTNTRLJKPRSN_1 FOREIGN KEY (ONDERWIJSINSTITUUT_ID) REFERENCES ONDERWIJSINSTITUUT (NIETNATUURLIJKPERSOON_ID);
-- ONDERWIJSINSTITUUT (many-to-many junction, Connector_ID: 450)

ALTER TABLE KP_ONDRWJSNSTTT_NTNTRLJKPRSN ADD CONSTRAINT FK_KP_ONDRWJSNSTTT_NTNTRLJKPRSN_2 FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- NIETNATUURLIJKPERSOON (many-to-many junction, Connector_ID: 450)

ALTER TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_NTRLJKPRSN_1 FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- NIETNATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1970)

ALTER TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_NTRLJKPRSN_2 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1970)

ALTER TABLE WERKNEMER ADD CONSTRAINT FK_WERKNEMER_IS_PARTNER_VAN FOREIGN KEY (IS_PARTNER_VAN_NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- IS_PARTNER_VAN (1 to 0..1, Connector_ID: 444)

ALTER TABLE RELATIE ADD CONSTRAINT FK_RELATIE_IS_KIND_VAN FOREIGN KEY (IS_KIND_VAN_MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- IS_KIND_VAN (0..* to 1, Connector_ID: 445)

