CREATE TABLE OMZETGROEP (
    OMZETGROEP_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(80),
    OMSCHRIJVING TEXT
);

CREATE TABLE LEVERANCIER (
    LEVERANCIER_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(200),
    NUMMER VARCHAR(255)
);

CREATE TABLE PRODUCTGROEP (
    PRODUCTGROEP_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(80),
    OMSCHRIJVING TEXT
);

CREATE TABLE PRODUCT (
    PRODUCT_ID INTEGER PRIMARY KEY,
    CODEMUSEUMJAARKAART VARCHAR(255),
    DATUMEINDEGELDIGHEID DATE,
    DATUMSTART DATE,
    ENTREEKAART INTEGER,
    LEVERANCIER_LEVERANCIER_ID INTEGER,
    OMSCHRIJVING VARCHAR(80),
    PRIJS DECIMAL(10,2)
);

CREATE TABLE KP_PRDCT_PRDCTGRP (
    KP_PRDCT_PRDCTGRP_ID INTEGER PRIMARY KEY,
    PRODUCT_ID INTEGER,
    PRODUCTGROEP_ID INTEGER
);

CREATE TABLE BALIEVERKOOP (
    BALIEVERKOOP_ID INTEGER PRIMARY KEY,
    AANTAL INTEGER,
    BETREFT_PRODUCT_ID INTEGER,
    KANAAL VARCHAR(80),
    VERKOOPTIJD TIMESTAMP
);

CREATE TABLE ENTREEKAART (
    PRODUCT_ID INTEGER PRIMARY KEY,
    RONDLEIDING BOOLEAN
);

CREATE TABLE KP_PRDCT_OMZTGRP (
    KP_PRDCT_OMZTGRP_ID INTEGER PRIMARY KEY,
    PRODUCT_ID INTEGER,
    OMZETGROEP_ID INTEGER
);

CREATE TABLE WINKELVOORRAADITEM (
    WINKELVOORRAADITEM_ID INTEGER PRIMARY KEY,
    AANTAL INTEGER,
    AANTALINBESTELLING INTEGER,
    BETREFT_PRODUCT_ID INTEGER,
    DATUMLEVERINGBESTELLING DATE,
    LOCATIE VARCHAR(80)
);

CREATE TABLE BALIEVERKOOP_ENTREEKAART (
    BALIEVERKOOP_ID INTEGER PRIMARY KEY,
    DATUMEINDEGELDIGHEID DATE,
    DATUMSTART DATE,
    GEBRUIKTOP VARCHAR(255),
    RONDLEIDING BOOLEAN
);

CREATE TABLE KP_ENTRKRT_PRDCT (
    KP_ENTRKRT_PRDCT_ID INTEGER PRIMARY KEY,
    ENTREEKAART_ID INTEGER,
    PRODUCT_ID INTEGER
);

CREATE TABLE KP_BLVRKP_ENTRKRT_BLVRKP (
    KP_BLVRKP_ENTRKRT_BLVRKP_ID INTEGER PRIMARY KEY,
    BALIEVERKOOP_ENTREEKAART_ID INTEGER,
    BALIEVERKOOP_ID INTEGER
);

ALTER TABLE BALIEVERKOOP_ENTREEKAART ADD CONSTRAINT FK_BALIEVERKOOP_ENTREEKAART_GEN_BALIEVERKOOP FOREIGN KEY (BALIEVERKOOP_ID) REFERENCES BALIEVERKOOP (BALIEVERKOOP_ID);
-- Generalization to BALIEVERKOOP

ALTER TABLE ENTREEKAART ADD CONSTRAINT FK_ENTREEKAART_GEN_PRODUCT FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCT (PRODUCT_ID);
-- Generalization to PRODUCT

ALTER TABLE KP_PRDCT_PRDCTGRP ADD CONSTRAINT FK_KP_PRDCT_PRDCTGRP_1 FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCT (PRODUCT_ID);
-- PRODUCT (many-to-many junction, Connector_ID: 1112)

ALTER TABLE KP_PRDCT_PRDCTGRP ADD CONSTRAINT FK_KP_PRDCT_PRDCTGRP_2 FOREIGN KEY (PRODUCTGROEP_ID) REFERENCES PRODUCTGROEP (PRODUCTGROEP_ID);
-- PRODUCTGROEP (many-to-many junction, Connector_ID: 1112)

ALTER TABLE KP_PRDCT_OMZTGRP ADD CONSTRAINT FK_KP_PRDCT_OMZTGRP_1 FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCT (PRODUCT_ID);
-- PRODUCT (many-to-many junction, Connector_ID: 1114)

ALTER TABLE KP_PRDCT_OMZTGRP ADD CONSTRAINT FK_KP_PRDCT_OMZTGRP_2 FOREIGN KEY (OMZETGROEP_ID) REFERENCES OMZETGROEP (OMZETGROEP_ID);
-- OMZETGROEP (many-to-many junction, Connector_ID: 1114)

ALTER TABLE KP_ENTRKRT_PRDCT ADD CONSTRAINT FK_KP_ENTRKRT_PRDCT_1 FOREIGN KEY (ENTREEKAART_ID) REFERENCES ENTREEKAART (PRODUCT_ID);
-- ENTREEKAART (many-to-many junction, Connector_ID: 1123)

ALTER TABLE KP_ENTRKRT_PRDCT ADD CONSTRAINT FK_KP_ENTRKRT_PRDCT_2 FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCT (PRODUCT_ID);
-- PRODUCT (many-to-many junction, Connector_ID: 1123)

ALTER TABLE KP_BLVRKP_ENTRKRT_BLVRKP ADD CONSTRAINT FK_KP_BLVRKP_ENTRKRT_BLVRKP_1 FOREIGN KEY (BALIEVERKOOP_ENTREEKAART_ID) REFERENCES BALIEVERKOOP_ENTREEKAART (BALIEVERKOOP_ID);
-- BALIEVERKOOP_ENTREEKAART (many-to-many junction, Connector_ID: 1132)

ALTER TABLE KP_BLVRKP_ENTRKRT_BLVRKP ADD CONSTRAINT FK_KP_BLVRKP_ENTRKRT_BLVRKP_2 FOREIGN KEY (BALIEVERKOOP_ID) REFERENCES BALIEVERKOOP (BALIEVERKOOP_ID);
-- BALIEVERKOOP (many-to-many junction, Connector_ID: 1132)

ALTER TABLE WINKELVOORRAADITEM ADD CONSTRAINT FK_WINKELVOORRAADITEM_BETREFT FOREIGN KEY (BETREFT_PRODUCT_ID) REFERENCES PRODUCT (PRODUCT_ID);
-- BETREFT (0..1 to 1, Connector_ID: 1110)

ALTER TABLE PRODUCT ADD CONSTRAINT FK_PRODUCT_LEVERANCIER FOREIGN KEY (LEVERANCIER_LEVERANCIER_ID) REFERENCES LEVERANCIER (LEVERANCIER_ID);
-- LEVERANCIER (0..* to 0..1, Connector_ID: 1111)

ALTER TABLE BALIEVERKOOP ADD CONSTRAINT FK_BALIEVERKOOP_BETREFT FOREIGN KEY (BETREFT_PRODUCT_ID) REFERENCES PRODUCT (PRODUCT_ID);
-- BETREFT (0..* to 1, Connector_ID: 1133)

