CREATE TABLE AFSPRAAKSTATUS (
    AFSPRAAKSTATUS_ID NUMBER PRIMARY KEY,
    STATUS VARCHAR2(255)
);

CREATE TABLE FORMULIERSOORT (
    FORMULIERSOORT_ID NUMBER PRIMARY KEY,
    INGEBRUIK NUMBER(1),
    NAAM VARCHAR2(80),
    ONDERWERP VARCHAR2(80)
);

CREATE TABLE TELEFOONSTATUS (
    TELEFOONSTATUS_ID NUMBER PRIMARY KEY,
    CONTACTCONNECTIONSTATE VARCHAR2(20),
    STATUS VARCHAR2(20)
);

CREATE TABLE TELEFOONONDERWERP (
    TELEFOONONDERWERP_ID NUMBER PRIMARY KEY,
    ONDERWERP VARCHAR2(255)
);

CREATE TABLE PRODUCTOFDIENST (
    PRODUCTOFDIENST_ID NUMBER PRIMARY KEY,
    AFHANDELTIJD TIMESTAMP,
    INGEBRUIK NUMBER(1),
    NAAM VARCHAR2(80)
);

CREATE TABLE ONDERWERP (
    ONDERWERP_ID NUMBER PRIMARY KEY,
    HOOFDONDERWERP_ONDERWERP_ID NUMBER,
    ISACTIEF NUMBER(1),
    NAAM VARCHAR2(80),
    TOELICHTING CLOB
);

CREATE TABLE FORMULIERSOORTVELD (
    FORMULIERSOORTVELD_ID NUMBER PRIMARY KEY,
    HEEFT_VELDEN_FORMULIERSOORT_ID NUMBER,
    HELPTEKST CLOB,
    ISVERPLICHT NUMBER(1),
    LABEL VARCHAR2(80),
    MAXLENGTE NUMBER,
    VELDNAAM VARCHAR2(255),
    VELDTYPE VARCHAR2(255)
);

CREATE TABLE TELEFOONTJE (
    TELEFOONTJE_ID NUMBER PRIMARY KEY,
    AFHANDELTIJDNAGESPREK TIMESTAMP,
    DELTAISDNCONNECTIE NUMBER,
    EINDTIJD TIMESTAMP,
    HEEFT_TELEFOONONDERWERP_ID NUMBER,
    HEEFT_TELEFOONSTATUS_ID NUMBER,
    STARTTIJD TIMESTAMP,
    TOTALEONHOLDTIJD TIMESTAMP,
    TOTALESPREEKTIJD TIMESTAMP,
    TOTALETIJDSDUUR TIMESTAMP,
    TOTALEWACHTTIJD TIMESTAMP,
    TRACKID VARCHAR2(20)
);

CREATE TABLE KLANTCONTACT (
    KLANTCONTACT_ID NUMBER PRIMARY KEY,
    EINDTIJD TIMESTAMP,
    HEEFT_TELEFOONONDERWERP_ID NUMBER,
    KANAAL VARCHAR2(20),
    MONDT_UIT_IN_TELEFOONTJE_ID NUMBER,
    NOTITIE CLOB,
    STARTTIJD TIMESTAMP,
    TIJDSDUUR TIMESTAMP,
    TOELICHTING CLOB,
    WACHTTIJDTOTAAL TIMESTAMP
);

CREATE TABLE KP_KLNTCNTCT_PRDCTFDNST (
    KP_KLNTCNTCT_PRDCTFDNST_ID NUMBER PRIMARY KEY,
    KLANTCONTACT_ID NUMBER,
    PRODUCTOFDIENST_ID NUMBER
);

CREATE TABLE BALIEAFSPRAAK (
    BALIEAFSPRAAK_ID NUMBER PRIMARY KEY,
    EINDTIJDGEPLAND TIMESTAMP,
    HEEFT_AFSPRAAKSTATUS_ID NUMBER,
    MONDT_UIT_IN_KLANTCONTACT_ID NUMBER,
    NOTITIE CLOB,
    STARTTIJDGEPLAND TIMESTAMP,
    TIJDAANGEMAAKT TIMESTAMP,
    TIJDSDUURGEPLAND TIMESTAMP,
    TOELICHTING CLOB,
    WACHTTIJDNASTARTAFSPRAAK TIMESTAMP,
    WACHTTIJDTOTAAL TIMESTAMP,
    WACHTTIJDVOORSTARTAFSPRAAK TIMESTAMP,
    WERKELIJKETIJDSDUUR TIMESTAMP
);

CREATE TABLE AANVRAAGOFMELDING (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY,
    AANVRAAG_MET__FORMULIERSOORT_ID NUMBER,
    AFGEHANDELD NUMBER(1),
    CATEGORIE VARCHAR2(200),
    CATEGORIECODE VARCHAR2(80),
    DATUMAANMAAK DATE,
    DATUMAFHANDELING DATE,
    DATUMBEGINSTATUS DATE,
    DATUMEINDESTATUS DATE,
    HOOFDCATEGORIE VARCHAR2(80),
    HOOFDCATEGORIECODE VARCHAR2(80),
    IDENTIFICATIE VARCHAR2(255),
    KANAAL VARCHAR2(80),
    KAN_LEIDEN_TOT_KLANTCONTACT_ID NUMBER,
    ONDERWERP VARCHAR2(200),
    ONDERWERPCODE VARCHAR2(80),
    SOORT VARCHAR2(80),
    STATUS VARCHAR2(80),
    STATUSCODE VARCHAR2(80),
    STATUSVOLGORDE VARCHAR2(80),
    SUBCATEGORIE VARCHAR2(200),
    SUBCATEGORIECODE VARCHAR2(80)
);

CREATE TABLE KP_BLFSPRK_PRDCTFDNST (
    KP_BLFSPRK_PRDCTFDNST_ID NUMBER PRIMARY KEY,
    BALIEAFSPRAAK_ID NUMBER,
    PRODUCTOFDIENST_ID NUMBER
);

CREATE TABLE KP_ANVRGFMLDNG_ONDRWRP (
    KP_ANVRGFMLDNG_ONDRWRP_ID NUMBER PRIMARY KEY,
    AANVRAAGOFMELDING_ID NUMBER,
    ONDERWERP_ID NUMBER
);

CREATE TABLE AANVRAAGDATA (
    AANVRAAGDATA_ID NUMBER PRIMARY KEY,
    DATA VARCHAR2(255),
    HEEFT_DATA_AANVRAAGOFMELDING_ID NUMBER,
    IS_CONFORM_FORMULIERSOORTVELD_ID NUMBER,
    VELD VARCHAR2(255)
);

ALTER TABLE KP_BLFSPRK_PRDCTFDNST ADD CONSTRAINT FK_KP_BLFSPRK_PRDCTFDNST_1 FOREIGN KEY (BALIEAFSPRAAK_ID) REFERENCES BALIEAFSPRAAK (BALIEAFSPRAAK_ID);
-- BALIEAFSPRAAK (many-to-many junction, Connector_ID: 371)

ALTER TABLE KP_BLFSPRK_PRDCTFDNST ADD CONSTRAINT FK_KP_BLFSPRK_PRDCTFDNST_2 FOREIGN KEY (PRODUCTOFDIENST_ID) REFERENCES PRODUCTOFDIENST (PRODUCTOFDIENST_ID);
-- PRODUCTOFDIENST (many-to-many junction, Connector_ID: 371)

ALTER TABLE KP_ANVRGFMLDNG_ONDRWRP ADD CONSTRAINT FK_KP_ANVRGFMLDNG_ONDRWRP_1 FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- AANVRAAGOFMELDING (many-to-many junction, Connector_ID: 381)

ALTER TABLE KP_ANVRGFMLDNG_ONDRWRP ADD CONSTRAINT FK_KP_ANVRGFMLDNG_ONDRWRP_2 FOREIGN KEY (ONDERWERP_ID) REFERENCES ONDERWERP (ONDERWERP_ID);
-- ONDERWERP (many-to-many junction, Connector_ID: 381)

ALTER TABLE KP_KLNTCNTCT_PRDCTFDNST ADD CONSTRAINT FK_KP_KLNTCNTCT_PRDCTFDNST_1 FOREIGN KEY (KLANTCONTACT_ID) REFERENCES KLANTCONTACT (KLANTCONTACT_ID);
-- KLANTCONTACT (many-to-many junction, Connector_ID: 2055)

ALTER TABLE KP_KLNTCNTCT_PRDCTFDNST ADD CONSTRAINT FK_KP_KLNTCNTCT_PRDCTFDNST_2 FOREIGN KEY (PRODUCTOFDIENST_ID) REFERENCES PRODUCTOFDIENST (PRODUCTOFDIENST_ID);
-- PRODUCTOFDIENST (many-to-many junction, Connector_ID: 2055)

ALTER TABLE KLANTCONTACT ADD CONSTRAINT FK_KLANTCONTACT_MONDT_UIT_IN FOREIGN KEY (MONDT_UIT_IN_TELEFOONTJE_ID) REFERENCES TELEFOONTJE (TELEFOONTJE_ID);
-- MONDT_UIT_IN (0..1 to 0..*, Connector_ID: 356)

ALTER TABLE TELEFOONTJE ADD CONSTRAINT FK_TELEFOONTJE_HEEFT FOREIGN KEY (HEEFT_TELEFOONSTATUS_ID) REFERENCES TELEFOONSTATUS (TELEFOONSTATUS_ID);
-- HEEFT (0..* to 1, Connector_ID: 357)

ALTER TABLE TELEFOONTJE ADD CONSTRAINT FK_TELEFOONTJE_HEEFT_2 FOREIGN KEY (HEEFT_TELEFOONONDERWERP_ID) REFERENCES TELEFOONONDERWERP (TELEFOONONDERWERP_ID);
-- HEEFT (0..1 to 0..*, Connector_ID: 358)

ALTER TABLE KLANTCONTACT ADD CONSTRAINT FK_KLANTCONTACT_HEEFT FOREIGN KEY (HEEFT_TELEFOONONDERWERP_ID) REFERENCES TELEFOONONDERWERP (TELEFOONONDERWERP_ID);
-- HEEFT (0..1 to 0..*, Connector_ID: 359)

ALTER TABLE ONDERWERP ADD CONSTRAINT FK_ONDERWERP_HOOFDONDERWERP FOREIGN KEY (HOOFDONDERWERP_ONDERWERP_ID) REFERENCES ONDERWERP (ONDERWERP_ID);
-- HOOFDONDERWERP (0..* to 1, Connector_ID: 361)

ALTER TABLE FORMULIERSOORTVELD ADD CONSTRAINT FK_FORMULIERSOORTVELD_HEEFT_VELDEN FOREIGN KEY (HEEFT_VELDEN_FORMULIERSOORT_ID) REFERENCES FORMULIERSOORT (FORMULIERSOORT_ID);
-- HEEFT_VELDEN (1 to 0..*, Connector_ID: 368)

ALTER TABLE BALIEAFSPRAAK ADD CONSTRAINT FK_BALIEAFSPRAAK_MONDT_UIT_IN FOREIGN KEY (MONDT_UIT_IN_KLANTCONTACT_ID) REFERENCES KLANTCONTACT (KLANTCONTACT_ID);
-- MONDT_UIT_IN (0..1 to 0..1, Connector_ID: 374)

ALTER TABLE BALIEAFSPRAAK ADD CONSTRAINT FK_BALIEAFSPRAAK_HEEFT FOREIGN KEY (HEEFT_AFSPRAAKSTATUS_ID) REFERENCES AFSPRAAKSTATUS (AFSPRAAKSTATUS_ID);
-- HEEFT (0..* to 1, Connector_ID: 375)

ALTER TABLE AANVRAAGOFMELDING ADD CONSTRAINT FK_AANVRAAGOFMELDING_AANVRAAG_MET_ FOREIGN KEY (AANVRAAG_MET__FORMULIERSOORT_ID) REFERENCES FORMULIERSOORT (FORMULIERSOORT_ID);
-- AANVRAAG_MET_ (0..* to 0..1, Connector_ID: 379)

ALTER TABLE AANVRAAGDATA ADD CONSTRAINT FK_AANVRAAGDATA_HEEFT_DATA FOREIGN KEY (HEEFT_DATA_AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- HEEFT_DATA (1 to 0..*, Connector_ID: 382)

ALTER TABLE AANVRAAGDATA ADD CONSTRAINT FK_AANVRAAGDATA_IS_CONFORM FOREIGN KEY (IS_CONFORM_FORMULIERSOORTVELD_ID) REFERENCES FORMULIERSOORTVELD (FORMULIERSOORTVELD_ID);
-- IS_CONFORM (0..* to 1, Connector_ID: 383)

ALTER TABLE AANVRAAGOFMELDING ADD CONSTRAINT FK_AANVRAAGOFMELDING_KAN_LEIDEN_TOT FOREIGN KEY (KAN_LEIDEN_TOT_KLANTCONTACT_ID) REFERENCES KLANTCONTACT (KLANTCONTACT_ID);
-- KAN_LEIDEN_TOT (0..1 to 0..*, Connector_ID: 2057)

