CREATE TABLE BOA (
    BOA_ID NUMBER PRIMARY KEY
);

CREATE TABLE BEOORDELINGSOORT_ENUM (
    BEOORDELINGSOORT_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO BEOORDELINGSOORT_ENUM (BEOORDELINGSOORT_ENUM_ID, VALUE) VALUES (1, 'NIET_OKE');
INSERT INTO BEOORDELINGSOORT_ENUM (BEOORDELINGSOORT_ENUM_ID, VALUE) VALUES (2, 'NIET_RELEVANT');
INSERT INTO BEOORDELINGSOORT_ENUM (BEOORDELINGSOORT_ENUM_ID, VALUE) VALUES (3, 'OKE');

CREATE TABLE OBJECT (
    OBJECT_ID NUMBER PRIMARY KEY,
    ADRESBINNENLAND VARCHAR2(255),
    ADRESBUITENLAND VARCHAR2(200),
    DOMEIN VARCHAR2(200),
    GEOMETRIE SDO_GEOMETRY,
    IDENTIFICATIE VARCHAR2(50),
    INDICATIERISICO NUMBER(1),
    KADASTRALEAANDUIDING VARCHAR2(255),
    NAAM VARCHAR2(200),
    OBJECTTYPE VARCHAR2(255),
    TOELICHTING VARCHAR2(255)
);

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 FOTO (
    FOTO_ID NUMBER PRIMARY KEY,
    BESTANDSGROOTTE NUMBER,
    BESTANDSNAAM VARCHAR2(200),
    BESTANDSTYPE VARCHAR2(80),
    DATUMTIJD TIMESTAMP,
    HEEFT_AANVRAAGOFMELDING_ID NUMBER,
    LOCATIE VARCHAR2(255),
    PIXELSX NUMBER,
    PIXELSY NUMBER
);

CREATE TABLE FIETSREGISTRATIE (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY,
    GELABELD NUMBER(1),
    VERWIJDERD NUMBER(1)
);

CREATE TABLE COMBIBON (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY,
    SANCTIE VARCHAR2(255)
);

CREATE TABLE VTH_MELDING (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY,
    ACTIVITEIT VARCHAR2(80),
    BEOORDELING_ENUM_ID NUMBER,
    DATUMSEPONERING DATE,
    DATUMTIJDTOT TIMESTAMP,
    GESEPONEERD NUMBER(1),
    LOCATIE VARCHAR2(255),
    ORGANISATIEONDERDEEL VARCHAR2(80),
    OVERTREDINGSCODE VARCHAR2(20),
    OVERTREDINGSGROEP VARCHAR2(200),
    REFERENTIENUMMER VARCHAR2(80),
    RESULTAAT VARCHAR2(80),
    SOORTVTHMELDING VARCHAR2(80),
    STATUS VARCHAR2(255),
    STRAATNAAM VARCHAR2(255),
    TAAKTYPE VARCHAR2(80),
    VERBALISANT_BOA_ID NUMBER,
    ZAAKNUMMER VARCHAR2(20)
);

CREATE TABLE WAARNEMING (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY
);

CREATE TABLE KP_VTH_MLDNG_ANVRGFMLDNG (
    KP_VTH_MLDNG_ANVRGFMLDNG_ID NUMBER PRIMARY KEY,
    VTH_MELDING_ID NUMBER,
    AANVRAAGOFMELDING_ID NUMBER
);

CREATE TABLE KP_FTSRGSTRT_VTH_MLDNG (
    KP_FTSRGSTRT_VTH_MLDNG_ID NUMBER PRIMARY KEY,
    FIETSREGISTRATIE_ID NUMBER,
    VTH_MELDING_ID NUMBER
);

CREATE TABLE KP_VTH_MLDNG_OBJCT (
    KP_VTH_MLDNG_OBJCT_ID NUMBER PRIMARY KEY,
    VTH_MELDING_ID NUMBER,
    OBJECT_ID NUMBER
);

CREATE TABLE KP_CMBBN_VTH_MLDNG (
    KP_CMBBN_VTH_MLDNG_ID NUMBER PRIMARY KEY,
    COMBIBON_ID NUMBER,
    VTH_MELDING_ID NUMBER
);

CREATE TABLE KP_WRNMNG_VTH_MLDNG (
    KP_WRNMNG_VTH_MLDNG_ID NUMBER PRIMARY KEY,
    WAARNEMING_ID NUMBER,
    VTH_MELDING_ID NUMBER
);

ALTER TABLE COMBIBON ADD CONSTRAINT FK_COMBIBON_GEN_VTH_MELDING FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES VTH_MELDING (AANVRAAGOFMELDING_ID);
-- Generalization to VTH_MELDING

ALTER TABLE FIETSREGISTRATIE ADD CONSTRAINT FK_FIETSREGISTRATIE_GEN_VTH_MELDING FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES VTH_MELDING (AANVRAAGOFMELDING_ID);
-- Generalization to VTH_MELDING

ALTER TABLE VTH_MELDING ADD CONSTRAINT FK_VTH_MELDING_GEN_AANVRAAGOFMELDING FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- Generalization to AANVRAAGOFMELDING

ALTER TABLE WAARNEMING ADD CONSTRAINT FK_WAARNEMING_GEN_VTH_MELDING FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES VTH_MELDING (AANVRAAGOFMELDING_ID);
-- Generalization to VTH_MELDING

ALTER TABLE KP_WRNMNG_VTH_MLDNG ADD CONSTRAINT FK_KP_WRNMNG_VTH_MLDNG_1 FOREIGN KEY (WAARNEMING_ID) REFERENCES WAARNEMING (AANVRAAGOFMELDING_ID);
-- WAARNEMING (many-to-many junction, Connector_ID: 1295)

ALTER TABLE KP_WRNMNG_VTH_MLDNG ADD CONSTRAINT FK_KP_WRNMNG_VTH_MLDNG_2 FOREIGN KEY (VTH_MELDING_ID) REFERENCES VTH_MELDING (AANVRAAGOFMELDING_ID);
-- VTH_MELDING (many-to-many junction, Connector_ID: 1295)

ALTER TABLE KP_VTH_MLDNG_OBJCT ADD CONSTRAINT FK_KP_VTH_MLDNG_OBJCT_1 FOREIGN KEY (VTH_MELDING_ID) REFERENCES VTH_MELDING (AANVRAAGOFMELDING_ID);
-- VTH_MELDING (many-to-many junction, Connector_ID: 1297)

ALTER TABLE KP_VTH_MLDNG_OBJCT ADD CONSTRAINT FK_KP_VTH_MLDNG_OBJCT_2 FOREIGN KEY (OBJECT_ID) REFERENCES OBJECT (OBJECT_ID);
-- OBJECT (many-to-many junction, Connector_ID: 1297)

ALTER TABLE KP_VTH_MLDNG_ANVRGFMLDNG ADD CONSTRAINT FK_KP_VTH_MLDNG_ANVRGFMLDNG_1 FOREIGN KEY (VTH_MELDING_ID) REFERENCES VTH_MELDING (AANVRAAGOFMELDING_ID);
-- VTH_MELDING (many-to-many junction, Connector_ID: 1299)

ALTER TABLE KP_VTH_MLDNG_ANVRGFMLDNG ADD CONSTRAINT FK_KP_VTH_MLDNG_ANVRGFMLDNG_2 FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- AANVRAAGOFMELDING (many-to-many junction, Connector_ID: 1299)

ALTER TABLE KP_FTSRGSTRT_VTH_MLDNG ADD CONSTRAINT FK_KP_FTSRGSTRT_VTH_MLDNG_1 FOREIGN KEY (FIETSREGISTRATIE_ID) REFERENCES FIETSREGISTRATIE (AANVRAAGOFMELDING_ID);
-- FIETSREGISTRATIE (many-to-many junction, Connector_ID: 1324)

ALTER TABLE KP_FTSRGSTRT_VTH_MLDNG ADD CONSTRAINT FK_KP_FTSRGSTRT_VTH_MLDNG_2 FOREIGN KEY (VTH_MELDING_ID) REFERENCES VTH_MELDING (AANVRAAGOFMELDING_ID);
-- VTH_MELDING (many-to-many junction, Connector_ID: 1324)

ALTER TABLE KP_CMBBN_VTH_MLDNG ADD CONSTRAINT FK_KP_CMBBN_VTH_MLDNG_1 FOREIGN KEY (COMBIBON_ID) REFERENCES COMBIBON (AANVRAAGOFMELDING_ID);
-- COMBIBON (many-to-many junction, Connector_ID: 1325)

ALTER TABLE KP_CMBBN_VTH_MLDNG ADD CONSTRAINT FK_KP_CMBBN_VTH_MLDNG_2 FOREIGN KEY (VTH_MELDING_ID) REFERENCES VTH_MELDING (AANVRAAGOFMELDING_ID);
-- VTH_MELDING (many-to-many junction, Connector_ID: 1325)

ALTER TABLE FOTO ADD CONSTRAINT FK_FOTO_HEEFT FOREIGN KEY (HEEFT_AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- HEEFT (0..1 to 0..*, Connector_ID: 1298)

ALTER TABLE VTH_MELDING ADD CONSTRAINT FK_VTH_MELDING_VERBALISANT FOREIGN KEY (VERBALISANT_BOA_ID) REFERENCES BOA (BOA_ID);
-- VERBALISANT (1 to 0..*, Connector_ID: 1326)

ALTER TABLE VTH_MELDING ADD CONSTRAINT FK_VTH_MELDING_BEOORDELING_ENUM_ID FOREIGN KEY (BEOORDELING_ENUM_ID_BEOORDELINGSOORT_ENUM_ID) REFERENCES BEOORDELINGSOORT_ENUM (BEOORDELINGSOORT_ENUM_ID);
-- BEOORDELING_ENUM_ID (1 to 1, Connector_ID: enum_ref)

