CREATE TABLE OPLOSSING (
    OPLOSSING_ID NUMBER PRIMARY KEY,
    EINDDATUM DATE,
    RESULTEERT_IN_NAZORG_ID NUMBER,
    SOORT_ENUM_ID NUMBER,
    STARTDATUM DATE,
    VTLB VARCHAR2(255)
);

CREATE TABLE INFORMATIEENADVIES (
    INFORMATIEENADVIES_ID NUMBER PRIMARY KEY,
    EINDDATUM DATE,
    STARTDATUM DATE
);

CREATE TABLE GEMEENTE (
    GEMEENTE_ID NUMBER PRIMARY KEY,
    BEGINGELDIGHEID DATE,
    DATUMEINDE DATE,
    DATUMINGANG DATE,
    EINDGELDIGHEID DATE,
    GECONSTATEERD NUMBER(1),
    GEMEENTECODE VARCHAR2(255),
    GEMEENTENAAM VARCHAR2(80),
    GEMEENTENAAM_NEN VARCHAR2(255),
    GEOMETRIE SDO_GEOMETRY,
    IDENTIFICATIE VARCHAR2(255),
    VERSIE NUMBER
);

CREATE TABLE CRISISINTERVENTIE (
    CRISISINTERVENTIE_ID NUMBER PRIMARY KEY,
    EINDDATUM DATE,
    KAN_HEBBEN_SCHULDHULPTRAJECT_ID NUMBER,
    STARTDATUM DATE
);

CREATE TABLE KP_SCHLDHLPRGNST_SCHLDHLPTRJCT (
    KP_SCHLDHLPRGNST_SCHLDHLPTRJCT_ID NUMBER PRIMARY KEY,
    SCHULDHULPORGANISATIE_ID NUMBER,
    SCHULDHULPTRAJECT_ID NUMBER
);

CREATE TABLE LEEFSITUATIE (
    LEEFSITUATIE_ID NUMBER PRIMARY KEY,
    DATUMGELDIGTOT DATE,
    DATUMGELDIGVANAF DATE,
    HEEFT_FINANCIELE_SITUATIE_CLIENT_ID NUMBER
);

CREATE TABLE CLIENT (
    CLIENT_ID NUMBER PRIMARY KEY,
    CODE VARCHAR2(80),
    GEZAGSDRAGERGEKEND NUMBER(1),
    JURIDISCHESTATUS VARCHAR2(80),
    WETTELIJKEVERTEGENWOORDIGING VARCHAR2(80)
);

CREATE TABLE SCHULDHULPTRAJECT (
    SCHULDHULPTRAJECT_ID NUMBER PRIMARY KEY,
    BEVAT_AANMELDING_ID NUMBER,
    BEVAT_INFORMATIEENADVIES_ID NUMBER,
    BEVAT_INTAKE_ID NUMBER,
    BEVAT_NAZORG_ID NUMBER,
    BEVAT_OPLOSSING_ID NUMBER,
    BEVAT_SCHULDREGELING_ID NUMBER,
    BEVAT_STABILISATIE_ID NUMBER,
    EINDDATUM DATE,
    HEEFT_PLANVANAANPAK_ID NUMBER,
    HEEFT_TRAJECT_CLIENT_ID NUMBER,
    OMSCHRIJVING CLOB,
    ONDER_VERANTWOORDELIJKHEID_VAN_GEMEENTE_ID NUMBER,
    STARTDATUM DATE,
    TOEKENNINGSDATUM DATE,
    TOTAALSCHULDBEDRAGBIJAANVANGSCHULD NUMBER(10,2),
    UITSTROOM_UITSTROOM_ID NUMBER
);

CREATE TABLE ENUMOPLOSSINGSSOORT_ENUM (
    ENUMOPLOSSINGSSOORT_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO ENUMOPLOSSINGSSOORT_ENUM (ENUMOPLOSSINGSSOORT_ENUM_ID, VALUE) VALUES (1, '0_AANBOD');
INSERT INTO ENUMOPLOSSINGSSOORT_ENUM (ENUMOPLOSSINGSSOORT_ENUM_ID, VALUE) VALUES (2, 'BETALINGSREGELING');
INSERT INTO ENUMOPLOSSINGSSOORT_ENUM (ENUMOPLOSSINGSSOORT_ENUM_ID, VALUE) VALUES (3, 'HERFINANCIERING');
INSERT INTO ENUMOPLOSSINGSSOORT_ENUM (ENUMOPLOSSINGSSOORT_ENUM_ID, VALUE) VALUES (4, 'SANERINGSKREDIET');
INSERT INTO ENUMOPLOSSINGSSOORT_ENUM (ENUMOPLOSSINGSSOORT_ENUM_ID, VALUE) VALUES (5, 'SCHULDBEMIDDELING');

CREATE TABLE SCHULDHULPORGANISATIE (
    SCHULDHULPORGANISATIE_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(200)
);

CREATE TABLE ENUMUITSTROOMREDEN_ENUM (
    ENUMUITSTROOMREDEN_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (1, 'AFGEROND');
INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (2, 'INGETROKKEN');
INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (3, 'NIETVERSCHENEN');
INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (4, 'NIET_PASSEND');
INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (5, 'OVERIG');
INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (6, 'OVERLEDEN');
INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (7, 'VERHUISD');
INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (8, 'VOLDOET_NIET');
INSERT INTO ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID, VALUE) VALUES (9, 'ZELF');

CREATE TABLE VOORLOPIGEVOORZIENING_ (
    VOORLOPIGEVOORZIENING__ID NUMBER PRIMARY KEY,
    EINDDATUM DATE,
    HEEFT_SCHULDHULPTRAJECT_ID NUMBER,
    STARTDATUM DATE
);

CREATE TABLE SCHULDREGELING (
    SCHULDREGELING_ID NUMBER PRIMARY KEY,
    AFGEWEZEN DATE,
    DATUM DATE,
    DATUMVERZOEKDWANGAKKOORD DATE,
    DWANGAKKOORD NUMBER(1),
    INGETROKKEN DATE,
    RESULTEERT_IN_OPLOSSING_ID NUMBER,
    TOEGEKEND DATE
);

CREATE TABLE UITSTROOM (
    UITSTROOM_ID NUMBER PRIMARY KEY,
    DATUM DATE,
    DATUMBEEINDIGINGSBESCHIKKING DATE,
    OMSCHRIJVING CLOB,
    REDEN_ENUM_ID NUMBER
);

CREATE TABLE KP_GMNT_IS_OVRGGN_IN (
    KP_GMNT_IS_OVRGGN_IN_ID NUMBER PRIMARY KEY,
    IS_OVERGEGAAN_IN_1_ID NUMBER,
    IS_OVERGEGAAN_IN_2_ID NUMBER
);

CREATE TABLE PLANVANAANPAK (
    PLANVANAANPAK_ID NUMBER PRIMARY KEY,
    DATUMAFRONDING DATE
);

CREATE TABLE NAZORG (
    NAZORG_ID NUMBER PRIMARY KEY,
    EINDDATUM DATE,
    STARTDATUM DATE
);

CREATE TABLE MORATORIUM (
    MORATORIUM_ID NUMBER PRIMARY KEY,
    DATUMAANVRAAG DATE,
    DATUMGOEDKEURING DATE,
    EINDDATUM DATE,
    KAN_HEBBEN_SCHULDHULPTRAJECT_ID NUMBER,
    STARTDATUM DATE
);

CREATE TABLE STABILISATIE (
    STABILISATIE_ID NUMBER PRIMARY KEY,
    EINDDATUM DATE,
    RESULTEERT_IN_SCHULDREGELING_ID NUMBER,
    STARTDATUM DATE
);

CREATE TABLE BEGELEIDING (
    BEGELEIDING_ID NUMBER PRIMARY KEY,
    BEVAT_SCHULDHULPTRAJECT_ID NUMBER,
    EINDDATUM DATE,
    RESULTEERT_IN_INTAKE_ID NUMBER,
    RESULTEERT_IN_NAZORG_ID NUMBER,
    RESULTEERT_IN_SCHULDREGELING_ID NUMBER,
    RESULTEERT_IN_STABILISATIE_ID NUMBER,
    SOORT_ENUM_ID NUMBER,
    STARTDATUM DATE
);

CREATE TABLE AANMELDING (
    AANMELDING_ID NUMBER PRIMARY KEY,
    CRISISINTERVENTIE NUMBER(1),
    EINDDATUM DATE,
    RESULTEERT_IN_INTAKE_ID NUMBER,
    STARTDATUM DATE
);

CREATE TABLE INTAKE (
    INTAKE_ID NUMBER PRIMARY KEY,
    BESCHIKKINGSDATUM DATE,
    BESCHIKKINGSSOORT VARCHAR2(255),
    EINDDATUM DATE,
    RESULTEERT_IN_INFORMATIEENADVIES_ID NUMBER,
    RESULTEERT_IN__STABILISATIE_ID NUMBER,
    STARTDATUM DATE
);

CREATE TABLE ENUMBEGELEIDINGSSOORT_ENUM (
    ENUMBEGELEIDINGSSOORT_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO ENUMBEGELEIDINGSSOORT_ENUM (ENUMBEGELEIDINGSSOORT_ENUM_ID, VALUE) VALUES (1, 'BESCHERMINGSBEWIND');
INSERT INTO ENUMBEGELEIDINGSSOORT_ENUM (ENUMBEGELEIDINGSSOORT_ENUM_ID, VALUE) VALUES (2, 'BUDGETBEGELEIDING');
INSERT INTO ENUMBEGELEIDINGSSOORT_ENUM (ENUMBEGELEIDINGSSOORT_ENUM_ID, VALUE) VALUES (3, 'BUDGETBEHEER');
INSERT INTO ENUMBEGELEIDINGSSOORT_ENUM (ENUMBEGELEIDINGSSOORT_ENUM_ID, VALUE) VALUES (4, 'BUDGETCOACHING');
INSERT INTO ENUMBEGELEIDINGSSOORT_ENUM (ENUMBEGELEIDINGSSOORT_ENUM_ID, VALUE) VALUES (5, 'LANGE_TERMIJN_BEGELEIDING_DFD_');

CREATE TABLE WSNP_TRAJECT (
    WSNP_TRAJECT_ID NUMBER PRIMARY KEY,
    DATUMGOEDKEURING DATE,
    DATUMVERZOEK DATE,
    EINDDATUM DATE,
    HEEFT_LEEFSITUATIE_ID NUMBER,
    STARTDATUM DATE
);

ALTER TABLE KP_SCHLDHLPRGNST_SCHLDHLPTRJCT ADD CONSTRAINT FK_KP_SCHLDHLPRGNST_SCHLDHLPTRJCT_1 FOREIGN KEY (SCHULDHULPORGANISATIE_ID) REFERENCES SCHULDHULPORGANISATIE (SCHULDHULPORGANISATIE_ID);
-- SCHULDHULPORGANISATIE (many-to-many junction, Connector_ID: 967)

ALTER TABLE KP_SCHLDHLPRGNST_SCHLDHLPTRJCT ADD CONSTRAINT FK_KP_SCHLDHLPRGNST_SCHLDHLPTRJCT_2 FOREIGN KEY (SCHULDHULPTRAJECT_ID) REFERENCES SCHULDHULPTRAJECT (SCHULDHULPTRAJECT_ID);
-- SCHULDHULPTRAJECT (many-to-many junction, Connector_ID: 967)

ALTER TABLE KP_GMNT_IS_OVRGGN_IN ADD CONSTRAINT FK_KP_GMNT_IS_OVRGGN_IN_1 FOREIGN KEY (IS_OVERGEGAAN_IN_1_ID) REFERENCES GEMEENTE (GEMEENTE_ID);
-- GEMEENTE (many-to-many junction, Connector_ID: 2233)

ALTER TABLE KP_GMNT_IS_OVRGGN_IN ADD CONSTRAINT FK_KP_GMNT_IS_OVRGGN_IN_2 FOREIGN KEY (IS_OVERGEGAAN_IN_2_ID) REFERENCES GEMEENTE (GEMEENTE_ID);
-- GEMEENTE (many-to-many junction, Connector_ID: 2233)

ALTER TABLE STABILISATIE ADD CONSTRAINT FK_STABILISATIE_RESULTEERT_IN FOREIGN KEY (RESULTEERT_IN_SCHULDREGELING_ID) REFERENCES SCHULDREGELING (SCHULDREGELING_ID);
-- RESULTEERT_IN (1 to 0..1, Connector_ID: 959)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_BEVAT FOREIGN KEY (BEVAT_STABILISATIE_ID) REFERENCES STABILISATIE (STABILISATIE_ID);
-- BEVAT (1 to 0..1, Connector_ID: 960)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_UITSTROOM FOREIGN KEY (UITSTROOM_UITSTROOM_ID) REFERENCES UITSTROOM (UITSTROOM_ID);
-- UITSTROOM (1 to 0..1, Connector_ID: 961)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_ONDER_VERANTWOORDELIJKHEID_VAN FOREIGN KEY (ONDER_VERANTWOORDELIJKHEID_VAN_GEMEENTE_ID) REFERENCES GEMEENTE (GEMEENTE_ID);
-- ONDER_VERANTWOORDELIJKHEID_VAN (0..* to 1, Connector_ID: 962)

ALTER TABLE VOORLOPIGEVOORZIENING_ ADD CONSTRAINT FK_VOORLOPIGEVOORZIENING__HEEFT FOREIGN KEY (HEEFT_SCHULDHULPTRAJECT_ID) REFERENCES SCHULDHULPTRAJECT (SCHULDHULPTRAJECT_ID);
-- HEEFT (1 to 0..*, Connector_ID: 963)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_BEVAT_2 FOREIGN KEY (BEVAT_SCHULDREGELING_ID) REFERENCES SCHULDREGELING (SCHULDREGELING_ID);
-- BEVAT (1 to 0..1, Connector_ID: 964)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_HEEFT_TRAJECT FOREIGN KEY (HEEFT_TRAJECT_CLIENT_ID) REFERENCES CLIENT (CLIENT_ID);
-- HEEFT_TRAJECT (0..* to 1..2, Connector_ID: 965)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_HEEFT FOREIGN KEY (HEEFT_PLANVANAANPAK_ID) REFERENCES PLANVANAANPAK (PLANVANAANPAK_ID);
-- HEEFT (1 to 0..1, Connector_ID: 972)

ALTER TABLE SCHULDREGELING ADD CONSTRAINT FK_SCHULDREGELING_RESULTEERT_IN FOREIGN KEY (RESULTEERT_IN_OPLOSSING_ID) REFERENCES OPLOSSING (OPLOSSING_ID);
-- RESULTEERT_IN (1 to 0..1, Connector_ID: 975)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_BEVAT_3 FOREIGN KEY (BEVAT_OPLOSSING_ID) REFERENCES OPLOSSING (OPLOSSING_ID);
-- BEVAT (1 to 0..1, Connector_ID: 976)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_BEVAT_4 FOREIGN KEY (BEVAT_NAZORG_ID) REFERENCES NAZORG (NAZORG_ID);
-- BEVAT (1 to 0..1, Connector_ID: 978)

ALTER TABLE OPLOSSING ADD CONSTRAINT FK_OPLOSSING_RESULTEERT_IN FOREIGN KEY (RESULTEERT_IN_NAZORG_ID) REFERENCES NAZORG (NAZORG_ID);
-- RESULTEERT_IN (0..1 to 0..1, Connector_ID: 979)

ALTER TABLE MORATORIUM ADD CONSTRAINT FK_MORATORIUM_KAN_HEBBEN FOREIGN KEY (KAN_HEBBEN_SCHULDHULPTRAJECT_ID) REFERENCES SCHULDHULPTRAJECT (SCHULDHULPTRAJECT_ID);
-- KAN_HEBBEN (1 to 0..*, Connector_ID: 980)

ALTER TABLE LEEFSITUATIE ADD CONSTRAINT FK_LEEFSITUATIE_HEEFT_FINANCIELE_SITUATIE FOREIGN KEY (HEEFT_FINANCIELE_SITUATIE_CLIENT_ID) REFERENCES CLIENT (CLIENT_ID);
-- HEEFT_FINANCIELE_SITUATIE (1 to 0..*, Connector_ID: 981)

ALTER TABLE WSNP_TRAJECT ADD CONSTRAINT FK_WSNP_TRAJECT_HEEFT FOREIGN KEY (HEEFT_LEEFSITUATIE_ID) REFERENCES LEEFSITUATIE (LEEFSITUATIE_ID);
-- HEEFT (0..* to 1, Connector_ID: 982)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_BEVAT_5 FOREIGN KEY (BEVAT_INTAKE_ID) REFERENCES INTAKE (INTAKE_ID);
-- BEVAT (1 to 0..1, Connector_ID: 986)

ALTER TABLE INTAKE ADD CONSTRAINT FK_INTAKE_RESULTEERT_IN_ FOREIGN KEY (RESULTEERT_IN__STABILISATIE_ID) REFERENCES STABILISATIE (STABILISATIE_ID);
-- RESULTEERT_IN_ (1 to 0..1, Connector_ID: 987)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_BEVAT_6 FOREIGN KEY (BEVAT_INFORMATIEENADVIES_ID) REFERENCES INFORMATIEENADVIES (INFORMATIEENADVIES_ID);
-- BEVAT (1 to 0..1, Connector_ID: 989)

ALTER TABLE INTAKE ADD CONSTRAINT FK_INTAKE_RESULTEERT_IN FOREIGN KEY (RESULTEERT_IN_INFORMATIEENADVIES_ID) REFERENCES INFORMATIEENADVIES (INFORMATIEENADVIES_ID);
-- RESULTEERT_IN (0..1 to 0..1, Connector_ID: 990)

ALTER TABLE CRISISINTERVENTIE ADD CONSTRAINT FK_CRISISINTERVENTIE_KAN_HEBBEN FOREIGN KEY (KAN_HEBBEN_SCHULDHULPTRAJECT_ID) REFERENCES SCHULDHULPTRAJECT (SCHULDHULPTRAJECT_ID);
-- KAN_HEBBEN (1 to 0..*, Connector_ID: 991)

ALTER TABLE BEGELEIDING ADD CONSTRAINT FK_BEGELEIDING_RESULTEERT_IN FOREIGN KEY (RESULTEERT_IN_SCHULDREGELING_ID) REFERENCES SCHULDREGELING (SCHULDREGELING_ID);
-- RESULTEERT_IN (0..1 to 0..*, Connector_ID: 994)

ALTER TABLE BEGELEIDING ADD CONSTRAINT FK_BEGELEIDING_RESULTEERT_IN_2 FOREIGN KEY (RESULTEERT_IN_INTAKE_ID) REFERENCES INTAKE (INTAKE_ID);
-- RESULTEERT_IN (0..1 to 0..*, Connector_ID: 995)

ALTER TABLE BEGELEIDING ADD CONSTRAINT FK_BEGELEIDING_BEVAT FOREIGN KEY (BEVAT_SCHULDHULPTRAJECT_ID) REFERENCES SCHULDHULPTRAJECT (SCHULDHULPTRAJECT_ID);
-- BEVAT (1 to 0..*, Connector_ID: 996)

ALTER TABLE BEGELEIDING ADD CONSTRAINT FK_BEGELEIDING_RESULTEERT_IN_3 FOREIGN KEY (RESULTEERT_IN_STABILISATIE_ID) REFERENCES STABILISATIE (STABILISATIE_ID);
-- RESULTEERT_IN (0..1 to 0..*, Connector_ID: 997)

ALTER TABLE BEGELEIDING ADD CONSTRAINT FK_BEGELEIDING_RESULTEERT_IN_4 FOREIGN KEY (RESULTEERT_IN_NAZORG_ID) REFERENCES NAZORG (NAZORG_ID);
-- RESULTEERT_IN (0..1 to 0..1, Connector_ID: 998)

ALTER TABLE SCHULDHULPTRAJECT ADD CONSTRAINT FK_SCHULDHULPTRAJECT_BEVAT_7 FOREIGN KEY (BEVAT_AANMELDING_ID) REFERENCES AANMELDING (AANMELDING_ID);
-- BEVAT (1 to 0..1, Connector_ID: 1000)

ALTER TABLE AANMELDING ADD CONSTRAINT FK_AANMELDING_RESULTEERT_IN FOREIGN KEY (RESULTEERT_IN_INTAKE_ID) REFERENCES INTAKE (INTAKE_ID);
-- RESULTEERT_IN (1 to 0..1, Connector_ID: 1001)

ALTER TABLE BEGELEIDING ADD CONSTRAINT FK_BEGELEIDING_SOORT_ENUM_ID FOREIGN KEY (SOORT_ENUM_ID_ENUMBEGELEIDINGSSOORT_ENUM_ID) REFERENCES ENUMBEGELEIDINGSSOORT_ENUM (ENUMBEGELEIDINGSSOORT_ENUM_ID);
-- SOORT_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE OPLOSSING ADD CONSTRAINT FK_OPLOSSING_SOORT_ENUM_ID FOREIGN KEY (SOORT_ENUM_ID_ENUMOPLOSSINGSSOORT_ENUM_ID) REFERENCES ENUMOPLOSSINGSSOORT_ENUM (ENUMOPLOSSINGSSOORT_ENUM_ID);
-- SOORT_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE UITSTROOM ADD CONSTRAINT FK_UITSTROOM_REDEN_ENUM_ID FOREIGN KEY (REDEN_ENUM_ID_ENUMUITSTROOMREDEN_ENUM_ID) REFERENCES ENUMUITSTROOMREDEN_ENUM (ENUMUITSTROOMREDEN_ENUM_ID);
-- REDEN_ENUM_ID (1 to 1, Connector_ID: enum_ref)

