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

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 AOM_AANVRAAGWMOJEUGD (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY,
    CLIENTREACTIE VARCHAR2(100),
    DATUMBESCHIKKING DATE,
    DATUMEERSTEAFSPRAAK DATE,
    DATUMEINDE DATE,
    DATUMPLANVASTGESTELD DATE,
    DATUMSTARTAANVRAAG DATE,
    DESKUNDIGHEID VARCHAR2(50),
    DOORLOOPMETHODIEK VARCHAR2(50),
    HEEFT_CLIENT_ID NUMBER,
    MAXIMALEDOORLOOPTIJD TIMESTAMP,
    REDENAFSLUITING VARCHAR2(50)
);

CREATE TABLE BESCHIKKING (
    BESCHIKKING_ID NUMBER PRIMARY KEY,
    CLIENT_ID NUMBER,
    CODE VARCHAR2(20),
    COMMENTAAR VARCHAR2(200),
    DATUMAFGIFTE DATE,
    GRONDSLAGEN NUMBER,
    LEIDT_TOT_AANVRAAGOFMELDING_ID NUMBER,
    WET VARCHAR2(255)
);

CREATE TABLE AOMMELDINGWMOJEUGD (
    AANVRAAGOFMELDING_ID NUMBER PRIMARY KEY,
    AANMELDER VARCHAR2(100),
    AANMELDINGDOOR VARCHAR2(100),
    AANMELDINGDOORLANDELIJK VARCHAR2(100),
    AANMELDWIJZE VARCHAR2(80),
    DESKUNDIGHEID VARCHAR2(80),
    HEEFT_CLIENT_ID NUMBER,
    ISCLIENTOPDEHOOGTE VARCHAR2(50),
    ONDERZOEKSWIJZE VARCHAR2(50),
    REDENAFSLUITING VARCHAR2(80),
    VERVOLG VARCHAR2(50),
    VERWEZEN VARCHAR2(50)
);

CREATE TABLE KP_AOM_ANVRGWMJGD_ANVRGFMLDNG (
    KP_AOM_ANVRGWMJGD_ANVRGFMLDNG_ID NUMBER PRIMARY KEY,
    AOM_AANVRAAGWMOJEUGD_ID NUMBER,
    AANVRAAGOFMELDING_ID NUMBER
);

CREATE TABLE KP_AMMLDNGWMJGD_ANVRGFMLDNG (
    KP_AMMLDNGWMJGD_ANVRGFMLDNG_ID NUMBER PRIMARY KEY,
    AOMMELDINGWMOJEUGD_ID NUMBER,
    AANVRAAGOFMELDING_ID NUMBER
);

CREATE TABLE KP_BSCHKKNG_AMMLDNGWMJGD (
    KP_BSCHKKNG_AMMLDNGWMJGD_ID NUMBER PRIMARY KEY,
    BESCHIKKING_ID NUMBER,
    AOMMELDINGWMOJEUGD_ID NUMBER
);

ALTER TABLE AOM_AANVRAAGWMOJEUGD ADD CONSTRAINT FK_AOM_AANVRAAGWMOJEUGD_GEN_AANVRAAGOFMELDING FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- Generalization to AANVRAAGOFMELDING

ALTER TABLE AOMMELDINGWMOJEUGD ADD CONSTRAINT FK_AOMMELDINGWMOJEUGD_GEN_AANVRAAGOFMELDING FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- Generalization to AANVRAAGOFMELDING

ALTER TABLE KP_BSCHKKNG_AMMLDNGWMJGD ADD CONSTRAINT FK_KP_BSCHKKNG_AMMLDNGWMJGD_1 FOREIGN KEY (BESCHIKKING_ID) REFERENCES BESCHIKKING (BESCHIKKING_ID);
-- BESCHIKKING (many-to-many junction, Connector_ID: 1074)

ALTER TABLE KP_BSCHKKNG_AMMLDNGWMJGD ADD CONSTRAINT FK_KP_BSCHKKNG_AMMLDNGWMJGD_2 FOREIGN KEY (AOMMELDINGWMOJEUGD_ID) REFERENCES AOMMELDINGWMOJEUGD (AANVRAAGOFMELDING_ID);
-- AOMMELDINGWMOJEUGD (many-to-many junction, Connector_ID: 1074)

ALTER TABLE KP_AMMLDNGWMJGD_ANVRGFMLDNG ADD CONSTRAINT FK_KP_AMMLDNGWMJGD_ANVRGFMLDNG_1 FOREIGN KEY (AOMMELDINGWMOJEUGD_ID) REFERENCES AOMMELDINGWMOJEUGD (AANVRAAGOFMELDING_ID);
-- AOMMELDINGWMOJEUGD (many-to-many junction, Connector_ID: 1076)

ALTER TABLE KP_AMMLDNGWMJGD_ANVRGFMLDNG ADD CONSTRAINT FK_KP_AMMLDNGWMJGD_ANVRGFMLDNG_2 FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- AANVRAAGOFMELDING (many-to-many junction, Connector_ID: 1076)

ALTER TABLE KP_AOM_ANVRGWMJGD_ANVRGFMLDNG ADD CONSTRAINT FK_KP_AOM_ANVRGWMJGD_ANVRGFMLDNG_1 FOREIGN KEY (AOM_AANVRAAGWMOJEUGD_ID) REFERENCES AOM_AANVRAAGWMOJEUGD (AANVRAAGOFMELDING_ID);
-- AOM_AANVRAAGWMOJEUGD (many-to-many junction, Connector_ID: 1080)

ALTER TABLE KP_AOM_ANVRGWMJGD_ANVRGFMLDNG ADD CONSTRAINT FK_KP_AOM_ANVRGWMJGD_ANVRGFMLDNG_2 FOREIGN KEY (AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- AANVRAAGOFMELDING (many-to-many junction, Connector_ID: 1080)

ALTER TABLE BESCHIKKING ADD CONSTRAINT FK_BESCHIKKING_CLIENT FOREIGN KEY (CLIENT_ID) REFERENCES CLIENT (CLIENT_ID);
-- unnamed (0..* to 1, Connector_ID: 1069)

ALTER TABLE AOMMELDINGWMOJEUGD ADD CONSTRAINT FK_AOMMELDINGWMOJEUGD_HEEFT FOREIGN KEY (HEEFT_CLIENT_ID) REFERENCES CLIENT (CLIENT_ID);
-- HEEFT (0..* to 1, Connector_ID: 1075)

ALTER TABLE BESCHIKKING ADD CONSTRAINT FK_BESCHIKKING_LEIDT_TOT FOREIGN KEY (LEIDT_TOT_AANVRAAGOFMELDING_ID) REFERENCES AANVRAAGOFMELDING (AANVRAAGOFMELDING_ID);
-- LEIDT_TOT (0..1 to 0..*, Connector_ID: 1078)

ALTER TABLE AOM_AANVRAAGWMOJEUGD ADD CONSTRAINT FK_AOM_AANVRAAGWMOJEUGD_HEEFT FOREIGN KEY (HEEFT_CLIENT_ID) REFERENCES CLIENT (CLIENT_ID);
-- HEEFT (0..* to 1, Connector_ID: 1079)

