CREATE TABLE VUILNISWAGEN (
    VUILNISWAGEN_ID NUMBER PRIMARY KEY,
    CODE VARCHAR2(255),
    KENTEKEN VARCHAR2(255),
    TYPE VARCHAR2(200)
);

CREATE TABLE CONTAINERTYPE (
    CONTAINERTYPE_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(80),
    OMSCHRIJVING CLOB
);

CREATE TABLE PRIJSAFSPRAAK (
    PRIJSAFSPRAAK_ID NUMBER PRIMARY KEY,
    DATUMEINDE DATE,
    DATUMSTART DATE,
    TITEL VARCHAR2(200)
);

CREATE TABLE FRACTIE (
    FRACTIE_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(80),
    OMSCHRIJVING CLOB
);

CREATE TABLE ROUTESOORT_ENUM (
    ROUTESOORT_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

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

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

CREATE TABLE PRIJSREGEL (
    PRIJSREGEL_ID NUMBER PRIMARY KEY,
    BEDRAG NUMBER(10,2),
    BETREFT_FRACTIE_ID NUMBER,
    CREDIT NUMBER(1),
    HEEFT_PRIJSAFSPRAAK_ID NUMBER
);

CREATE TABLE ROUTE (
    ROUTE_ID NUMBER PRIMARY KEY,
    GEOMETRIE SDO_GEOMETRY,
    OPHALEN_FRACTIE_ID NUMBER,
    ROUTECODE VARCHAR2(255),
    ROUTESOORT_ENUM_ID NUMBER
);

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

CREATE TABLE LOCATIE (
    LOCATIE_ID NUMBER PRIMARY KEY,
    ADRESAANDUIDING VARCHAR2(255),
    GAAT_LANGS_ROUTE_ID NUMBER,
    LOCATIECODE VARCHAR2(255),
    LOCATIEPUNT VARCHAR2(255)
);

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

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

CREATE TABLE OPHAALMOMENT (
    OPHAALMOMENT_ID NUMBER PRIMARY KEY,
    GELOST_CONTAINER_ID NUMBER,
    GESTOPT_OP_LOCATIE_ID NUMBER,
    GEWICHTSTOENAME NUMBER,
    HEEFT_RIT_ID NUMBER,
    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)

