DROP DATABASE IF EXISTS jugendgruppe;
CREATE DATABASE jugendgruppe;
USE jugendgruppe;

CREATE TABLE Ort
(
    OrtID INT AUTO_INCREMENT,
    PLZ INT,
    Ort VARCHAR(50),
    PRIMARY KEY(OrtID)
);

CREATE TABLE Person
(
    PersonID INT AUTO_INCREMENT,
    Name VARCHAR(50),
    Vorname VARCHAR(50),
    Anschrift VARCHAR(50),
    OrtID INT,
    Betreuer BOOL,
    PRIMARY KEY(PersonID),
    FOREIGN KEY(OrtID) REFERENCES Ort(OrtID)
);

CREATE TABLE VeranstaltungsKategorie
(
    KatID INT AUTO_INCREMENT,
    Name VARCHAR(50),
    PRIMARY KEY(KatID)
);

CREATE TABLE Veranstaltung
(
    VeranstaltungID INT AUTO_INCREMENT,
    Kategorie INT,
    Startdatum DATE,
    Enddatum DATE,
    Bezeichnung VARCHAR(50),
    PRIMARY KEY(VeranstaltungID),
    FOREIGN KEY(Kategorie) REFERENCES VeranstaltungsKategorie(KatID)
);

CREATE TABLE MedInformation
(
    MedID INT AUTO_INCREMENT,
    Beschreibung VARCHAR(50),
    PRIMARY KEY(MedID)
);

CREATE TABLE VeranstaltungsTeilnahme
(
    Teilnehmer INT,
    Veranstaltung INT,
    Erlaubnis BOOL,
    PRIMARY KEY(Teilnehmer, Veranstaltung),
    FOREIGN KEY(Teilnehmer) REFERENCES Person(PersonID),
    FOREIGN KEY(Veranstaltung) REFERENCES Veranstaltung(VeranstaltungID)
);

CREATE TABLE VeranstaltungVorkommnisse
(
    VorkommnisID INT AUTO_INCREMENT,
    Teilnehmer INT,
    Veranstaltung INT,
    Vorkommnis VARCHAR(150),
    PRIMARY KEY(VorkommnisID),
    FOREIGN KEY(Teilnehmer) REFERENCES Person(PersonID),
    FOREIGN KEY(Veranstaltung) REFERENCES Veranstaltung(VeranstaltungID)
);

CREATE TABLE MedInfoZuTeilnehmer
(
    Teilnehmer INT,
    MedInfo INT,
    PRIMARY KEY(Teilnehmer, MedInfo),
    FOREIGN KEY(Teilnehmer) REFERENCES Person(PersonID),
    FOREIGN KEY(MedInfo) REFERENCES MedInformation(MedID)
);

CREATE TABLE VeranstaltungsBetreuer
(
    Betreuer INT,
    Veranstaltung INT,
    Leiter BOOL,
    PRIMARY KEY(Betreuer, Veranstaltung),
    FOREIGN KEY(Betreuer) REFERENCES Person(PersonID),
    FOREIGN KEY(Veranstaltung) REFERENCES Veranstaltung(VeranstaltungID)
);
    
    