CREATE TABLE CATEGORIE (
    CATEGORIE_ID NUMBER PRIMARY KEY,
    CODE NUMBER,
    NAAM VARCHAR2(80),
    OMSCHRIJVING CLOB
);

CREATE TABLE LOCATIE (
    LOCATIE_ID NUMBER PRIMARY KEY,
    ADRESAANDUIDING VARCHAR2(255),
    LOCATIECODE VARCHAR2(255),
    LOCATIEPUNT VARCHAR2(255)
);

CREATE TABLE CONTAINERTYPE (
    CONTAINERTYPE_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(80),
    OMSCHRIJVING CLOB
);

CREATE TABLE FRACTIE (
    FRACTIE_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(80),
    OMSCHRIJVING CLOB
);

CREATE TABLE AANVRAAGOFMELDING (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY,
    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),
    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 MELDING (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY,
    24UURS NUMBER(1),
    BETREFT_CONTAINERTYPE_ID NUMBER,
    BETREFT_FRACTIE_ID NUMBER,
    BETREFT_LOCATIE_ID NUMBER,
    DATUMTIJD TIMESTAMP,
    HOOFDCATEGORIE_CATEGORIE_ID NUMBER,
    ILLEGAAL NUMBER(1),
    MELDINGNUMMER VARCHAR2(255),
    OMSCHRIJVING CLOB,
    SUBCATEGORIE_CATEGORIE_ID NUMBER
);

CREATE TABLE KP_MLDNG_ANVRGFMLDNG (
    KP_MLDNG_ANVRGFMLDNG_ID NUMBER PRIMARY KEY,
    MELDING_ID NUMBER,
    AANVRAAGOFMELDING_ID NUMBER
);

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_GEN_AANVRAAGOFMELDING FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- Generalization to AANVRAAGOFMELDING

ALTER TABLE KP_MLDNG_ANVRGFMLDNG ADD CONSTRAINT FK_KP_MLDNG_ANVRGFMLDNG_1 FOREIGN KEY (MELDING_ID) REFERENCES MELDING (AANVRAAGOFMELDING_ID);
-- MELDING (many-to-many junction, Connector_ID: 819)

ALTER TABLE KP_MLDNG_ANVRGFMLDNG ADD CONSTRAINT FK_KP_MLDNG_ANVRGFMLDNG_2 FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- AANVRAAGOFMELDING (many-to-many junction, Connector_ID: 819)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_BETREFT FOREIGN KEY (BETREFT_LOCATIE_ID) REFERENCES LOCATIE (LOCATIE_ID);
-- BETREFT (0..* to 1, Connector_ID: 821)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_BETREFT_2 FOREIGN KEY (BETREFT_FRACTIE_ID) REFERENCES FRACTIE (FRACTIE_ID);
-- BETREFT (0..* to 0..1, Connector_ID: 827)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_BETREFT_3 FOREIGN KEY (BETREFT_CONTAINERTYPE_ID) REFERENCES CONTAINERTYPE (CONTAINERTYPE_ID);
-- BETREFT (0..* to 0..1, Connector_ID: 828)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_SUBCATEGORIE FOREIGN KEY (SUBCATEGORIE_CATEGORIE_ID) REFERENCES CATEGORIE (CATEGORIE_ID);
-- SUBCATEGORIE (0..* to 1, Connector_ID: 835)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_HOOFDCATEGORIE FOREIGN KEY (HOOFDCATEGORIE_CATEGORIE_ID) REFERENCES CATEGORIE (CATEGORIE_ID);
-- HOOFDCATEGORIE (0..* to 1, Connector_ID: 836)

