CREATE TABLE KP_LNKBR_CMDB_ITM_CMDB_ITM_ (
    KP_LNKBR_CMDB_ITM_CMDB_ITM__ID NUMBER PRIMARY KEY,
    LINKBAAR_CMDB_ITEM_ID NUMBER,
    CMDB_ITEM__ID NUMBER
);

CREATE TABLE LEVERANCIER (
    LEVERANCIER_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(200),
    NUMMER VARCHAR2(255)
);

CREATE TABLE GEBRUIKERROL_835 (
    GEBRUIKERROL_835_ID NUMBER PRIMARY KEY,
    ROL_ENUM_ID NUMBER
);

CREATE TABLE APPLICATIECATEGORIE_ENUM (
    APPLICATIECATEGORIE_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO APPLICATIECATEGORIE_ENUM (APPLICATIECATEGORIE_ENUM_ID, VALUE) VALUES (1, 'BBA');
INSERT INTO APPLICATIECATEGORIE_ENUM (APPLICATIECATEGORIE_ENUM_ID, VALUE) VALUES (2, 'BEHEER_EN_SYSTEEM');
INSERT INTO APPLICATIECATEGORIE_ENUM (APPLICATIECATEGORIE_ENUM_ID, VALUE) VALUES (3, 'KA_BASIS');
INSERT INTO APPLICATIECATEGORIE_ENUM (APPLICATIECATEGORIE_ENUM_ID, VALUE) VALUES (4, 'KA_EXTRA');
INSERT INTO APPLICATIECATEGORIE_ENUM (APPLICATIECATEGORIE_ENUM_ID, VALUE) VALUES (5, 'KERNAPPLICATIE');
INSERT INTO APPLICATIECATEGORIE_ENUM (APPLICATIECATEGORIE_ENUM_ID, VALUE) VALUES (6, 'NIET_INGEDEELD');

CREATE TABLE NOTITIE (
    NOTITIE_ID NUMBER PRIMARY KEY,
    AUTEUR_MEDEWERKER_ID NUMBER,
    DATUM DATE,
    HEEFT_NOTITIES_CMDB_ITEM__ID NUMBER,
    INHOUD CLOB
);

CREATE TABLE SERVER (
    CMDB_ITEM__ID NUMBER PRIMARY KEY,
    ACTIEF NUMBER(1),
    HEEFT_LEVERANCIER_LEVERANCIER_ID NUMBER,
    IPADRES VARCHAR2(255),
    LOCATIE VARCHAR2(255),
    ORGANISATIE VARCHAR2(80),
    SERIENUMMER VARCHAR2(255),
    SERVERTYPE_ENUM_ID NUMBER,
    VLAN VARCHAR2(255)
);

CREATE TABLE KOPPELING (
    KOPPELING_ID NUMBER PRIMARY KEY,
    BESCHRIJVING VARCHAR2(200),
    DIRECT NUMBER(1),
    LINK_NAAR_CMDB_ITEM__ID NUMBER,
    LINK_VAN_CMDB_ITEM__ID NUMBER,
    TOELICHTING CLOB
);

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

CREATE TABLE KP_APPLCT_LNKBR_CMDB_ITM (
    KP_APPLCT_LNKBR_CMDB_ITM_ID NUMBER PRIMARY KEY,
    APPLICATIE_ID NUMBER,
    LINKBAAR_CMDB_ITEM_ID NUMBER
);

CREATE TABLE KP_APPLCT_DCMNT (
    KP_APPLCT_DCMNT_ID NUMBER PRIMARY KEY,
    APPLICATIE_ID NUMBER,
    DOCUMENT_ID NUMBER
);

CREATE TABLE SERVERTYPES_ENUM (
    SERVERTYPES_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO SERVERTYPES_ENUM (SERVERTYPES_ENUM_ID, VALUE) VALUES (1, 'NIET_VIRTUEEL');
INSERT INTO SERVERTYPES_ENUM (SERVERTYPES_ENUM_ID, VALUE) VALUES (2, 'VIRTUEEL');

CREATE TABLE APPLICATIE (
    CMDB_ITEM__ID NUMBER PRIMARY KEY,
    APPLICATIEURL VARCHAR2(255),
    BEHEERSTATUS NUMBER,
    BELEIDSDOMEIN VARCHAR2(255),
    CATEGORIE_ENUM_ID NUMBER,
    GUID VARCHAR2(255),
    HEEFT_LEVERANCIER_LEVERANCIER_ID NUMBER,
    NAAM VARCHAR2(255),
    OMSCHRIJVING CLOB,
    PACKAGINGSTATUS NUMBER
);

CREATE TABLE PACKAGINGSTATUS_ENUM (
    PACKAGINGSTATUS_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO PACKAGINGSTATUS_ENUM (PACKAGINGSTATUS_ENUM_ID, VALUE) VALUES (1, 'ALLEEN_AANBIEDEN');
INSERT INTO PACKAGINGSTATUS_ENUM (PACKAGINGSTATUS_ENUM_ID, VALUE) VALUES (2, 'API_MOGELIJK_');
INSERT INTO PACKAGINGSTATUS_ENUM (PACKAGINGSTATUS_ENUM_ID, VALUE) VALUES (3, 'HANDMATIG_INSTALLEREN');
INSERT INTO PACKAGINGSTATUS_ENUM (PACKAGINGSTATUS_ENUM_ID, VALUE) VALUES (4, 'NIET_AANBIEDEN');
INSERT INTO PACKAGINGSTATUS_ENUM (PACKAGINGSTATUS_ENUM_ID, VALUE) VALUES (5, 'NIET_INGEDEELD');
INSERT INTO PACKAGINGSTATUS_ENUM (PACKAGINGSTATUS_ENUM_ID, VALUE) VALUES (6, 'PACKAGEN_EN_DISTRIBUEREN');

CREATE TABLE CMDB_ITEM_ (
    CMDB_ITEM__ID NUMBER PRIMARY KEY,
    BESCHRIJVING CLOB,
    NAAM VARCHAR2(255)
);

CREATE TABLE LINKBAAR_CMDB_ITEM (
    CMDB_ITEM__ID NUMBER PRIMARY KEY
);

CREATE TABLE VERSIE (
    VERSIE_ID NUMBER PRIMARY KEY,
    AANTAL NUMBER,
    DATUMEINDESUPPORT DATE,
    HEEFT_VERSIES_CMDB_ITEM__ID NUMBER,
    KOSTEN NUMBER(10,2),
    LICENTIE VARCHAR2(255),
    STATUS VARCHAR2(255),
    VERSIENUMMER VARCHAR2(255)
);

CREATE TABLE BEHEERSTATUS_ENUM (
    BEHEERSTATUS_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO BEHEERSTATUS_ENUM (BEHEERSTATUS_ENUM_ID, VALUE) VALUES (1, 'BESCHIKBAAR_STELLEN');
INSERT INTO BEHEERSTATUS_ENUM (BEHEERSTATUS_ENUM_ID, VALUE) VALUES (2, 'FUNCTIONEEL_ONDERSTEUNEN');
INSERT INTO BEHEERSTATUS_ENUM (BEHEERSTATUS_ENUM_ID, VALUE) VALUES (3, 'INTERN_ONTWIKKELD');
INSERT INTO BEHEERSTATUS_ENUM (BEHEERSTATUS_ENUM_ID, VALUE) VALUES (4, 'NIET_INGEDEELD');
INSERT INTO BEHEERSTATUS_ENUM (BEHEERSTATUS_ENUM_ID, VALUE) VALUES (5, 'TECHNISCH_ONDERSTEUNEN');
INSERT INTO BEHEERSTATUS_ENUM (BEHEERSTATUS_ENUM_ID, VALUE) VALUES (6, 'VOLLEDIG_BEHEER');

CREATE TABLE KP_DTBS_LNKBR_CMDB_ITM (
    KP_DTBS_LNKBR_CMDB_ITM_ID NUMBER PRIMARY KEY,
    DATABASE_ID NUMBER,
    LINKBAAR_CMDB_ITEM_ID NUMBER
);

CREATE TABLE GEBRUIKERROL_863_ENUM (
    GEBRUIKERROL_863_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO GEBRUIKERROL_863_ENUM (GEBRUIKERROL_863_ENUM_ID, VALUE) VALUES (1, 'EIGENAAR');
INSERT INTO GEBRUIKERROL_863_ENUM (GEBRUIKERROL_863_ENUM_ID, VALUE) VALUES (2, 'FUNCTIONEEL_BEHEERDER');
INSERT INTO GEBRUIKERROL_863_ENUM (GEBRUIKERROL_863_ENUM_ID, VALUE) VALUES (3, 'GEBRUIKER');
INSERT INTO GEBRUIKERROL_863_ENUM (GEBRUIKERROL_863_ENUM_ID, VALUE) VALUES (4, 'GEGEVENSBEHEERDER');
INSERT INTO GEBRUIKERROL_863_ENUM (GEBRUIKERROL_863_ENUM_ID, VALUE) VALUES (5, 'SUPERUSER');

CREATE TABLE PACKAGE (
    PACKAGE_ID NUMBER PRIMARY KEY,
    HEEFT_PACKAGES_CMDB_ITEM__ID NUMBER,
    NAAM VARCHAR2(80),
    PROCES VARCHAR2(255),
    PROJECT VARCHAR2(255),
    STATUS VARCHAR2(255),
    TOELICHTING CLOB
);

CREATE TABLE KP_SRVR_LNKBR_CMDB_ITM (
    KP_SRVR_LNKBR_CMDB_ITM_ID NUMBER PRIMARY KEY,
    SERVER_ID NUMBER,
    LINKBAAR_CMDB_ITEM_ID NUMBER
);

CREATE TABLE KP_APPLCT_MDWRKR (
    KP_APPLCT_MDWRKR_ID NUMBER PRIMARY KEY,
    APPLICATIE_ID NUMBER,
    MEDEWERKER_ID NUMBER
);

CREATE TABLE DATABASE (
    CMDB_ITEM__ID NUMBER PRIMARY KEY,
    ARCHITECTUUR VARCHAR2(255),
    DATABASEINSTANTIE VARCHAR2(255),
    DATABASEVERSIE VARCHAR2(255),
    DBMS VARCHAR2(255),
    OMSCHRIJVING VARCHAR2(80),
    OTAP NUMBER(1),
    SERVER_VAN_DATABASE_CMDB_ITEM__ID NUMBER,
    VLAN VARCHAR2(255)
);

CREATE TABLE DOCUMENT (
    DOCUMENT_ID NUMBER PRIMARY KEY,
    COCUMENTBESCHRIJVING VARCHAR2(255),
    DATUMCREATIEDOCUMENT DATE,
    DATUMONTVANGSTDOCUMENT DATE,
    DATUMVERZENDINGDOCUMENT DATE,
    DOCUMENTAUTEUR VARCHAR2(200),
    DOCUMENTIDENTIFICATIE VARCHAR2(255),
    DOCUMENTTITEL VARCHAR2(200),
    VERTROUWELIJKAANDUIDING VARCHAR2(20)
);

CREATE TABLE LOG (
    LOG_ID NUMBER PRIMARY KEY,
    HEEFT_CHANGELOG_CMDB_ITEM__ID NUMBER,
    KORTEOMSCHRIJVING VARCHAR2(80),
    OMSCHRIJVING CLOB,
    TIJD TIMESTAMP
);

ALTER TABLE APPLICATIE ADD CONSTRAINT FK_APPLICATIE_GEN_LINKBAAR_CMDB_ITEM FOREIGN KEY (CMDB_ITEM__ID) REFERENCES LINKBAAR_CMDB_ITEM (CMDB_ITEM__ID);
-- Generalization to LINKBAAR_CMDB_ITEM

ALTER TABLE DATABASE ADD CONSTRAINT FK_DATABASE_GEN_LINKBAAR_CMDB_ITEM FOREIGN KEY (CMDB_ITEM__ID) REFERENCES LINKBAAR_CMDB_ITEM (CMDB_ITEM__ID);
-- Generalization to LINKBAAR_CMDB_ITEM

ALTER TABLE LINKBAAR_CMDB_ITEM ADD CONSTRAINT FK_LINKBAAR_CMDB_ITEM_GEN_CMDB_ITEM_ FOREIGN KEY (CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- Generalization to CMDB_ITEM_

ALTER TABLE SERVER ADD CONSTRAINT FK_SERVER_GEN_LINKBAAR_CMDB_ITEM FOREIGN KEY (CMDB_ITEM__ID) REFERENCES LINKBAAR_CMDB_ITEM (CMDB_ITEM__ID);
-- Generalization to LINKBAAR_CMDB_ITEM

ALTER TABLE KP_SRVR_LNKBR_CMDB_ITM ADD CONSTRAINT FK_KP_SRVR_LNKBR_CMDB_ITM_1 FOREIGN KEY (SERVER_ID) REFERENCES SERVER (CMDB_ITEM__ID);
-- SERVER (many-to-many junction, Connector_ID: 613)

ALTER TABLE KP_SRVR_LNKBR_CMDB_ITM ADD CONSTRAINT FK_KP_SRVR_LNKBR_CMDB_ITM_2 FOREIGN KEY (LINKBAAR_CMDB_ITEM_ID) REFERENCES LINKBAAR_CMDB_ITEM (CMDB_ITEM__ID);
-- LINKBAAR_CMDB_ITEM (many-to-many junction, Connector_ID: 613)

ALTER TABLE KP_LNKBR_CMDB_ITM_CMDB_ITM_ ADD CONSTRAINT FK_KP_LNKBR_CMDB_ITM_CMDB_ITM__1 FOREIGN KEY (LINKBAAR_CMDB_ITEM_ID) REFERENCES LINKBAAR_CMDB_ITEM (CMDB_ITEM__ID);
-- LINKBAAR_CMDB_ITEM (many-to-many junction, Connector_ID: 620)

ALTER TABLE KP_LNKBR_CMDB_ITM_CMDB_ITM_ ADD CONSTRAINT FK_KP_LNKBR_CMDB_ITM_CMDB_ITM__2 FOREIGN KEY (CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- CMDB_ITEM_ (many-to-many junction, Connector_ID: 620)

ALTER TABLE KP_APPLCT_MDWRKR ADD CONSTRAINT FK_KP_APPLCT_MDWRKR_1 FOREIGN KEY (APPLICATIE_ID) REFERENCES APPLICATIE (CMDB_ITEM__ID);
-- APPLICATIE (many-to-many junction, Connector_ID: 628)

ALTER TABLE KP_APPLCT_MDWRKR ADD CONSTRAINT FK_KP_APPLCT_MDWRKR_2 FOREIGN KEY (MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- MEDEWERKER (many-to-many junction, Connector_ID: 628)

ALTER TABLE KP_DTBS_LNKBR_CMDB_ITM ADD CONSTRAINT FK_KP_DTBS_LNKBR_CMDB_ITM_1 FOREIGN KEY (DATABASE_ID) REFERENCES DATABASE (CMDB_ITEM__ID);
-- DATABASE (many-to-many junction, Connector_ID: 637)

ALTER TABLE KP_DTBS_LNKBR_CMDB_ITM ADD CONSTRAINT FK_KP_DTBS_LNKBR_CMDB_ITM_2 FOREIGN KEY (LINKBAAR_CMDB_ITEM_ID) REFERENCES LINKBAAR_CMDB_ITEM (CMDB_ITEM__ID);
-- LINKBAAR_CMDB_ITEM (many-to-many junction, Connector_ID: 637)

ALTER TABLE KP_APPLCT_DCMNT ADD CONSTRAINT FK_KP_APPLCT_DCMNT_1 FOREIGN KEY (APPLICATIE_ID) REFERENCES APPLICATIE (CMDB_ITEM__ID);
-- APPLICATIE (many-to-many junction, Connector_ID: 646)

ALTER TABLE KP_APPLCT_DCMNT ADD CONSTRAINT FK_KP_APPLCT_DCMNT_2 FOREIGN KEY (DOCUMENT_ID) REFERENCES DOCUMENT (DOCUMENT_ID);
-- DOCUMENT (many-to-many junction, Connector_ID: 646)

ALTER TABLE KP_APPLCT_LNKBR_CMDB_ITM ADD CONSTRAINT FK_KP_APPLCT_LNKBR_CMDB_ITM_1 FOREIGN KEY (APPLICATIE_ID) REFERENCES APPLICATIE (CMDB_ITEM__ID);
-- APPLICATIE (many-to-many junction, Connector_ID: 649)

ALTER TABLE KP_APPLCT_LNKBR_CMDB_ITM ADD CONSTRAINT FK_KP_APPLCT_LNKBR_CMDB_ITM_2 FOREIGN KEY (LINKBAAR_CMDB_ITEM_ID) REFERENCES LINKBAAR_CMDB_ITEM (CMDB_ITEM__ID);
-- LINKBAAR_CMDB_ITEM (many-to-many junction, Connector_ID: 649)

ALTER TABLE SERVER ADD CONSTRAINT FK_SERVER_HEEFT_LEVERANCIER FOREIGN KEY (HEEFT_LEVERANCIER_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- HEEFT_LEVERANCIER (0..* to 0..1, Connector_ID: 612)

ALTER TABLE NOTITIE ADD CONSTRAINT FK_NOTITIE_AUTEUR FOREIGN KEY (AUTEUR_MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- AUTEUR (0..* to 1, Connector_ID: 618)

ALTER TABLE KOPPELING ADD CONSTRAINT FK_KOPPELING_LINK_VAN FOREIGN KEY (LINK_VAN_CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- LINK_VAN (1 to 0..*, Connector_ID: 622)

ALTER TABLE KOPPELING ADD CONSTRAINT FK_KOPPELING_LINK_NAAR FOREIGN KEY (LINK_NAAR_CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- LINK_NAAR (0..* to 1, Connector_ID: 623)

ALTER TABLE DATABASE ADD CONSTRAINT FK_DATABASE_SERVER_VAN_DATABASE FOREIGN KEY (SERVER_VAN_DATABASE_CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- SERVER_VAN_DATABASE (0..* to 1, Connector_ID: 636)

ALTER TABLE LOG ADD CONSTRAINT FK_LOG_HEEFT_CHANGELOG FOREIGN KEY (HEEFT_CHANGELOG_CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- HEEFT_CHANGELOG (1 to 0..*, Connector_ID: 638)

ALTER TABLE PACKAGE ADD CONSTRAINT FK_PACKAGE_HEEFT_PACKAGES FOREIGN KEY (HEEFT_PACKAGES_CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- HEEFT_PACKAGES (1 to 0..*, Connector_ID: 642)

ALTER TABLE NOTITIE ADD CONSTRAINT FK_NOTITIE_HEEFT_NOTITIES FOREIGN KEY (HEEFT_NOTITIES_CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- HEEFT_NOTITIES (1 to 0..*, Connector_ID: 643)

ALTER TABLE APPLICATIE ADD CONSTRAINT FK_APPLICATIE_HEEFT_LEVERANCIER FOREIGN KEY (HEEFT_LEVERANCIER_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- HEEFT_LEVERANCIER (0..* to 0..1, Connector_ID: 647)

ALTER TABLE VERSIE ADD CONSTRAINT FK_VERSIE_HEEFT_VERSIES FOREIGN KEY (HEEFT_VERSIES_CMDB_ITEM__ID) REFERENCES CMDB_ITEM_ (CMDB_ITEM__ID);
-- HEEFT_VERSIES (1 to 1..*, Connector_ID: 648)

ALTER TABLE MEDEWERKER ADD CONSTRAINT FK_MEDEWERKER_GELEVERD_VIA FOREIGN KEY (GELEVERD_VIA_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- GELEVERD_VIA (0..* to 0..1, Connector_ID: 2194)

ALTER TABLE APPLICATIE ADD CONSTRAINT FK_APPLICATIE_CATEGORIE_ENUM_ID FOREIGN KEY (CATEGORIE_ENUM_ID_APPLICATIECATEGORIE_ENUM_ID) REFERENCES APPLICATIECATEGORIE_ENUM (APPLICATIECATEGORIE_ENUM_ID);
-- CATEGORIE_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE GEBRUIKERROL_835 ADD CONSTRAINT FK_GEBRUIKERROL_835_ROL_ENUM_ID FOREIGN KEY (ROL_ENUM_ID_GEBRUIKERROL_863_ENUM_ID) REFERENCES GEBRUIKERROL_863_ENUM (GEBRUIKERROL_863_ENUM_ID);
-- ROL_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE SERVER ADD CONSTRAINT FK_SERVER_SERVERTYPE_ENUM_ID FOREIGN KEY (SERVERTYPE_ENUM_ID_SERVERTYPES_ENUM_ID) REFERENCES SERVERTYPES_ENUM (SERVERTYPES_ENUM_ID);
-- SERVERTYPE_ENUM_ID (1 to 1, Connector_ID: enum_ref)

