CREATE TABLE RECHTSPERSOON (
    RECHTSPERSOON_ID NUMBER PRIMARY KEY,
    ADRESBINNENLAND VARCHAR2(255),
    ADRESBUITENLAND VARCHAR2(255),
    ADRESCORRESPONDENTIE VARCHAR2(100),
    EMAILADRES VARCHAR2(80),
    FAXNUMMER VARCHAR2(20),
    IDENTIFICATIE VARCHAR2(255),
    KVKNUMMER VARCHAR2(20),
    NAAM VARCHAR2(200),
    RECHTSVORM VARCHAR2(100),
    REKENINGNUMMER VARCHAR2(255),
    TELEFOONNUMMER VARCHAR2(20)
);

CREATE TABLE RAADSCOMMISSIE (
    RAADSCOMMISSIE_ID NUMBER PRIMARY KEY,
    NAAM VARCHAR2(255)
);

CREATE TABLE STEMMINGSRESULTAATTYPE_ENUM (
    STEMMINGSRESULTAATTYPE_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO STEMMINGSRESULTAATTYPE_ENUM (STEMMINGSRESULTAATTYPE_ENUM_ID, VALUE) VALUES (1, 'GELIJK');
INSERT INTO STEMMINGSRESULTAATTYPE_ENUM (STEMMINGSRESULTAATTYPE_ENUM_ID, VALUE) VALUES (2, 'TEGEN');
INSERT INTO STEMMINGSRESULTAATTYPE_ENUM (STEMMINGSRESULTAATTYPE_ENUM_ID, VALUE) VALUES (3, 'VOOR');

CREATE TABLE STEMMINGSTYPE_ENUM (
    STEMMINGSTYPE_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO STEMMINGSTYPE_ENUM (STEMMINGSTYPE_ENUM_ID, VALUE) VALUES (1, 'HOOFDELIJK');
INSERT INTO STEMMINGSTYPE_ENUM (STEMMINGSTYPE_ENUM_ID, VALUE) VALUES (2, 'REGULIER');
INSERT INTO STEMMINGSTYPE_ENUM (STEMMINGSTYPE_ENUM_ID, VALUE) VALUES (3, 'SCHRIFTELIJK');

CREATE TABLE RAADSSTUK (
    RAADSSTUK_ID NUMBER PRIMARY KEY,
    BESLOTEN NUMBER(1),
    DATUMEXPIRATIE DATE,
    DATUMPUBLICATIE DATE,
    DATUMREGISTRATIE DATE,
    TYPERAADSSTUK VARCHAR2(80)
);

CREATE TABLE DEELNEMERSROL_ENUM (
    DEELNEMERSROL_ENUM_ID NUMBER PRIMARY KEY,
    VALUE VARCHAR2(255)
);

INSERT INTO DEELNEMERSROL_ENUM (DEELNEMERSROL_ENUM_ID, VALUE) VALUES (1, 'INSPREKER');
INSERT INTO DEELNEMERSROL_ENUM (DEELNEMERSROL_ENUM_ID, VALUE) VALUES (2, 'OVERIG');
INSERT INTO DEELNEMERSROL_ENUM (DEELNEMERSROL_ENUM_ID, VALUE) VALUES (3, 'PORTEFEUILLEHOUDER');
INSERT INTO DEELNEMERSROL_ENUM (DEELNEMERSROL_ENUM_ID, VALUE) VALUES (4, 'RAADSLID');
INSERT INTO DEELNEMERSROL_ENUM (DEELNEMERSROL_ENUM_ID, VALUE) VALUES (5, 'STATENLID');
INSERT INTO DEELNEMERSROL_ENUM (DEELNEMERSROL_ENUM_ID, VALUE) VALUES (6, 'VICE_VOORZITTER');
INSERT INTO DEELNEMERSROL_ENUM (DEELNEMERSROL_ENUM_ID, VALUE) VALUES (7, 'VOORZITTER');

CREATE TABLE INGEZETENE (
    INGEZETENE_ID NUMBER PRIMARY KEY,
    AANDUIDINGEUROPEESKIESRECHT NUMBER(1),
    AANDUIDINGUITGESLOTENKIESRECHT NUMBER(1),
    DATUMVERKRIJGINGVERBLIJFSTITEL DATE,
    DATUMVERLIESVERBLIJFSTITEL DATE,
    INDICATIEBLOKKERING VARCHAR2(255),
    INDICATIECURATELEREGISTER VARCHAR2(255),
    INDICATIEGEZAGMINDERJARIGE VARCHAR2(255)
);

CREATE TABLE DOCUMENT (
    DOCUMENT_ID NUMBER PRIMARY KEY,
    COCUMENTBESCHRIJVING VARCHAR2(255),
    DATUMCREATIEDOCUMENT DATE,
    DATUMONTVANGSTDOCUMENT DATE,
    DATUMVERZENDINGDOCUMENT DATE,
    DOCUMENTAUTEUR VARCHAR2(200),
    DOCUMENTIDENTIFICATIE VARCHAR2(255),
    DOCUMENTTITEL VARCHAR2(200),
    VERTROUWELIJKAANDUIDING VARCHAR2(20)
);

CREATE TABLE NATUURLIJKPERSOON (
    RECHTSPERSOON_ID NUMBER PRIMARY KEY,
    AANDUIDINGNAAMGEBRUIK VARCHAR2(50),
    AANHEFAANSCHRIJVING VARCHAR2(50),
    ACADEMISCHETITEL VARCHAR2(80),
    ACHTERNAAM VARCHAR2(100),
    ADELLIJKETITELOFPREDIKAAT VARCHAR2(255),
    ANUMMER VARCHAR2(20),
    BIJZONDERNEDERLANDERSCHAP VARCHAR2(50),
    BURGERSERVICENUMMER VARCHAR2(255),
    DATUMGEBOORTE DATE,
    DATUMOVERLIJDEN DATE,
    GEBOORTELAND VARCHAR2(255),
    GEBOORTEPLAATS VARCHAR2(200),
    GESLACHTSAANDUIDING VARCHAR2(255),
    GESLACHTSNAAM VARCHAR2(200),
    GESLACHTSNAAMAANSCHRIJVING VARCHAR2(200),
    HANDLICHTING VARCHAR2(50),
    INDICATIEAFSCHERMINGPERSOONSGEGEVENS NUMBER(1),
    INDICATIEOVERLEDEN NUMBER(1),
    LANDOVERLIJDEN VARCHAR2(255),
    NATIONALITEIT VARCHAR2(100),
    OVERLIJDENSPLAATS VARCHAR2(200),
    VOORLETTERSAANSCHRIJVING VARCHAR2(20),
    VOORNAMEN VARCHAR2(200),
    VOORNAMENAANSCHRIJVING VARCHAR2(200),
    VOORVOEGSELGESLACHTSNAAM VARCHAR2(80)
);

CREATE TABLE VERGADERING (
    VERGADERING_ID NUMBER PRIMARY KEY,
    EINDTIJD TIMESTAMP,
    HEEFT_RAADSCOMMISSIE_ID NUMBER,
    HEEFT_VERSLAG_RAADSSTUK_ID NUMBER,
    LOCATIE VARCHAR2(255),
    STARTTIJD TIMESTAMP,
    TITEL VARCHAR2(255)
);

CREATE TABLE COLLEGELID (
    INGEZETENE_ID NUMBER PRIMARY KEY,
    ACHTERNAAM VARCHAR2(255),
    DATUMAANSTELLING DATE,
    DATUMUITTREDING DATE,
    FRACTIE VARCHAR2(255),
    PORTEFEUILLE VARCHAR2(200),
    TITEL VARCHAR2(80),
    VOORNAAM VARCHAR2(255)
);

CREATE TABLE AANWEZIGE_DEELNEMER (
    AANWEZIGE_DEELNEMER_ID NUMBER PRIMARY KEY,
    AANVANGAANWEZIGHEID VARCHAR2(255),
    EINDEAANWEZIGHEID DATE,
    IS_INGEZETENE_ID NUMBER,
    IS_RECHTSPERSOON_ID NUMBER,
    NAAM VARCHAR2(255),
    ROL_ENUM_ID NUMBER,
    VERGADERING_ID NUMBER,
    VERTEGENWOORDIGTORGANISATIE VARCHAR2(255)
);

CREATE TABLE INDIENER (
    INDIENER_ID NUMBER PRIMARY KEY,
    IS_INGEZETENE_ID NUMBER,
    IS_RECHTSPERSOON_ID NUMBER,
    NAAM VARCHAR2(255),
    OMSCHRIJVING CLOB
);

CREATE TABLE KP_RDSSTK_DCMNT (
    KP_RDSSTK_DCMNT_ID NUMBER PRIMARY KEY,
    RAADSSTUK_ID NUMBER,
    DOCUMENT_ID NUMBER
);

CREATE TABLE KP_NTRLJKPRSN_RCHTSPRSN (
    KP_NTRLJKPRSN_RCHTSPRSN_ID NUMBER PRIMARY KEY,
    NATUURLIJKPERSOON_ID NUMBER,
    RECHTSPERSOON_ID NUMBER
);

CREATE TABLE KP_RDSSTK_VRGDRNG (
    KP_RDSSTK_VRGDRNG_ID NUMBER PRIMARY KEY,
    RAADSSTUK_ID NUMBER,
    VERGADERING_ID NUMBER
);

CREATE TABLE VIDEO_OPNAME (
    VIDEO_OPNAME_ID NUMBER PRIMARY KEY,
    BESTANDSGROOTTE NUMBER,
    BETREFT_VERGADERING_ID NUMBER,
    DATUMTIJD TIMESTAMP,
    LENGTE NUMBER,
    VIDEOFORMAAT VARCHAR2(80)
);

CREATE TABLE KP_CLLGLD_INGZTN (
    KP_CLLGLD_INGZTN_ID NUMBER PRIMARY KEY,
    COLLEGELID_ID NUMBER,
    INGEZETENE_ID NUMBER
);

CREATE TABLE RAADSLID (
    INGEZETENE_ID NUMBER PRIMARY KEY,
    ACHTERNAAM VARCHAR2(255),
    DATUMAANSTELLING DATE,
    DATUMUITTREDING DATE,
    FRACTIE VARCHAR2(255),
    IS_AANWEZIGE_DEELNEMER_ID NUMBER,
    TITEL VARCHAR2(80),
    VOORNAAM VARCHAR2(255)
);

CREATE TABLE KP_INDNR_RDSSTK (
    KP_INDNR_RDSSTK_ID NUMBER PRIMARY KEY,
    INDIENER_ID NUMBER,
    RAADSSTUK_ID NUMBER
);

CREATE TABLE AGENDAPUNT (
    AGENDAPUNT_ID NUMBER PRIMARY KEY,
    BETREFT_VIDEO_OPNAME_ID NUMBER,
    HEEFT_VERGADERING_ID NUMBER,
    NUMMER NUMBER,
    OMSCHRIJVING CLOB,
    TITEL VARCHAR2(255)
);

CREATE TABLE KP_RDSLD_INGZTN (
    KP_RDSLD_INGZTN_ID NUMBER PRIMARY KEY,
    RAADSLID_ID NUMBER,
    INGEZETENE_ID NUMBER
);

CREATE TABLE KP_RDSLD_RDSCMMSS (
    KP_RDSLD_RDSCMMSS_ID NUMBER PRIMARY KEY,
    RAADSLID_ID NUMBER,
    RAADSCOMMISSIE_ID NUMBER
);

CREATE TABLE KP_RDSSTK_AGNDPNT (
    KP_RDSSTK_AGNDPNT_ID NUMBER PRIMARY KEY,
    RAADSSTUK_ID NUMBER,
    AGENDAPUNT_ID NUMBER
);

CREATE TABLE STEMMING (
    STEMMING_ID NUMBER PRIMARY KEY,
    BETREFT_RAADSSTUK_ID NUMBER,
    HOORT_BIJ_AGENDAPUNT_ID NUMBER,
    RESULTAAT_ENUM_ID NUMBER,
    STEMMINGSTYPE_ENUM_ID NUMBER
);

ALTER TABLE COLLEGELID ADD CONSTRAINT FK_COLLEGELID_GEN_INGEZETENE FOREIGN KEY (INGEZETENE_ID) REFERENCES INGEZETENE (INGEZETENE_ID);
-- Generalization to INGEZETENE

ALTER TABLE RAADSLID ADD CONSTRAINT FK_RAADSLID_GEN_INGEZETENE FOREIGN KEY (INGEZETENE_ID) REFERENCES INGEZETENE (INGEZETENE_ID);
-- Generalization to INGEZETENE

ALTER TABLE NATUURLIJKPERSOON ADD CONSTRAINT FK_NATUURLIJKPERSOON_GEN_RECHTSPERSOON FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- Generalization to RECHTSPERSOON

ALTER TABLE KP_RDSSTK_VRGDRNG ADD CONSTRAINT FK_KP_RDSSTK_VRGDRNG_1 FOREIGN KEY (RAADSSTUK_ID) REFERENCES RAADSSTUK (RAADSSTUK_ID);
-- RAADSSTUK (many-to-many junction, Connector_ID: 1336)

ALTER TABLE KP_RDSSTK_VRGDRNG ADD CONSTRAINT FK_KP_RDSSTK_VRGDRNG_2 FOREIGN KEY (VERGADERING_ID) REFERENCES VERGADERING (VERGADERING_ID);
-- VERGADERING (many-to-many junction, Connector_ID: 1336)

ALTER TABLE KP_RDSSTK_DCMNT ADD CONSTRAINT FK_KP_RDSSTK_DCMNT_1 FOREIGN KEY (RAADSSTUK_ID) REFERENCES RAADSSTUK (RAADSSTUK_ID);
-- RAADSSTUK (many-to-many junction, Connector_ID: 1337)

ALTER TABLE KP_RDSSTK_DCMNT ADD CONSTRAINT FK_KP_RDSSTK_DCMNT_2 FOREIGN KEY (DOCUMENT_ID) REFERENCES DOCUMENT (DOCUMENT_ID);
-- DOCUMENT (many-to-many junction, Connector_ID: 1337)

ALTER TABLE KP_RDSLD_INGZTN ADD CONSTRAINT FK_KP_RDSLD_INGZTN_1 FOREIGN KEY (RAADSLID_ID) REFERENCES RAADSLID (INGEZETENE_ID);
-- RAADSLID (many-to-many junction, Connector_ID: 1338)

ALTER TABLE KP_RDSLD_INGZTN ADD CONSTRAINT FK_KP_RDSLD_INGZTN_2 FOREIGN KEY (INGEZETENE_ID) REFERENCES INGEZETENE (INGEZETENE_ID);
-- INGEZETENE (many-to-many junction, Connector_ID: 1338)

ALTER TABLE KP_RDSLD_RDSCMMSS ADD CONSTRAINT FK_KP_RDSLD_RDSCMMSS_1 FOREIGN KEY (RAADSLID_ID) REFERENCES RAADSLID (INGEZETENE_ID);
-- RAADSLID (many-to-many junction, Connector_ID: 1339)

ALTER TABLE KP_RDSLD_RDSCMMSS ADD CONSTRAINT FK_KP_RDSLD_RDSCMMSS_2 FOREIGN KEY (RAADSCOMMISSIE_ID) REFERENCES RAADSCOMMISSIE (RAADSCOMMISSIE_ID);
-- RAADSCOMMISSIE (many-to-many junction, Connector_ID: 1339)

ALTER TABLE KP_INDNR_RDSSTK ADD CONSTRAINT FK_KP_INDNR_RDSSTK_1 FOREIGN KEY (INDIENER_ID) REFERENCES INDIENER (INDIENER_ID);
-- INDIENER (many-to-many junction, Connector_ID: 1343)

ALTER TABLE KP_INDNR_RDSSTK ADD CONSTRAINT FK_KP_INDNR_RDSSTK_2 FOREIGN KEY (RAADSSTUK_ID) REFERENCES RAADSSTUK (RAADSSTUK_ID);
-- RAADSSTUK (many-to-many junction, Connector_ID: 1343)

ALTER TABLE KP_CLLGLD_INGZTN ADD CONSTRAINT FK_KP_CLLGLD_INGZTN_1 FOREIGN KEY (COLLEGELID_ID) REFERENCES COLLEGELID (INGEZETENE_ID);
-- COLLEGELID (many-to-many junction, Connector_ID: 1347)

ALTER TABLE KP_CLLGLD_INGZTN ADD CONSTRAINT FK_KP_CLLGLD_INGZTN_2 FOREIGN KEY (INGEZETENE_ID) REFERENCES INGEZETENE (INGEZETENE_ID);
-- INGEZETENE (many-to-many junction, Connector_ID: 1347)

ALTER TABLE KP_RDSSTK_AGNDPNT ADD CONSTRAINT FK_KP_RDSSTK_AGNDPNT_1 FOREIGN KEY (RAADSSTUK_ID) REFERENCES RAADSSTUK (RAADSSTUK_ID);
-- RAADSSTUK (many-to-many junction, Connector_ID: 1350)

ALTER TABLE KP_RDSSTK_AGNDPNT ADD CONSTRAINT FK_KP_RDSSTK_AGNDPNT_2 FOREIGN KEY (AGENDAPUNT_ID) REFERENCES AGENDAPUNT (AGENDAPUNT_ID);
-- AGENDAPUNT (many-to-many junction, Connector_ID: 1350)

ALTER TABLE KP_NTRLJKPRSN_RCHTSPRSN ADD CONSTRAINT FK_KP_NTRLJKPRSN_RCHTSPRSN_1 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (RECHTSPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1898)

ALTER TABLE KP_NTRLJKPRSN_RCHTSPRSN ADD CONSTRAINT FK_KP_NTRLJKPRSN_RCHTSPRSN_2 FOREIGN KEY (RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- RECHTSPERSOON (many-to-many junction, Connector_ID: 1898)

ALTER TABLE VIDEO_OPNAME ADD CONSTRAINT FK_VIDEO_OPNAME_BETREFT FOREIGN KEY (BETREFT_VERGADERING_ID) REFERENCES VERGADERING (VERGADERING_ID);
-- BETREFT (1 to 0..*, Connector_ID: 1332)

ALTER TABLE STEMMING ADD CONSTRAINT FK_STEMMING_BETREFT FOREIGN KEY (BETREFT_RAADSSTUK_ID) REFERENCES RAADSSTUK (RAADSSTUK_ID);
-- BETREFT (0..1 to 1, Connector_ID: 1333)

ALTER TABLE VERGADERING ADD CONSTRAINT FK_VERGADERING_HEEFT_VERSLAG FOREIGN KEY (HEEFT_VERSLAG_RAADSSTUK_ID) REFERENCES RAADSSTUK (RAADSSTUK_ID);
-- HEEFT_VERSLAG (0..1 to 0..1, Connector_ID: 1334)

ALTER TABLE VERGADERING ADD CONSTRAINT FK_VERGADERING_HEEFT FOREIGN KEY (HEEFT_RAADSCOMMISSIE_ID) REFERENCES RAADSCOMMISSIE (RAADSCOMMISSIE_ID);
-- HEEFT (0..1 to 0..*, Connector_ID: 1340)

ALTER TABLE INDIENER ADD CONSTRAINT FK_INDIENER_IS FOREIGN KEY (IS_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- IS (0..1 to 0..1, Connector_ID: 1342)

ALTER TABLE INDIENER ADD CONSTRAINT FK_INDIENER_IS_2 FOREIGN KEY (IS_INGEZETENE_ID) REFERENCES INGEZETENE (INGEZETENE_ID);
-- IS (0..1 to 0..1, Connector_ID: 1344)

ALTER TABLE INDIENER ADD CONSTRAINT FK_INDIENER_IS_3 FOREIGN KEY (IS_INGEZETENE_ID) REFERENCES INGEZETENE (INGEZETENE_ID);
-- IS (0..1 to 0..1, Connector_ID: 1346)

ALTER TABLE AGENDAPUNT ADD CONSTRAINT FK_AGENDAPUNT_HEEFT FOREIGN KEY (HEEFT_VERGADERING_ID) REFERENCES VERGADERING (VERGADERING_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1351)

ALTER TABLE STEMMING ADD CONSTRAINT FK_STEMMING_HOORT_BIJ FOREIGN KEY (HOORT_BIJ_AGENDAPUNT_ID) REFERENCES AGENDAPUNT (AGENDAPUNT_ID);
-- HOORT_BIJ (0..* to 0..1, Connector_ID: 1352)

ALTER TABLE RAADSLID ADD CONSTRAINT FK_RAADSLID_IS FOREIGN KEY (IS_AANWEZIGE_DEELNEMER_ID) REFERENCES AANWEZIGE_DEELNEMER (AANWEZIGE_DEELNEMER_ID);
-- IS (0..1 to 0..1, Connector_ID: 1353)

ALTER TABLE AANWEZIGE_DEELNEMER ADD CONSTRAINT FK_AANWEZIGE_DEELNEMER_VERGADERING FOREIGN KEY (VERGADERING_ID) REFERENCES VERGADERING (VERGADERING_ID);
-- unnamed (1 to 0..*, Connector_ID: 1354)

ALTER TABLE AANWEZIGE_DEELNEMER ADD CONSTRAINT FK_AANWEZIGE_DEELNEMER_IS FOREIGN KEY (IS_RECHTSPERSOON_ID) REFERENCES RECHTSPERSOON (RECHTSPERSOON_ID);
-- IS (0..1 to 0..1, Connector_ID: 1355)

ALTER TABLE AANWEZIGE_DEELNEMER ADD CONSTRAINT FK_AANWEZIGE_DEELNEMER_IS_2 FOREIGN KEY (IS_INGEZETENE_ID) REFERENCES INGEZETENE (INGEZETENE_ID);
-- IS (0..1 to 0..1, Connector_ID: 1356)

ALTER TABLE AGENDAPUNT ADD CONSTRAINT FK_AGENDAPUNT_BETREFT FOREIGN KEY (BETREFT_VIDEO_OPNAME_ID) REFERENCES VIDEO_OPNAME (VIDEO_OPNAME_ID);
-- BETREFT (0..1 to 0..*, Connector_ID: 2221)

ALTER TABLE AANWEZIGE_DEELNEMER ADD CONSTRAINT FK_AANWEZIGE_DEELNEMER_ROL_ENUM_ID FOREIGN KEY (ROL_ENUM_ID_DEELNEMERSROL_ENUM_ID) REFERENCES DEELNEMERSROL_ENUM (DEELNEMERSROL_ENUM_ID);
-- ROL_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE STEMMING ADD CONSTRAINT FK_STEMMING_RESULTAAT_ENUM_ID FOREIGN KEY (RESULTAAT_ENUM_ID_STEMMINGSRESULTAATTYPE_ENUM_ID) REFERENCES STEMMINGSRESULTAATTYPE_ENUM (STEMMINGSRESULTAATTYPE_ENUM_ID);
-- RESULTAAT_ENUM_ID (1 to 1, Connector_ID: enum_ref)

ALTER TABLE STEMMING ADD CONSTRAINT FK_STEMMING_STEMMINGSTYPE_ENUM_ID FOREIGN KEY (STEMMINGSTYPE_ENUM_ID_STEMMINGSTYPE_ENUM_ID) REFERENCES STEMMINGSTYPE_ENUM (STEMMINGSTYPE_ENUM_ID);
-- STEMMINGSTYPE_ENUM_ID (1 to 1, Connector_ID: enum_ref)

