CREATE TABLE `WERKNEMER` (
    `WERKNEMER_ID` INT PRIMARY KEY,
    `GEBOORTEDATUM` DATE,
    `NAAM` VARCHAR(80),
    `VOORNAAM` VARCHAR(255),
    `WOONPLAATS` VARCHAR(50)
) ENGINE=InnoDB;

CREATE TABLE `ORGANISATORISCHEEENHEID` (
    `ORGANISATORISCHEEENHEID_ID` INT PRIMARY KEY,
    `DATUMONTSTAAN` DATE,
    `DATUMOPHEFFING` DATE,
    `EMAILADRES` VARCHAR(255),
    `FAXNUMMER` VARCHAR(20),
    `FORMATIE` VARCHAR(255),
    `IS_DEEL_VAN_ORGANISATORISCHEEENHEID_ID` INT,
    `NAAM` VARCHAR(50),
    `NAAMVERKORT` VARCHAR(255),
    `OMSCHRIJVING` VARCHAR(80),
    `ORGANISATIEIDENTIFICATIE` VARCHAR(255),
    `TELEFOONNUMMER` VARCHAR(20),
    `TOELICHTING` VARCHAR(255)
) ENGINE=InnoDB;

CREATE TABLE `FUNCTIEHUIS` (
    `FUNCTIEHUIS_ID` INT PRIMARY KEY,
    `NAAM` VARCHAR(80),
    `OMSCHRIJVING` TEXT
) ENGINE=InnoDB;

CREATE TABLE `FORMATIEPLAATS` (
    `FORMATIEPLAATS_ID` INT PRIMARY KEY,
    `ONDERDEEL_VAN_ORGANISATORISCHEEENHEID_ID` INT,
    `UREN_PER_WEEK` VARCHAR(100)
) ENGINE=InnoDB;

CREATE TABLE `ORGANISATORISCHEEENHEIDHR` (
    `ORGANISATORISCHEEENHEID_ID` INT PRIMARY KEY,
    `NAAM` INT,
    `TYPE` INT
) ENGINE=InnoDB;

CREATE TABLE `ROL` (
    `ROL_ID` INT PRIMARY KEY,
    `DATUMBEGIN` DATE,
    `DATUMEINDE` DATE,
    `HOORT_BIJ_ORGANISATORISCHEEENHEID_ID` INT,
    `OMSCHRIJVING` VARCHAR(50)
) ENGINE=InnoDB;

CREATE TABLE `NORMPROFIEL` (
    `NORMPROFIEL_ID` INT PRIMARY KEY,
    `CODE` VARCHAR(255),
    `OMSCHRIJVING` VARCHAR(100),
    `ONDERDEEL_VAN_FUNCTIEHUIS_ID` INT,
    `SCHAAL` VARCHAR(255)
) ENGINE=InnoDB;

CREATE TABLE `KP_ORGNSTRSCHNHDHR_ORGNSTRSCHNHD` (
    `KP_ORGNSTRSCHNHDHR_ORGNSTRSCHNHD_ID` INT PRIMARY KEY,
    `ORGANISATORISCHEEENHEIDHR_ID` INT,
    `ORGANISATORISCHEEENHEID_ID` INT
) ENGINE=InnoDB;

CREATE TABLE `KP_WRKNMR_ROL` (
    `KP_WRKNMR_ROL_ID` INT PRIMARY KEY,
    `WERKNEMER_ID` INT,
    `ROL_ID` INT
) ENGINE=InnoDB;

CREATE TABLE `FUNCTIE` (
    `FUNCTIE_ID` INT PRIMARY KEY,
    `CODE` VARCHAR(50),
    `GEBASEERD_OP_NORMPROFIEL_ID` INT,
    `NAAM` VARCHAR(80),
    `OMSCHRIJVING` TEXT,
    `SCHAAL` VARCHAR(20),
    `TAKEN` TEXT
) ENGINE=InnoDB;

CREATE TABLE `INZET` (
    `INZET_ID` INT PRIMARY KEY,
    `DATUMBEGIN` DATE,
    `DATUMEINDE` DATE,
    `INZET_BIJ_ORGANISATORISCHEEENHEID_ID` INT,
    `INZET_VOOR_FUNCTIE_FUNCTIE_ID` INT,
    `PERCENTAGE` VARCHAR(20),
    `UREN` VARCHAR(20)
) ENGINE=InnoDB;

CREATE TABLE `KP_FRMTPLTS_FNCT` (
    `KP_FRMTPLTS_FNCT_ID` INT PRIMARY KEY,
    `FORMATIEPLAATS_ID` INT,
    `FUNCTIE_ID` INT
) ENGINE=InnoDB;

CREATE TABLE `DIENSTVERBAND` (
    `DIENSTVERBAND_ID` INT PRIMARY KEY,
    `AANTAL_VOLGENS_INZET_INZET_ID` INT,
    `DATUMEINDE` DATE,
    `DATUMSTART` DATE,
    `DIENSTVERBAND_CONFORM_FUNCTIE_FUNCTIE_ID` INT,
    `MEDEWERKER_HEEFT_DIENSTVERBAND_WERKNEMER_ID` INT,
    `PERIODIEK` INT,
    `SALARIS` VARCHAR(255),
    `SCHAAL` INT,
    `URENPERWEEK` INT
) ENGINE=InnoDB;

CREATE TABLE `KP_FRMTPLTS_DNSTVRBND` (
    `KP_FRMTPLTS_DNSTVRBND_ID` INT PRIMARY KEY,
    `FORMATIEPLAATS_ID` INT,
    `DIENSTVERBAND_ID` INT
) ENGINE=InnoDB;

CREATE TABLE `KP_DNSTVRBND_ORGNSTRSCHNHDHR` (
    `KP_DNSTVRBND_ORGNSTRSCHNHDHR_ID` INT PRIMARY KEY,
    `DIENSTVERBAND_ID` INT,
    `ORGANISATORISCHEEENHEIDHR_ID` INT
) ENGINE=InnoDB;

ALTER TABLE `ORGANISATORISCHEEENHEIDHR` ADD CONSTRAINT FK_ORGANISATORISCHEEENHEIDHR_GEN_ORGANISATORISCHEEENHEID FOREIGN KEY (`ORGANISATORISCHEEENHEID_ID`) REFERENCES `ORGANISATORISCHEEENHEID` (`ORGANISATORISCHEEENHEID_ID`);
-- Generalization to ORGANISATORISCHEEENHEID

ALTER TABLE `KP_WRKNMR_ROL` ADD CONSTRAINT FK_KP_WRKNMR_ROL_1 FOREIGN KEY (`WERKNEMER_ID`) REFERENCES `WERKNEMER` (`WERKNEMER_ID`);
-- WERKNEMER (many-to-many junction, Connector_ID: 443)

ALTER TABLE `KP_WRKNMR_ROL` ADD CONSTRAINT FK_KP_WRKNMR_ROL_2 FOREIGN KEY (`ROL_ID`) REFERENCES `ROL` (`ROL_ID`);
-- ROL (many-to-many junction, Connector_ID: 443)

ALTER TABLE `KP_ORGNSTRSCHNHDHR_ORGNSTRSCHNHD` ADD CONSTRAINT FK_KP_ORGNSTRSCHNHDHR_ORGNSTRSCHNHD_1 FOREIGN KEY (`ORGANISATORISCHEEENHEIDHR_ID`) REFERENCES `ORGANISATORISCHEEENHEIDHR` (`ORGANISATORISCHEEENHEID_ID`);
-- ORGANISATORISCHEEENHEIDHR (many-to-many junction, Connector_ID: 448)

ALTER TABLE `KP_ORGNSTRSCHNHDHR_ORGNSTRSCHNHD` ADD CONSTRAINT FK_KP_ORGNSTRSCHNHDHR_ORGNSTRSCHNHD_2 FOREIGN KEY (`ORGANISATORISCHEEENHEID_ID`) REFERENCES `ORGANISATORISCHEEENHEID` (`ORGANISATORISCHEEENHEID_ID`);
-- ORGANISATORISCHEEENHEID (many-to-many junction, Connector_ID: 448)

ALTER TABLE `KP_FRMTPLTS_FNCT` ADD CONSTRAINT FK_KP_FRMTPLTS_FNCT_1 FOREIGN KEY (`FORMATIEPLAATS_ID`) REFERENCES `FORMATIEPLAATS` (`FORMATIEPLAATS_ID`);
-- FORMATIEPLAATS (many-to-many junction, Connector_ID: 462)

ALTER TABLE `KP_FRMTPLTS_FNCT` ADD CONSTRAINT FK_KP_FRMTPLTS_FNCT_2 FOREIGN KEY (`FUNCTIE_ID`) REFERENCES `FUNCTIE` (`FUNCTIE_ID`);
-- FUNCTIE (many-to-many junction, Connector_ID: 462)

ALTER TABLE `KP_FRMTPLTS_DNSTVRBND` ADD CONSTRAINT FK_KP_FRMTPLTS_DNSTVRBND_1 FOREIGN KEY (`FORMATIEPLAATS_ID`) REFERENCES `FORMATIEPLAATS` (`FORMATIEPLAATS_ID`);
-- FORMATIEPLAATS (many-to-many junction, Connector_ID: 466)

ALTER TABLE `KP_FRMTPLTS_DNSTVRBND` ADD CONSTRAINT FK_KP_FRMTPLTS_DNSTVRBND_2 FOREIGN KEY (`DIENSTVERBAND_ID`) REFERENCES `DIENSTVERBAND` (`DIENSTVERBAND_ID`);
-- DIENSTVERBAND (many-to-many junction, Connector_ID: 466)

ALTER TABLE `KP_DNSTVRBND_ORGNSTRSCHNHDHR` ADD CONSTRAINT FK_KP_DNSTVRBND_ORGNSTRSCHNHDHR_1 FOREIGN KEY (`DIENSTVERBAND_ID`) REFERENCES `DIENSTVERBAND` (`DIENSTVERBAND_ID`);
-- DIENSTVERBAND (many-to-many junction, Connector_ID: 472)

ALTER TABLE `KP_DNSTVRBND_ORGNSTRSCHNHDHR` ADD CONSTRAINT FK_KP_DNSTVRBND_ORGNSTRSCHNHDHR_2 FOREIGN KEY (`ORGANISATORISCHEEENHEIDHR_ID`) REFERENCES `ORGANISATORISCHEEENHEIDHR` (`ORGANISATORISCHEEENHEID_ID`);
-- ORGANISATORISCHEEENHEIDHR (many-to-many junction, Connector_ID: 472)

ALTER TABLE `ROL` ADD CONSTRAINT FK_ROL_HOORT_BIJ FOREIGN KEY (`HOORT_BIJ_ORGANISATORISCHEEENHEID_ID`) REFERENCES `ORGANISATORISCHEEENHEID` (`ORGANISATORISCHEEENHEID_ID`);
-- HOORT_BIJ (0..* to 0..1, Connector_ID: 447)

ALTER TABLE `INZET` ADD CONSTRAINT FK_INZET_INZET_BIJ FOREIGN KEY (`INZET_BIJ_ORGANISATORISCHEEENHEID_ID`) REFERENCES `ORGANISATORISCHEEENHEID` (`ORGANISATORISCHEEENHEID_ID`);
-- INZET_BIJ (0..* to 1, Connector_ID: 452)

ALTER TABLE `NORMPROFIEL` ADD CONSTRAINT FK_NORMPROFIEL_ONDERDEEL_VAN FOREIGN KEY (`ONDERDEEL_VAN_FUNCTIEHUIS_ID`) REFERENCES `FUNCTIEHUIS` (`FUNCTIEHUIS_ID`);
-- ONDERDEEL_VAN (1..* to 1, Connector_ID: 458)

ALTER TABLE `INZET` ADD CONSTRAINT FK_INZET_INZET_VOOR_FUNCTIE FOREIGN KEY (`INZET_VOOR_FUNCTIE_FUNCTIE_ID`) REFERENCES `FUNCTIE` (`FUNCTIE_ID`);
-- INZET_VOOR_FUNCTIE (1 to 1, Connector_ID: 459)

ALTER TABLE `FUNCTIE` ADD CONSTRAINT FK_FUNCTIE_GEBASEERD_OP FOREIGN KEY (`GEBASEERD_OP_NORMPROFIEL_ID`) REFERENCES `NORMPROFIEL` (`NORMPROFIEL_ID`);
-- GEBASEERD_OP (1 to 1, Connector_ID: 461)

ALTER TABLE `FORMATIEPLAATS` ADD CONSTRAINT FK_FORMATIEPLAATS_ONDERDEEL_VAN FOREIGN KEY (`ONDERDEEL_VAN_ORGANISATORISCHEEENHEID_ID`) REFERENCES `ORGANISATORISCHEEENHEID` (`ORGANISATORISCHEEENHEID_ID`);
-- ONDERDEEL_VAN (1 to 0..1, Connector_ID: 463)

ALTER TABLE `DIENSTVERBAND` ADD CONSTRAINT FK_DIENSTVERBAND_AANTAL_VOLGENS_INZET FOREIGN KEY (`AANTAL_VOLGENS_INZET_INZET_ID`) REFERENCES `INZET` (`INZET_ID`);
-- AANTAL_VOLGENS_INZET (1 to 0..*, Connector_ID: 467)

ALTER TABLE `DIENSTVERBAND` ADD CONSTRAINT FK_DIENSTVERBAND_MEDEWERKER_HEEFT_DIENSTVERBAND FOREIGN KEY (`MEDEWERKER_HEEFT_DIENSTVERBAND_WERKNEMER_ID`) REFERENCES `WERKNEMER` (`WERKNEMER_ID`);
-- MEDEWERKER_HEEFT_DIENSTVERBAND (1 to 1..*, Connector_ID: 468)

ALTER TABLE `DIENSTVERBAND` ADD CONSTRAINT FK_DIENSTVERBAND_DIENSTVERBAND_CONFORM_FUNCTIE FOREIGN KEY (`DIENSTVERBAND_CONFORM_FUNCTIE_FUNCTIE_ID`) REFERENCES `FUNCTIE` (`FUNCTIE_ID`);
-- DIENSTVERBAND_CONFORM_FUNCTIE (0..* to 1, Connector_ID: 471)

ALTER TABLE `ORGANISATORISCHEEENHEID` ADD CONSTRAINT FK_ORGANISATORISCHEEENHEID_IS_DEEL_VAN FOREIGN KEY (`IS_DEEL_VAN_ORGANISATORISCHEEENHEID_ID`) REFERENCES `ORGANISATORISCHEEENHEID` (`ORGANISATORISCHEEENHEID_ID`);
-- IS_DEEL_VAN (1 to 0..1, Connector_ID: 2059)

