CREATE TABLE CLIENT (
    CLIENT_ID INTEGER PRIMARY KEY,
    CODE VARCHAR(80),
    GEZAGSDRAGERGEKEND BOOLEAN,
    JURIDISCHESTATUS VARCHAR(80),
    WETTELIJKEVERTEGENWOORDIGING VARCHAR(80)
);

CREATE TABLE AANVRAAGOFMELDING (
    AANVRAAGOFMELDING_ID INTEGER PRIMARY KEY,
    AFGEHANDELD BOOLEAN,
    CATEGORIE VARCHAR(200),
    CATEGORIECODE VARCHAR(80),
    DATUMAANMAAK DATE,
    DATUMAFHANDELING DATE,
    DATUMBEGINSTATUS DATE,
    DATUMEINDESTATUS DATE,
    HOOFDCATEGORIE VARCHAR(80),
    HOOFDCATEGORIECODE VARCHAR(80),
    IDENTIFICATIE VARCHAR(255),
    KANAAL VARCHAR(80),
    ONDERWERP VARCHAR(200),
    ONDERWERPCODE VARCHAR(80),
    SOORT VARCHAR(80),
    STATUS VARCHAR(80),
    STATUSCODE VARCHAR(80),
    STATUSVOLGORDE VARCHAR(80),
    SUBCATEGORIE VARCHAR(200),
    SUBCATEGORIECODE VARCHAR(80)
);

CREATE TABLE AOM_AANVRAAGWMOJEUGD (
    AANVRAAGOFMELDING_ID INTEGER PRIMARY KEY,
    CLIENTREACTIE VARCHAR(100),
    DATUMBESCHIKKING DATE,
    DATUMEERSTEAFSPRAAK DATE,
    DATUMEINDE DATE,
    DATUMPLANVASTGESTELD DATE,
    DATUMSTARTAANVRAAG DATE,
    DESKUNDIGHEID VARCHAR(50),
    DOORLOOPMETHODIEK VARCHAR(50),
    HEEFT_CLIENT_ID INTEGER,
    MAXIMALEDOORLOOPTIJD TIMESTAMP,
    REDENAFSLUITING VARCHAR(50)
);

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

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

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

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

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

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)

