CREATE TABLE NIETNATUURLIJKPERSOON (
    NIETNATUURLIJKPERSOON_ID NUMBER PRIMARY KEY,
    DATUMAANVANG DATE,
    DATUMEINDE DATE,
    DATUMUITSCHRIJVING DATE,
    DATUMVOORTZETTING DATE,
    FAXNUMMER VARCHAR2(20),
    INGESCHREVEN NUMBER(1),
    INOPRICHTING NUMBER(1),
    KVKNUMMER VARCHAR2(255),
    NNPID VARCHAR2(255),
    RECHTSVORM VARCHAR2(255),
    RSINNUMMER VARCHAR2(255),
    STATUTAIRENAAM VARCHAR2(255),
    STATUTAIREZETEL VARCHAR2(255),
    WEBSITEURL VARCHAR2(200)
);

CREATE TABLE NATUURLIJKPERSOON (
    NATUURLIJKPERSOON_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 WERKGELEGENHEID (
    WERKGELEGENHEID_ID NUMBER PRIMARY KEY,
    AANTALFULLTIMEMANNEN NUMBER,
    AANTALFULLTIMEVROUWEN NUMBER,
    AANTALPARTTIMEMANNEN NUMBER,
    AANTALPARTTIMEVROUWEN NUMBER,
    GROOTTEKLASSE VARCHAR2(255)
);

CREATE TABLE MAATSCHAPPELIJKEACTIVITEIT (
    MAATSCHAPPELIJKEACTIVITEIT_ID NUMBER PRIMARY KEY,
    ADRESBINNENLAND VARCHAR2(255),
    ADRESCORRESPONDENTIE VARCHAR2(100),
    DATUMAANVANG DATE,
    DATUMEINDEGELDIG DATE,
    DATUMFAILLISEMENT DATE,
    INDICATIEECONOMISCHACTIEF NUMBER(1),
    IS_FUNCTIONARIS_VAN_NATUURLIJKPERSOON_ID NUMBER,
    KVKNUMMER VARCHAR2(255),
    RECHTSVORM VARCHAR2(100),
    RSIN VARCHAR2(255),
    STATUTAIRENAAM VARCHAR2(100),
    TELEFOONNUMMER VARCHAR2(20),
    URL VARCHAR2(100)
);

CREATE TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN (
    KP_NTNTRLJKPRSN_NTRLJKPRSN_ID NUMBER PRIMARY KEY,
    NIETNATUURLIJKPERSOON_ID NUMBER,
    NATUURLIJKPERSOON_ID NUMBER
);

CREATE TABLE VESTIGING (
    VESTIGING_ID NUMBER PRIMARY KEY,
    COMMERCIELEVESTIGING NUMBER(1),
    DATUMAANVANG DATE,
    DATUMEINDE DATE,
    DATUMVOORTZETTING DATE,
    FULLTIMEWERKZAMEMANNEN VARCHAR2(255),
    FULLTIMEWERKZAMEVROUWEN VARCHAR2(255),
    HANDELSNAAM VARCHAR2(255),
    HEEFT_NIETNATUURLIJKPERSOON_ID NUMBER,
    HEEFT_WERKGELEGENHEID_ID NUMBER,
    IS_HOOFDVESTIGING_VAN_MAATSCHAPPELIJKEACTIVITEIT_ID NUMBER,
    PARTTIMEWERKZAMEMANNEN VARCHAR2(255),
    PARTTIMEWERKZAMEVROUWEN VARCHAR2(255),
    TOEVOEGINGADRES VARCHAR2(100),
    TOTAALWERKZAMEPERSONEN VARCHAR2(255),
    UITOEFENING_VAN_ACTIVITEITEN_MAATSCHAPPELIJKEACTIVITEIT_ID NUMBER,
    VERKORTENAAM VARCHAR2(255),
    VESTIGINGSNUMMER VARCHAR2(255)
);

CREATE TABLE CONTACT (
    CONTACT_ID NUMBER PRIMARY KEY,
    BIJ_VESTIGING_ID NUMBER,
    CONTACTSOORT VARCHAR2(80),
    DATUM DATE,
    TEKST CLOB
);

CREATE TABLE HOTEL (
    VESTIGING_ID NUMBER PRIMARY KEY,
    AANTALKAMERS NUMBER
);

CREATE TABLE VERKOOPPUNT (
    VESTIGING_ID NUMBER PRIMARY KEY,
    WINKELFORMULE VARCHAR2(80)
);

CREATE TABLE HOTELBEZOEK (
    HOTELBEZOEK_ID NUMBER PRIMARY KEY,
    DATUMEINDE DATE,
    DATUMSTART DATE,
    HEEFT_VESTIGING_ID NUMBER
);

CREATE TABLE KP_CNTCT_NTRLJKPRSN (
    KP_CNTCT_NTRLJKPRSN_ID NUMBER PRIMARY KEY,
    CONTACT_ID NUMBER,
    NATUURLIJKPERSOON_ID NUMBER
);

CREATE TABLE KP_HTL_VSTGNG (
    KP_HTL_VSTGNG_ID NUMBER PRIMARY KEY,
    HOTEL_ID NUMBER,
    VESTIGING_ID NUMBER
);

CREATE TABLE KP_VRKPPNT_VSTGNG (
    KP_VRKPPNT_VSTGNG_ID NUMBER PRIMARY KEY,
    VERKOOPPUNT_ID NUMBER,
    VESTIGING_ID NUMBER
);

ALTER TABLE HOTEL ADD CONSTRAINT FK_HOTEL_GEN_VESTIGING FOREIGN KEY (VESTIGING_ID) REFERENCES VESTIGING (VESTIGING_ID);
-- Generalization to VESTIGING

ALTER TABLE VERKOOPPUNT ADD CONSTRAINT FK_VERKOOPPUNT_GEN_VESTIGING FOREIGN KEY (VESTIGING_ID) REFERENCES VESTIGING (VESTIGING_ID);
-- Generalization to VESTIGING

ALTER TABLE KP_VRKPPNT_VSTGNG ADD CONSTRAINT FK_KP_VRKPPNT_VSTGNG_1 FOREIGN KEY (VERKOOPPUNT_ID) REFERENCES VERKOOPPUNT (VESTIGING_ID);
-- VERKOOPPUNT (many-to-many junction, Connector_ID: 1253)

ALTER TABLE KP_VRKPPNT_VSTGNG ADD CONSTRAINT FK_KP_VRKPPNT_VSTGNG_2 FOREIGN KEY (VESTIGING_ID) REFERENCES VESTIGING (VESTIGING_ID);
-- VESTIGING (many-to-many junction, Connector_ID: 1253)

ALTER TABLE KP_HTL_VSTGNG ADD CONSTRAINT FK_KP_HTL_VSTGNG_1 FOREIGN KEY (HOTEL_ID) REFERENCES HOTEL (VESTIGING_ID);
-- HOTEL (many-to-many junction, Connector_ID: 1255)

ALTER TABLE KP_HTL_VSTGNG ADD CONSTRAINT FK_KP_HTL_VSTGNG_2 FOREIGN KEY (VESTIGING_ID) REFERENCES VESTIGING (VESTIGING_ID);
-- VESTIGING (many-to-many junction, Connector_ID: 1255)

ALTER TABLE KP_CNTCT_NTRLJKPRSN ADD CONSTRAINT FK_KP_CNTCT_NTRLJKPRSN_1 FOREIGN KEY (CONTACT_ID) REFERENCES CONTACT (CONTACT_ID);
-- CONTACT (many-to-many junction, Connector_ID: 1257)

ALTER TABLE KP_CNTCT_NTRLJKPRSN ADD CONSTRAINT FK_KP_CNTCT_NTRLJKPRSN_2 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1257)

ALTER TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_NTRLJKPRSN_1 FOREIGN KEY (NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- NIETNATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1970)

ALTER TABLE KP_NTNTRLJKPRSN_NTRLJKPRSN ADD CONSTRAINT FK_KP_NTNTRLJKPRSN_NTRLJKPRSN_2 FOREIGN KEY (NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- NATUURLIJKPERSOON (many-to-many junction, Connector_ID: 1970)

ALTER TABLE HOTELBEZOEK ADD CONSTRAINT FK_HOTELBEZOEK_HEEFT FOREIGN KEY (HEEFT_VESTIGING_ID) REFERENCES VESTIGING (VESTIGING_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1254)

ALTER TABLE CONTACT ADD CONSTRAINT FK_CONTACT_BIJ FOREIGN KEY (BIJ_VESTIGING_ID) REFERENCES VESTIGING (VESTIGING_ID);
-- BIJ (0..* to 0..1, Connector_ID: 1256)

ALTER TABLE VESTIGING ADD CONSTRAINT FK_VESTIGING_HEEFT FOREIGN KEY (HEEFT_WERKGELEGENHEID_ID) REFERENCES WERKGELEGENHEID (WERKGELEGENHEID_ID);
-- HEEFT (1 to 0..1, Connector_ID: 1857)

ALTER TABLE VESTIGING ADD CONSTRAINT FK_VESTIGING_IS_HOOFDVESTIGING_VAN FOREIGN KEY (IS_HOOFDVESTIGING_VAN_MAATSCHAPPELIJKEACTIVITEIT_ID) REFERENCES MAATSCHAPPELIJKEACTIVITEIT (MAATSCHAPPELIJKEACTIVITEIT_ID);
-- IS_HOOFDVESTIGING_VAN (0..1 to 0..1, Connector_ID: 1959)

ALTER TABLE VESTIGING ADD CONSTRAINT FK_VESTIGING_UITOEFENING_VAN_ACTIVITEITEN FOREIGN KEY (UITOEFENING_VAN_ACTIVITEITEN_MAATSCHAPPELIJKEACTIVITEIT_ID) REFERENCES MAATSCHAPPELIJKEACTIVITEIT (MAATSCHAPPELIJKEACTIVITEIT_ID);
-- UITOEFENING_VAN_ACTIVITEITEN (0..* to 1, Connector_ID: 1961)

ALTER TABLE MAATSCHAPPELIJKEACTIVITEIT ADD CONSTRAINT FK_MAATSCHAPPELIJKEACTIVITEIT_IS_FUNCTIONARIS_VAN FOREIGN KEY (IS_FUNCTIONARIS_VAN_NATUURLIJKPERSOON_ID) REFERENCES NATUURLIJKPERSOON (NATUURLIJKPERSOON_ID);
-- IS_FUNCTIONARIS_VAN (0..* to 1.., Connector_ID: 1962)

ALTER TABLE VESTIGING ADD CONSTRAINT FK_VESTIGING_HEEFT_2 FOREIGN KEY (HEEFT_NIETNATUURLIJKPERSOON_ID) REFERENCES NIETNATUURLIJKPERSOON (NIETNATUURLIJKPERSOON_ID);
-- HEEFT (1 to 0..*, Connector_ID: 1968)

