CREATE TABLE LOGBOEK (
    LOGBOEK_ID NUMBER PRIMARY KEY
);

CREATE TABLE NATUURLIJKPERSOON (
    NATUURLIJKPERSOON_ID NUMBER PRIMARY KEY,
    AANDUIDINGNAAMGEBRUIK VARCHAR2(50),
    AANHEFAANSCHRIJVING VARCHAR2(50),
    ACADEMISCHETITEL VARCHAR2(80),
    ACHTERNAAM VARCHAR2(100),
    ADELLIJKETITELOFPREDIKAAT VARCHAR2(255),
    ANUMMER VARCHAR2(20),
    BIJZONDERNEDERLANDERSCHAP VARCHAR2(50),
    BURGERSERVICENUMMER VARCHAR2(255),
    DATUMGEBOORTE DATE,
    DATUMOVERLIJDEN DATE,
    GEBOORTELAND VARCHAR2(255),
    GEBOORTEPLAATS VARCHAR2(200),
    GESLACHTSAANDUIDING VARCHAR2(255),
    GESLACHTSNAAM VARCHAR2(200),
    GESLACHTSNAAMAANSCHRIJVING VARCHAR2(200),
    HANDLICHTING VARCHAR2(50),
    INDICATIEAFSCHERMINGPERSOONSGEGEVENS NUMBER(1),
    INDICATIEOVERLEDEN NUMBER(1),
    LANDOVERLIJDEN VARCHAR2(255),
    NATIONALITEIT VARCHAR2(100),
    OVERLIJDENSPLAATS VARCHAR2(200),
    VOORLETTERSAANSCHRIJVING VARCHAR2(20),
    VOORNAMEN VARCHAR2(200),
    VOORNAMENAANSCHRIJVING VARCHAR2(200),
    VOORVOEGSELGESLACHTSNAAM VARCHAR2(80)
);

CREATE TABLE KWALITEITSCATALOGUS_OPENBARE_RUIMTE (
    KWALITEITSCATALOGUS_OPENBARE_RUIMTE_ID NUMBER PRIMARY KEY
);

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

CREATE TABLE CROW_KWALITEITSNIVEAUS_ENUM (
    CROW_KWALITEITSNIVEAUS_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO CROW_KWALITEITSNIVEAUS_ENUM (CROW_KWALITEITSNIVEAUS_ENUM_ID, VALUE) VALUES (1, 'NIVEAU_A');
INSERT INTO CROW_KWALITEITSNIVEAUS_ENUM (CROW_KWALITEITSNIVEAUS_ENUM_ID, VALUE) VALUES (2, 'NIVEAU_A_');
INSERT INTO CROW_KWALITEITSNIVEAUS_ENUM (CROW_KWALITEITSNIVEAUS_ENUM_ID, VALUE) VALUES (3, 'NIVEAU_B');
INSERT INTO CROW_KWALITEITSNIVEAUS_ENUM (CROW_KWALITEITSNIVEAUS_ENUM_ID, VALUE) VALUES (4, 'NIVEAU_C');
INSERT INTO CROW_KWALITEITSNIVEAUS_ENUM (CROW_KWALITEITSNIVEAUS_ENUM_ID, VALUE) VALUES (5, 'NIVEAU_D');

CREATE TABLE BEHEEROBJECT (
    BEHEEROBJECT_ID NUMBER PRIMARY KEY,
    AANGEMAAKTDOOR VARCHAR2(200),
    BEGINGARANTIEPERIODE VARCHAR2(255),
    BEHEERGEBIED VARCHAR2(255),
    BEHEEROBJECTBEHEERVAK VARCHAR2(255),
    BEHEEROBJECTGEBRUIKSFUNCTIE VARCHAR2(255),
    BEHEEROBJECTMEMO VARCHAR2(255),
    BESCHERMDEFLORAENFAUNA NUMBER(1),
    BUURT VARCHAR2(80),
    CONVERSIEID VARCHAR2(50),
    DATUMMUTATIE DATE,
    DATUMOPLEVERING DATE,
    DATUMPUBLICATIELV DATE,
    DATUMVERWIJDERING DATE,
    EINDEGARANTIEPERIODE DATE,
    GEBIEDSTYPE VARCHAR2(255),
    GEMEENTE VARCHAR2(80),
    GEOMETRIE SDO_GEOMETRY,
    GEWIJZIGDDOOR VARCHAR2(200),
    GRONDSOORT VARCHAR2(255),
    GRONDSOORTPLUS VARCHAR2(255),
    HEEFT_LOGBOEK_ID NUMBER,
    IDENTIFICATIEIMBOR VARCHAR2(255),
    IDENTIFICATIEIMGEO VARCHAR2(255),
    JAARVANAANLEG VARCHAR2(255),
    OBJECTBEGINTIJD TIMESTAMP,
    OBJECTEINDTIJD TIMESTAMP,
    ONDERHOUDSPLICHTIGE VARCHAR2(255),
    OPENBARERUIMTE VARCHAR2(80),
    POSTCODE VARCHAR2(255),
    RELATIEVEHOOGTELIGGING VARCHAR2(255),
    STADSDEEL VARCHAR2(80),
    STATUS VARCHAR2(255),
    THEORETISCHEINDEJAAR DATE,
    TIJDSTIPREGISTRATIE TIMESTAMP,
    TYPEBEHEERDER VARCHAR2(255),
    TYPEBEHEERDERPLUS VARCHAR2(255),
    TYPEEIGENAAR VARCHAR2(255),
    TYPEEIGENAARPLUS VARCHAR2(255),
    TYPELIGGING VARCHAR2(255),
    WATERSCHAP VARCHAR2(80),
    WIJK VARCHAR2(80),
    WOONPLAATS VARCHAR2(80),
    ZETTINGSGEVOELIGHEID VARCHAR2(255),
    ZETTINGSGEVOELIGHEIDPLUS VARCHAR2(255)
);

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 SCHOUWRONDE (
    SCHOUWRONDE_ID NUMBER PRIMARY KEY,
    VOERT_UIT_MEDEWERKER_ID NUMBER
);

CREATE TABLE MELDING (
    MELDING_ID NUMBER PRIMARY KEY,
    ADVIES CLOB,
    BEVAT_LOGBOEK_ID NUMBER,
    CATEGORIE VARCHAR2(80),
    CONSTATERING CLOB,
    DATUMADVIES DATE,
    DATUMMELDING DATE,
    DATUMUITVOERING DATE,
    FOTO VARCHAR2(255),
    HEEFT_SCHOUWRONDE_ID NUMBER,
    LOCATIE VARCHAR2(255),
    MELDER_MEDEWERKER_ID NUMBER,
    MELDER_NATUURLIJKPERSOON_ID NUMBER,
    OPMERKINGEN CLOB,
    STATUS VARCHAR2(255),
    UITGEVOERD NUMBER(1),
    UITVOERDER_LEVERANCIER_ID NUMBER,
    UITVOERDER_MEDEWERKER_ID NUMBER
);

CREATE TABLE INSPECTIE (
    MELDING_ID NUMBER PRIMARY KEY
);

CREATE TABLE CROW_MELDING (
    MELDING_ID NUMBER PRIMARY KEY,
    CONFORM_KWALITEITSCATALOGUS_OPENBARE_RUIMTE_ID NUMBER,
    KWALITEITSNIVEAU_ENUM_ID NUMBER
);

CREATE TABLE KP_MLDNG_BHRBJCT (
    KP_MLDNG_BHRBJCT_ID NUMBER PRIMARY KEY,
    MELDING_ID NUMBER,
    BEHEEROBJECT_ID NUMBER
);

CREATE TABLE MELDINGONGEVAL (
    MELDING_ID NUMBER PRIMARY KEY
);

CREATE TABLE ACTIE (
    MELDING_ID NUMBER PRIMARY KEY
);

CREATE TABLE STORING (
    MELDING_ID NUMBER PRIMARY KEY
);

CREATE TABLE KP_INSPCT_MLDNG (
    KP_INSPCT_MLDNG_ID NUMBER PRIMARY KEY,
    INSPECTIE_ID NUMBER,
    MELDING_ID NUMBER
);

CREATE TABLE KP_CRW_MLDNG_MLDNG (
    KP_CRW_MLDNG_MLDNG_ID NUMBER PRIMARY KEY,
    CROW_MELDING_ID NUMBER,
    MELDING_ID NUMBER
);

CREATE TABLE KP_MLDNGNGVL_MLDNG (
    KP_MLDNGNGVL_MLDNG_ID NUMBER PRIMARY KEY,
    MELDINGONGEVAL_ID NUMBER,
    MELDING_ID NUMBER
);

CREATE TABLE KP_ACT_MLDNG (
    KP_ACT_MLDNG_ID NUMBER PRIMARY KEY,
    ACTIE_ID NUMBER,
    MELDING_ID NUMBER
);

CREATE TABLE KP_STRNG_MLDNG (
    KP_STRNG_MLDNG_ID NUMBER PRIMARY KEY,
    STORING_ID NUMBER,
    MELDING_ID NUMBER
);

ALTER TABLE ACTIE ADD CONSTRAINT FK_ACTIE_GEN_MELDING FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- Generalization to MELDING

ALTER TABLE CROW_MELDING ADD CONSTRAINT FK_CROW_MELDING_GEN_MELDING FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- Generalization to MELDING

ALTER TABLE INSPECTIE ADD CONSTRAINT FK_INSPECTIE_GEN_MELDING FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- Generalization to MELDING

ALTER TABLE MELDINGONGEVAL ADD CONSTRAINT FK_MELDINGONGEVAL_GEN_MELDING FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- Generalization to MELDING

ALTER TABLE STORING ADD CONSTRAINT FK_STORING_GEN_MELDING FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- Generalization to MELDING

ALTER TABLE KP_STRNG_MLDNG ADD CONSTRAINT FK_KP_STRNG_MLDNG_1 FOREIGN KEY (STORING_ID) REFERENCES STORING (MELDING_ID);
-- STORING (many-to-many junction, Connector_ID: 722)

ALTER TABLE KP_STRNG_MLDNG ADD CONSTRAINT FK_KP_STRNG_MLDNG_2 FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- MELDING (many-to-many junction, Connector_ID: 722)

ALTER TABLE KP_MLDNGNGVL_MLDNG ADD CONSTRAINT FK_KP_MLDNGNGVL_MLDNG_1 FOREIGN KEY (MELDINGONGEVAL_ID) REFERENCES MELDINGONGEVAL (MELDING_ID);
-- MELDINGONGEVAL (many-to-many junction, Connector_ID: 732)

ALTER TABLE KP_MLDNGNGVL_MLDNG ADD CONSTRAINT FK_KP_MLDNGNGVL_MLDNG_2 FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- MELDING (many-to-many junction, Connector_ID: 732)

ALTER TABLE KP_INSPCT_MLDNG ADD CONSTRAINT FK_KP_INSPCT_MLDNG_1 FOREIGN KEY (INSPECTIE_ID) REFERENCES INSPECTIE (MELDING_ID);
-- INSPECTIE (many-to-many junction, Connector_ID: 742)

ALTER TABLE KP_INSPCT_MLDNG ADD CONSTRAINT FK_KP_INSPCT_MLDNG_2 FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- MELDING (many-to-many junction, Connector_ID: 742)

ALTER TABLE KP_CRW_MLDNG_MLDNG ADD CONSTRAINT FK_KP_CRW_MLDNG_MLDNG_1 FOREIGN KEY (CROW_MELDING_ID) REFERENCES CROW_MELDING (MELDING_ID);
-- CROW_MELDING (many-to-many junction, Connector_ID: 745)

ALTER TABLE KP_CRW_MLDNG_MLDNG ADD CONSTRAINT FK_KP_CRW_MLDNG_MLDNG_2 FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- MELDING (many-to-many junction, Connector_ID: 745)

ALTER TABLE KP_ACT_MLDNG ADD CONSTRAINT FK_KP_ACT_MLDNG_1 FOREIGN KEY (ACTIE_ID) REFERENCES ACTIE (MELDING_ID);
-- ACTIE (many-to-many junction, Connector_ID: 751)

ALTER TABLE KP_ACT_MLDNG ADD CONSTRAINT FK_KP_ACT_MLDNG_2 FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- MELDING (many-to-many junction, Connector_ID: 751)

ALTER TABLE KP_MLDNG_BHRBJCT ADD CONSTRAINT FK_KP_MLDNG_BHRBJCT_1 FOREIGN KEY (MELDING_ID) REFERENCES MELDING (MELDING_ID);
-- MELDING (many-to-many junction, Connector_ID: 806)

ALTER TABLE KP_MLDNG_BHRBJCT ADD CONSTRAINT FK_KP_MLDNG_BHRBJCT_2 FOREIGN KEY (BEHEEROBJECT_ID) REFERENCES BEHEEROBJECT (BEHEEROBJECT_ID);
-- BEHEEROBJECT (many-to-many junction, Connector_ID: 806)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_HEEFT FOREIGN KEY (HEEFT_SCHOUWRONDE_ID) REFERENCES SCHOUWRONDE (SCHOUWRONDE_ID);
-- HEEFT (0..1 to 0..*, Connector_ID: 733)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_UITVOERDER FOREIGN KEY (UITVOERDER_MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- UITVOERDER (0..* to 0..1, Connector_ID: 734)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_UITVOERDER_2 FOREIGN KEY (UITVOERDER_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- UITVOERDER (0..* to 0..1, Connector_ID: 735)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_MELDER FOREIGN KEY (MELDER_NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- MELDER (0..* to 0..1, Connector_ID: 736)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_MELDER_2 FOREIGN KEY (MELDER_MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- MELDER (0..* to 0..1, Connector_ID: 737)

ALTER TABLE MELDING ADD CONSTRAINT FK_MELDING_BEVAT FOREIGN KEY (BEVAT_LOGBOEK_ID) REFERENCES LOGBOEK (LOGBOEK_ID);
-- BEVAT (1 to 0..*, Connector_ID: 738)

ALTER TABLE CROW_MELDING ADD CONSTRAINT FK_CROW_MELDING_CONFORM FOREIGN KEY (CONFORM_KWALITEITSCATALOGUS_OPENBARE_RUIMTE_ID) REFERENCES KWALITEITSCATALOGUS_OPENBARE_RUIMTE (KWALITEITSCATALOGUS_OPENBARE_RUIMTE_ID);
-- CONFORM (0..* to 1, Connector_ID: 744)

ALTER TABLE BEHEEROBJECT ADD CONSTRAINT FK_BEHEEROBJECT_HEEFT FOREIGN KEY (HEEFT_LOGBOEK_ID) REFERENCES LOGBOEK (LOGBOEK_ID);
-- HEEFT (1 to 0..1, Connector_ID: 807)

ALTER TABLE SCHOUWRONDE ADD CONSTRAINT FK_SCHOUWRONDE_VOERT_UIT FOREIGN KEY (VOERT_UIT_MEDEWERKER_ID) REFERENCES MEDEWERKER (MEDEWERKER_ID);
-- VOERT_UIT (1 to 0..*, Connector_ID: 2193)

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 CROW_MELDING ADD CONSTRAINT FK_CROW_MELDING_KWALITEITSNIVEAU_ENUM_ID FOREIGN KEY (KWALITEITSNIVEAU_ENUM_ID_CROW_KWALITEITSNIVEAUS_ENUM_ID) REFERENCES CROW_KWALITEITSNIVEAUS_ENUM (CROW_KWALITEITSNIVEAUS_ENUM_ID);
-- KWALITEITSNIVEAU_ENUM_ID (1 to 1, Connector_ID: enum_ref)

