CREATE TABLE VUILNISWAGEN (
    VUILNISWAGEN_ID INTEGER PRIMARY KEY,
    CODE VARCHAR(255),
    KENTEKEN VARCHAR(255),
    TYPE VARCHAR(200)
);

CREATE TABLE CONTAINERTYPE (
    CONTAINERTYPE_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(80),
    OMSCHRIJVING TEXT
);

CREATE TABLE PRIJSAFSPRAAK (
    PRIJSAFSPRAAK_ID INTEGER PRIMARY KEY,
    DATUMEINDE DATE,
    DATUMSTART DATE,
    TITEL VARCHAR(200)
);

CREATE TABLE FRACTIE (
    FRACTIE_ID INTEGER PRIMARY KEY,
    NAAM VARCHAR(80),
    OMSCHRIJVING TEXT
);

CREATE TABLE ROUTESOORT_ENUM (
    ROUTESOORT_ENUM_ID INTEGER PRIMARY KEY,
    VALUE VARCHAR(255)
);

INSERT INTO ROUTESOORT_ENUM (ROUTESOORT_ENUM_ID, VALUE) VALUES
    (1, 'GROFVUIL'),
    (2, 'HOT_SPOT_LOCATIES'),
    (3, 'HUIS_AAN_HUIS'),
    (4, 'ILLEGALE_DUMPING'),
    (5, 'VANGNETREGELING');

CREATE TABLE KP_VLNSWGN_CNTNRTYP (
    KP_VLNSWGN_CNTNRTYP_ID INTEGER PRIMARY KEY,
    VUILNISWAGEN_ID INTEGER,
    CONTAINERTYPE_ID INTEGER
);

CREATE TABLE PRIJSREGEL (
    PRIJSREGEL_ID INTEGER PRIMARY KEY,
    BEDRAG DECIMAL(10,2),
    BETREFT_FRACTIE_ID INTEGER,
    CREDIT BOOLEAN,
    HEEFT_PRIJSAFSPRAAK_ID INTEGER
);

CREATE TABLE ROUTE (
    ROUTE_ID INTEGER PRIMARY KEY,
    GEOMETRIE GEOMETRY,
    OPHALEN_FRACTIE_ID INTEGER,
    ROUTECODE VARCHAR(255),
    ROUTESOORT_ENUM_ID INTEGER
);

CREATE TABLE RIT (
    RIT_ID INTEGER PRIMARY KEY,
    EINDTIJD TIMESTAMP,
    RITCODE VARCHAR(255),
    STARTTIJD TIMESTAMP,
    UITGEVOERD_MET_VUILNISWAGEN_ID INTEGER,
    VOLGENS_ROUTE_ID INTEGER
);

CREATE TABLE LOCATIE (
    LOCATIE_ID INTEGER PRIMARY KEY,
    ADRESAANDUIDING VARCHAR(255),
    GAAT_LANGS_ROUTE_ID INTEGER,
    LOCATIECODE VARCHAR(255),
    LOCATIEPUNT VARCHAR(255)
);

CREATE TABLE CONTAINER (
    CONTAINER_ID INTEGER PRIMARY KEY,
    CONTAINERCODE VARCHAR(255),
    GESCHIKT_VOOR_FRACTIE_ID INTEGER,
    HEEFT_LOCATIE_ID INTEGER,
    SENSORID VARCHAR(255),
    SOORT_CONTAINERTYPE_ID INTEGER
);

CREATE TABLE VULGRAADMETING (
    VULGRAADMETING_ID INTEGER PRIMARY KEY,
    HEEFT_CONTAINER_ID INTEGER,
    TIJDSTIP TIMESTAMP,
    VULGRAAD INTEGER,
    VULLINGGEWICHT INTEGER
);

CREATE TABLE OPHAALMOMENT (
    OPHAALMOMENT_ID INTEGER PRIMARY KEY,
    GELOST_CONTAINER_ID INTEGER,
    GESTOPT_OP_LOCATIE_ID INTEGER,
    GEWICHTSTOENAME INTEGER,
    HEEFT_RIT_ID INTEGER,
    TIJDSTIP TIMESTAMP
);

ALTER TABLE KP_VLNSWGN_CNTNRTYP ADD CONSTRAINT FK_KP_VLNSWGN_CNTNRTYP_1 FOREIGN KEY (VUILNISWAGEN_ID) REFERENCES VUILNISWAGEN (VUILNISWAGEN_ID);
-- VUILNISWAGEN (many-to-many junction, Connector_ID: 829)

ALTER TABLE KP_VLNSWGN_CNTNRTYP ADD CONSTRAINT FK_KP_VLNSWGN_CNTNRTYP_2 FOREIGN KEY (CONTAINERTYPE_ID) REFERENCES CONTAINERTYPE (CONTAINERTYPE_ID);
-- CONTAINERTYPE (many-to-many junction, Connector_ID: 829)

ALTER TABLE RIT ADD CONSTRAINT FK_RIT_UITGEVOERD_MET FOREIGN KEY (UITGEVOERD_MET_VUILNISWAGEN_ID) REFERENCES VUILNISWAGEN (VUILNISWAGEN_ID);
-- UITGEVOERD_MET (0..* to 1, Connector_ID: 812)

ALTER TABLE RIT ADD CONSTRAINT FK_RIT_VOLGENS FOREIGN KEY (VOLGENS_ROUTE_ID) REFERENCES ROUTE (ROUTE_ID);
-- VOLGENS (0..* to 0..1, Connector_ID: 813)

ALTER TABLE PRIJSREGEL ADD CONSTRAINT FK_PRIJSREGEL_HEEFT FOREIGN KEY (HEEFT_PRIJSAFSPRAAK_ID) REFERENCES PRIJSAFSPRAAK (PRIJSAFSPRAAK_ID);
-- HEEFT (1 to 0..*, Connector_ID: 814)

ALTER TABLE OPHAALMOMENT ADD CONSTRAINT FK_OPHAALMOMENT_HEEFT FOREIGN KEY (HEEFT_RIT_ID) REFERENCES RIT (RIT_ID);
-- HEEFT (1 to 0..*, Connector_ID: 816)

ALTER TABLE OPHAALMOMENT ADD CONSTRAINT FK_OPHAALMOMENT_GESTOPT_OP FOREIGN KEY (GESTOPT_OP_LOCATIE_ID) REFERENCES LOCATIE (LOCATIE_ID);
-- GESTOPT_OP (0..* to 1, Connector_ID: 820)

ALTER TABLE LOCATIE ADD CONSTRAINT FK_LOCATIE_GAAT_LANGS FOREIGN KEY (GAAT_LANGS_ROUTE_ID) REFERENCES ROUTE (ROUTE_ID);
-- GAAT_LANGS (0..1 to 0..*, Connector_ID: 822)

ALTER TABLE ROUTE ADD CONSTRAINT FK_ROUTE_OPHALEN FOREIGN KEY (OPHALEN_FRACTIE_ID) REFERENCES FRACTIE (FRACTIE_ID);
-- OPHALEN (0..* to 1, Connector_ID: 823)

ALTER TABLE PRIJSREGEL ADD CONSTRAINT FK_PRIJSREGEL_BETREFT FOREIGN KEY (BETREFT_FRACTIE_ID) REFERENCES FRACTIE (FRACTIE_ID);
-- BETREFT (1..* to 1, Connector_ID: 826)

ALTER TABLE OPHAALMOMENT ADD CONSTRAINT FK_OPHAALMOMENT_GELOST FOREIGN KEY (GELOST_CONTAINER_ID) REFERENCES CONTAINER (CONTAINER_ID);
-- GELOST (0..* to 0..1, Connector_ID: 830)

ALTER TABLE VULGRAADMETING ADD CONSTRAINT FK_VULGRAADMETING_HEEFT FOREIGN KEY (HEEFT_CONTAINER_ID) REFERENCES CONTAINER (CONTAINER_ID);
-- HEEFT (1 to 0..*, Connector_ID: 831)

ALTER TABLE CONTAINER ADD CONSTRAINT FK_CONTAINER_HEEFT FOREIGN KEY (HEEFT_LOCATIE_ID) REFERENCES LOCATIE (LOCATIE_ID);
-- HEEFT (0..* to 1, Connector_ID: 832)

ALTER TABLE CONTAINER ADD CONSTRAINT FK_CONTAINER_SOORT FOREIGN KEY (SOORT_CONTAINERTYPE_ID) REFERENCES CONTAINERTYPE (CONTAINERTYPE_ID);
-- SOORT (0..* to 0..1, Connector_ID: 833)

ALTER TABLE CONTAINER ADD CONSTRAINT FK_CONTAINER_GESCHIKT_VOOR FOREIGN KEY (GESCHIKT_VOOR_FRACTIE_ID) REFERENCES FRACTIE (FRACTIE_ID);
-- GESCHIKT_VOOR (0..* to 1, Connector_ID: 834)

ALTER TABLE ROUTE ADD CONSTRAINT FK_ROUTE_ROUTESOORT_ENUM_ID FOREIGN KEY (ROUTESOORT_ENUM_ID_ROUTESOORT_ENUM_ID) REFERENCES ROUTESOORT_ENUM (ROUTESOORT_ENUM_ID);
-- ROUTESOORT_ENUM_ID (1 to 1, Connector_ID: enum_ref)

