CREATE TABLE LEVERINGSSPECIFICATIE (
    LEVERINGSSPECIFICATIE_ID INTEGER PRIMARY KEY,
    BESTAAT_UIT_LEVERINGSCOMPONENT_ID INTEGER,
    PERIODE_EINDDATUM DATE,
    PERIODE_STARTDATUM DATE,
    PERIODICITEIT VARCHAR(255)
);

CREATE TABLE VOORLIGGENDE_VOORZIENING (
    VOORWAARDE_ID INTEGER PRIMARY KEY,
    TYPE VARCHAR(255)
);

CREATE TABLE LEVERINGSCOMPONENT (
    LEVERINGSCOMPONENT_ID INTEGER PRIMARY KEY,
    BEDRAG DECIMAL(10,2),
    EINDDATUM DATE,
    GEVALSRUBRIEK VARCHAR(255),
    OMSCHRIJVING_AFWIJKING VARCHAR(255),
    PERCENTAGE VARCHAR(255),
    PERIODE_STARTDATUM DATE,
    SOORT VARCHAR(255)
);

CREATE TABLE RECHT (
    RECHT_ID INTEGER PRIMARY KEY,
    BEGINDATUM_VAN_HET_RECHT DATE,
    BESCHRIJVING DATE,
    EINDDATUM_VAN_HET_RECHT DATE,
    IS_GRONDSLAG_VOOR_BESLUIT_ID INTEGER,
    VASTSTELDATUM_VAN_HET_RECHT DATE
);

CREATE TABLE KP_DNSTTYP_VRWRDTYP (
    KP_DNSTTYP_VRWRDTYP_ID INTEGER PRIMARY KEY,
    DIENSTTYPE_ID INTEGER,
    VOORWAARDETYPE_ID INTEGER
);

CREATE TABLE VOORWAARDETYPE (
    VOORWAARDETYPE_ID INTEGER PRIMARY KEY,
    BESCHRIJFT_VOORWAARDE_ID INTEGER,
    BESCHRIJVING VARCHAR(255)
);

CREATE TABLE PERIODIEK_DIENST_BIJZ_BIJSTAND (
    PERIODIEK_DIENST_BIJZ_BIJSTAND_ID INTEGER PRIMARY KEY,
    BEDRAG DECIMAL(10,2),
    EINDDATUM DATE,
    FISCAAL VARCHAR(255),
    KOSTENSOORT DECIMAL(10,2),
    PERIODICITEIT VARCHAR(255),
    STARTDATUM DATE
);

CREATE TABLE KP_VRWRD_IS_OPGBWD_UIT (
    KP_VRWRD_IS_OPGBWD_UIT_ID INTEGER PRIMARY KEY,
    IS_OPGEBOUWD_UIT_1_ID INTEGER,
    IS_OPGEBOUWD_UIT_2_ID INTEGER
);

CREATE TABLE AANVRAAG (
    AANVRAAG_ID INTEGER PRIMARY KEY,
    AANVRAAGDATUM DATE,
    CODE_ONTVANGENDE_GEMEENTE DATE,
    LEIDT_TOT_BESLUIT_ID INTEGER
);

CREATE TABLE UITSLUITINGSGROND (
    VOORWAARDE_ID INTEGER PRIMARY KEY,
    TYPE VARCHAR(255)
);

CREATE TABLE VOORWAARDE (
    VOORWAARDE_ID INTEGER PRIMARY KEY,
    BRONTYPE VARCHAR(255),
    CONCLUSIE VARCHAR(255),
    VASTLEGGINGSDATUM DATE,
    VERANTWOORDING_VASTSTELLING VARCHAR(255)
);

CREATE TABLE AANVRAAGTYPE (
    AANVRAAGTYPE_ID INTEGER PRIMARY KEY,
    BESCHRIJFT_AANVRAAG_ID INTEGER,
    BETREFT_DIENSTTYPE_ID INTEGER,
    EINDDATUM DATE,
    NAAM VARCHAR(255),
    SOORT_AANVRAAG VARCHAR(255),
    STARTDATUM DATE
);

CREATE TABLE KP_RCHT_VRWRD (
    KP_RCHT_VRWRD_ID INTEGER PRIMARY KEY,
    RECHT_ID INTEGER,
    VOORWAARDE_ID INTEGER
);

CREATE TABLE BETALINGSBLOKKADE (
    BETALINGSBLOKKADE_ID INTEGER PRIMARY KEY,
    AANDUIDING VARCHAR(255),
    DIRECT_BLOKKEREN VARCHAR(255),
    INITIËLE_AANMAAKDATUM DATE,
    REDEN VARCHAR(255)
);

CREATE TABLE VERSTREKKINGSVORM (
    VERSTREKKINGSVORM_ID INTEGER PRIMARY KEY,
    HEEFT_LEVERINGSOPDRACHT_ID INTEGER,
    NAAM VARCHAR(255),
    TYPE VARCHAR(255)
);

CREATE TABLE DIENSTTYPE (
    DIENSTTYPE_ID INTEGER PRIMARY KEY,
    BESCHRIJFT_DIENST_ID INTEGER,
    BEVAT_ONDERDEEL_BESCHIKKING_ID INTEGER,
    DUUR_REFERTEPERIODE VARCHAR(255),
    EINDDATUM DATE,
    HEEFT_LEVERINGSCOMPONENTTYPE_ID INTEGER,
    HEEFT_VERSTREKKINGSVORM_ID INTEGER,
    MINBETROUWBAARHEIDSNIVEAU VARCHAR(255),
    NAAM VARCHAR(255),
    PERIODICITEIT VARCHAR(255),
    PERIODICITEIT_INKOMSTENFORMULIER VARCHAR(255),
    STARTDATUM DATE,
    TYPE_REFERTEPERIODEBEPALING VARCHAR(255)
);

CREATE TABLE KP_VRLGGND_VRZNNG_VRWRD (
    KP_VRLGGND_VRZNNG_VRWRD_ID INTEGER PRIMARY KEY,
    VOORLIGGENDE_VOORZIENING_ID INTEGER,
    VOORWAARDE_ID INTEGER
);

CREATE TABLE INDIVIDUELE_PLICHT (
    INDIVIDUELE_PLICHT_ID INTEGER PRIMARY KEY
);

CREATE TABLE BESLUIT (
    BESLUIT_ID INTEGER PRIMARY KEY,
    DATUM_BESLISSING DATE,
    INITIEERT_DIENST_ID INTEGER,
    LEIDT_TOT_BESCHIKKING_ID INTEGER
);

CREATE TABLE BESCHIKKING (
    BESCHIKKING_ID INTEGER PRIMARY KEY,
    BEVAT_ONDERDEEL_BESCHIKKING_ID INTEGER,
    DATUM_BESCHIKKING DATE
);

CREATE TABLE LEVERINGSOPDRACHT (
    LEVERINGSOPDRACHT_ID INTEGER PRIMARY KEY,
    BESTAAT_UIT_LEVERINGSSPECIFICATIE_ID INTEGER,
    LEVERINGSKANAAL VARCHAR(200)
);

CREATE TABLE LEVERINGSCOMPONENTTYPE (
    LEVERINGSCOMPONENTTYPE_ID INTEGER PRIMARY KEY,
    AFWIJKENDE_NORM VARCHAR(255),
    BESCHRIJFT_LEVERINGSCOMPONENT_ID INTEGER,
    EINDDATUM DATE,
    FISCAAL VARCHAR(255),
    KOSTENSOORT DECIMAL(10,2),
    NORMBEDRAG DECIMAL(10,2),
    NORMPERCENTAGE VARCHAR(255),
    RUBRIEK VARCHAR(255),
    SOORT_WETTELIJKE_NORM VARCHAR(255),
    STARTDATUM DATE
);

CREATE TABLE REFERTEPERIODE (
    REFERTEPERIODE_ID INTEGER PRIMARY KEY,
    EINDDATUM DATE,
    STARTDATUM DATE
);

CREATE TABLE REGELING (
    REGELING_ID INTEGER PRIMARY KEY,
    BESCHRIJVING VARCHAR(255),
    BEVAT_DIENSTTYPE_ID INTEGER,
    EINDDATUM DATE,
    NAAM VARCHAR(255),
    STARTDATUM DATE
);

CREATE TABLE KP_UTSLTNGSGRND_VRWRD (
    KP_UTSLTNGSGRND_VRWRD_ID INTEGER PRIMARY KEY,
    UITSLUITINGSGROND_ID INTEGER,
    VOORWAARDE_ID INTEGER
);

CREATE TABLE ONDERDEEL_BESCHIKKING (
    ONDERDEEL_BESCHIKKING_ID INTEGER PRIMARY KEY,
    DATUM_BESCHIKKING_DIENSTTYPE DATE,
    REDEN_BESCHIKKING_DIENSTTYPE VARCHAR(255)
);

CREATE TABLE DIENST (
    DIENST_ID INTEGER PRIMARY KEY,
    AANTAL_KOSTENDELERS DECIMAL(10,2),
    BEGINDATUM DATE,
    EINDDATUM DATE,
    HEEFT_REFERTEPERIODE_ID INTEGER,
    IN_KADER_VAN_LEVERINGSOPDRACHT_ID INTEGER,
    ONDERGAAT_BETALINGSBLOKKADE_ID INTEGER,
    PERIODICITEIT_STATUSFORMULIER VARCHAR(255),
    STARTDATUM_STATUSFORMULIER DATE,
    VEREIST_INDIVIDUELE_PLICHT_ID INTEGER
);

ALTER TABLE UITSLUITINGSGROND ADD CONSTRAINT FK_UITSLUITINGSGROND_GEN_VOORWAARDE FOREIGN KEY (VOORWAARDE_ID) REFERENCES VOORWAARDE (VOORWAARDE_ID);
-- Generalization to VOORWAARDE

ALTER TABLE VOORLIGGENDE_VOORZIENING ADD CONSTRAINT FK_VOORLIGGENDE_VOORZIENING_GEN_VOORWAARDE FOREIGN KEY (VOORWAARDE_ID) REFERENCES VOORWAARDE (VOORWAARDE_ID);
-- Generalization to VOORWAARDE

ALTER TABLE KP_VRWRD_IS_OPGBWD_UIT ADD CONSTRAINT FK_KP_VRWRD_IS_OPGBWD_UIT_1 FOREIGN KEY (IS_OPGEBOUWD_UIT_1_ID) REFERENCES VOORWAARDE (VOORWAARDE_ID);
-- VOORWAARDE (many-to-many junction, Connector_ID: 1718)

ALTER TABLE KP_VRWRD_IS_OPGBWD_UIT ADD CONSTRAINT FK_KP_VRWRD_IS_OPGBWD_UIT_2 FOREIGN KEY (IS_OPGEBOUWD_UIT_2_ID) REFERENCES VOORWAARDE (VOORWAARDE_ID);
-- VOORWAARDE (many-to-many junction, Connector_ID: 1718)

ALTER TABLE KP_VRLGGND_VRZNNG_VRWRD ADD CONSTRAINT FK_KP_VRLGGND_VRZNNG_VRWRD_1 FOREIGN KEY (VOORLIGGENDE_VOORZIENING_ID) REFERENCES VOORLIGGENDE_VOORZIENING (VOORWAARDE_ID);
-- VOORLIGGENDE_VOORZIENING (many-to-many junction, Connector_ID: 1719)

ALTER TABLE KP_VRLGGND_VRZNNG_VRWRD ADD CONSTRAINT FK_KP_VRLGGND_VRZNNG_VRWRD_2 FOREIGN KEY (VOORWAARDE_ID) REFERENCES VOORWAARDE (VOORWAARDE_ID);
-- VOORWAARDE (many-to-many junction, Connector_ID: 1719)

ALTER TABLE KP_UTSLTNGSGRND_VRWRD ADD CONSTRAINT FK_KP_UTSLTNGSGRND_VRWRD_1 FOREIGN KEY (UITSLUITINGSGROND_ID) REFERENCES UITSLUITINGSGROND (VOORWAARDE_ID);
-- UITSLUITINGSGROND (many-to-many junction, Connector_ID: 1720)

ALTER TABLE KP_UTSLTNGSGRND_VRWRD ADD CONSTRAINT FK_KP_UTSLTNGSGRND_VRWRD_2 FOREIGN KEY (VOORWAARDE_ID) REFERENCES VOORWAARDE (VOORWAARDE_ID);
-- VOORWAARDE (many-to-many junction, Connector_ID: 1720)

ALTER TABLE KP_RCHT_VRWRD ADD CONSTRAINT FK_KP_RCHT_VRWRD_1 FOREIGN KEY (RECHT_ID) REFERENCES RECHT (RECHT_ID);
-- RECHT (many-to-many junction, Connector_ID: 1721)

ALTER TABLE KP_RCHT_VRWRD ADD CONSTRAINT FK_KP_RCHT_VRWRD_2 FOREIGN KEY (VOORWAARDE_ID) REFERENCES VOORWAARDE (VOORWAARDE_ID);
-- VOORWAARDE (many-to-many junction, Connector_ID: 1721)

ALTER TABLE KP_DNSTTYP_VRWRDTYP ADD CONSTRAINT FK_KP_DNSTTYP_VRWRDTYP_1 FOREIGN KEY (DIENSTTYPE_ID) REFERENCES DIENSTTYPE (DIENSTTYPE_ID);
-- DIENSTTYPE (many-to-many junction, Connector_ID: 1732)

ALTER TABLE KP_DNSTTYP_VRWRDTYP ADD CONSTRAINT FK_KP_DNSTTYP_VRWRDTYP_2 FOREIGN KEY (VOORWAARDETYPE_ID) REFERENCES VOORWAARDETYPE (VOORWAARDETYPE_ID);
-- VOORWAARDETYPE (many-to-many junction, Connector_ID: 1732)

ALTER TABLE VOORWAARDETYPE ADD CONSTRAINT FK_VOORWAARDETYPE_BESCHRIJFT FOREIGN KEY (BESCHRIJFT_VOORWAARDE_ID) REFERENCES VOORWAARDE (VOORWAARDE_ID);
-- BESCHRIJFT (0..* to 1..1, Connector_ID: 1717)

ALTER TABLE LEVERINGSOPDRACHT ADD CONSTRAINT FK_LEVERINGSOPDRACHT_BESTAAT_UIT FOREIGN KEY (BESTAAT_UIT_LEVERINGSSPECIFICATIE_ID) REFERENCES LEVERINGSSPECIFICATIE (LEVERINGSSPECIFICATIE_ID);
-- BESTAAT_UIT (1..* to 1..1, Connector_ID: 1722)

ALTER TABLE VERSTREKKINGSVORM ADD CONSTRAINT FK_VERSTREKKINGSVORM_HEEFT FOREIGN KEY (HEEFT_LEVERINGSOPDRACHT_ID) REFERENCES LEVERINGSOPDRACHT (LEVERINGSOPDRACHT_ID);
-- HEEFT (1..1 to 0..*, Connector_ID: 1723)

ALTER TABLE LEVERINGSSPECIFICATIE ADD CONSTRAINT FK_LEVERINGSSPECIFICATIE_BESTAAT_UIT FOREIGN KEY (BESTAAT_UIT_LEVERINGSCOMPONENT_ID) REFERENCES LEVERINGSCOMPONENT (LEVERINGSCOMPONENT_ID);
-- BESTAAT_UIT (1..* to 1..1, Connector_ID: 1724)

ALTER TABLE LEVERINGSCOMPONENTTYPE ADD CONSTRAINT FK_LEVERINGSCOMPONENTTYPE_BESCHRIJFT FOREIGN KEY (BESCHRIJFT_LEVERINGSCOMPONENT_ID) REFERENCES LEVERINGSCOMPONENT (LEVERINGSCOMPONENT_ID);
-- BESCHRIJFT (0..* to 1..1, Connector_ID: 1725)

ALTER TABLE REGELING ADD CONSTRAINT FK_REGELING_BEVAT FOREIGN KEY (BEVAT_DIENSTTYPE_ID) REFERENCES DIENSTTYPE (DIENSTTYPE_ID);
-- BEVAT (1..* to 1..1, Connector_ID: 1728)

ALTER TABLE DIENSTTYPE ADD CONSTRAINT FK_DIENSTTYPE_HEEFT FOREIGN KEY (HEEFT_VERSTREKKINGSVORM_ID) REFERENCES VERSTREKKINGSVORM (VERSTREKKINGSVORM_ID);
-- HEEFT (1..* to 1..1, Connector_ID: 1729)

ALTER TABLE DIENSTTYPE ADD CONSTRAINT FK_DIENSTTYPE_BEVAT FOREIGN KEY (BEVAT_ONDERDEEL_BESCHIKKING_ID) REFERENCES ONDERDEEL_BESCHIKKING (ONDERDEEL_BESCHIKKING_ID);
-- BEVAT (0..* to 1..1, Connector_ID: 1730)

ALTER TABLE DIENSTTYPE ADD CONSTRAINT FK_DIENSTTYPE_HEEFT_2 FOREIGN KEY (HEEFT_LEVERINGSCOMPONENTTYPE_ID) REFERENCES LEVERINGSCOMPONENTTYPE (LEVERINGSCOMPONENTTYPE_ID);
-- HEEFT (1..* to 1..1, Connector_ID: 1731)

ALTER TABLE DIENSTTYPE ADD CONSTRAINT FK_DIENSTTYPE_BESCHRIJFT FOREIGN KEY (BESCHRIJFT_DIENST_ID) REFERENCES DIENST (DIENST_ID);
-- BESCHRIJFT (0..* to 1..1, Connector_ID: 1734)

ALTER TABLE DIENST ADD CONSTRAINT FK_DIENST_IN_KADER_VAN FOREIGN KEY (IN_KADER_VAN_LEVERINGSOPDRACHT_ID) REFERENCES LEVERINGSOPDRACHT (LEVERINGSOPDRACHT_ID);
-- IN_KADER_VAN (1..1 to 1..*, Connector_ID: 1735)

ALTER TABLE DIENST ADD CONSTRAINT FK_DIENST_HEEFT FOREIGN KEY (HEEFT_REFERTEPERIODE_ID) REFERENCES REFERTEPERIODE (REFERTEPERIODE_ID);
-- HEEFT (0..1 to 1..1, Connector_ID: 1737)

ALTER TABLE DIENST ADD CONSTRAINT FK_DIENST_VEREIST FOREIGN KEY (VEREIST_INDIVIDUELE_PLICHT_ID) REFERENCES INDIVIDUELE_PLICHT (INDIVIDUELE_PLICHT_ID);
-- VEREIST (0..* to 1..1, Connector_ID: 1738)

ALTER TABLE DIENST ADD CONSTRAINT FK_DIENST_ONDERGAAT FOREIGN KEY (ONDERGAAT_BETALINGSBLOKKADE_ID) REFERENCES BETALINGSBLOKKADE (BETALINGSBLOKKADE_ID);
-- ONDERGAAT (0..1 to 1..1, Connector_ID: 1739)

ALTER TABLE RECHT ADD CONSTRAINT FK_RECHT_IS_GRONDSLAG_VOOR FOREIGN KEY (IS_GRONDSLAG_VOOR_BESLUIT_ID) REFERENCES BESLUIT (BESLUIT_ID);
-- IS_GRONDSLAG_VOOR (1..1 to 1..1, Connector_ID: 1740)

ALTER TABLE BESLUIT ADD CONSTRAINT FK_BESLUIT_INITIEERT FOREIGN KEY (INITIEERT_DIENST_ID) REFERENCES DIENST (DIENST_ID);
-- INITIEERT (0..* to 1..1, Connector_ID: 1741)

ALTER TABLE BESLUIT ADD CONSTRAINT FK_BESLUIT_LEIDT_TOT FOREIGN KEY (LEIDT_TOT_BESCHIKKING_ID) REFERENCES BESCHIKKING (BESCHIKKING_ID);
-- LEIDT_TOT (1..1 to 1..1, Connector_ID: 1742)

ALTER TABLE BESCHIKKING ADD CONSTRAINT FK_BESCHIKKING_BEVAT FOREIGN KEY (BEVAT_ONDERDEEL_BESCHIKKING_ID) REFERENCES ONDERDEEL_BESCHIKKING (ONDERDEEL_BESCHIKKING_ID);
-- BEVAT (1..* to 1..1, Connector_ID: 1743)

ALTER TABLE AANVRAAGTYPE ADD CONSTRAINT FK_AANVRAAGTYPE_BETREFT FOREIGN KEY (BETREFT_DIENSTTYPE_ID) REFERENCES DIENSTTYPE (DIENSTTYPE_ID);
-- BETREFT (1..* to 1..1, Connector_ID: 1744)

ALTER TABLE AANVRAAGTYPE ADD CONSTRAINT FK_AANVRAAGTYPE_BESCHRIJFT FOREIGN KEY (BESCHRIJFT_AANVRAAG_ID) REFERENCES AANVRAAG (AANVRAAG_ID);
-- BESCHRIJFT (0..* to 1..1, Connector_ID: 1746)

ALTER TABLE AANVRAAG ADD CONSTRAINT FK_AANVRAAG_LEIDT_TOT FOREIGN KEY (LEIDT_TOT_BESLUIT_ID) REFERENCES BESLUIT (BESLUIT_ID);
-- LEIDT_TOT (0..1 to 1..1, Connector_ID: 1747)

