PMG2224 1/DB Beleg/Camillo

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
= DBMS zum Veranstaltungsmanagement =

== Ziel der Datenbank ==

Das Ziel dieses Datenbankmanagementsystems für ein Veranstaltungsmanagementsystem ist es, eine effiziente und organisierte Methode zur Verwaltung von Veranstaltungen zu bieten. Es ermöglicht die Speicherung und Abfrage von Daten zu Veranstaltungen, Veranstaltern, Teilnehmern, Tickets und Sponsoren. Mit diesem System können Benutzer Informationen über verschiedene Veranstaltungen abrufen, die Details der Teilnehmer verwalten, Tickets für Veranstaltungen ausstellen und die Beiträge von Sponsoren verfolgen. Es erleichtert auch die Verknüpfung von Veranstaltungen mit ihren jeweiligen Veranstaltern und Sponsoren.

== Modellierung in einem ERM ==

[[Bild:Camillo_Image.png]]

== Transformation in das Relationenmodell ==

 Veranstalter(<u>VeranstalterID</u>, Name, Adresse, Telefonnummer)
 Veranstaltungen(<u>VeranstaltungsID</u>, Name, Datum, Ort, VeranstalterID)
 Teilnehmer(<u>TeilnehmerID</u>, Name, Email)
 Tickets(<u>TicketID</u>, VeranstaltungsID, TeilnehmerID, Preis)
 Sponsoren(<u>SponsorID</u>, Name, Betrag)
 Veranstaltung_Sponsor(<u>VeranstaltungsID</u>, SponsorID)

== Erstellen der DB (Struktur/notwendige Datensätze) ==

<code id="65bca1ef36650">
CREATE TABLE Veranstaltungen (
    VeranstaltungsID INT PRIMARY KEY,
    Name VARCHAR(100),
    Datum DATE,
    Ort VARCHAR(255),
    VeranstalterID INT,
    FOREIGN KEY (VeranstalterID) REFERENCES Veranstalter(VeranstalterID)
);

CREATE TABLE Veranstalter (
    VeranstalterID INT PRIMARY KEY,
    Name VARCHAR(100),
    Adresse VARCHAR(255),
    Telefonnummer VARCHAR(15)
);

CREATE TABLE Teilnehmer (
    TeilnehmerID INT PRIMARY KEY,
    Name VARCHAR(100),
    Email VARCHAR(255)
);

CREATE TABLE Tickets (
    TicketID INT PRIMARY KEY,
    VeranstaltungsID INT,
    TeilnehmerID INT,
    Preis DECIMAL(5,2),
    FOREIGN KEY (VeranstaltungsID) REFERENCES Veranstaltungen(VeranstaltungsID),
    FOREIGN KEY (TeilnehmerID) REFERENCES Teilnehmer(TeilnehmerID)
);

CREATE TABLE Sponsoren (
    SponsorID INT PRIMARY KEY,
    Name VARCHAR(100),
    Betrag DECIMAL(7,2)
);

CREATE TABLE Veranstaltung_Sponsor (
    VeranstaltungsID INT,
    SponsorID INT,
    FOREIGN KEY (VeranstaltungsID) REFERENCES Veranstaltungen(VeranstaltungsID),
    FOREIGN KEY (SponsorID) REFERENCES Sponsoren(SponsorID),
    PRIMARY KEY (VeranstaltungsID, SponsorID)
);
</code>


----

<code id="65c5d16b3fb56">
INSERT INTO Veranstaltungen VALUES (1, 'Freiluftkonzert', '22-02-24', 'Dresden', 1);
INSERT INTO Veranstaltungen VALUES (2, 'Szenische Lesung', '28-02-24', 'Kamenz', 2);
INSERT INTO Veranstaltungen VALUES (3, 'Freiluftkonzert', '01-03-24', 'Dresden', 1);

INSERT INTO Veranstalter VALUES (1, 'Dresdner Philharmonie', 'Schlossstraße 2 Dresden', 12345678);
INSERT INTO Veranstalter VALUES (2, 'Leseclub Kamenz', 'Hauptstraße 12 Kamenz', 87654321);
INSERT INTO Veranstalter VALUES (3, 'Deutsch-sorbisches Volkstheather Bautzen', 'Theaterplatz 1 Bautzen', 18273645);

INSERT INTO Teilnehmer VALUES (1, 'Ad Rian', 'rianad@jan.is');
INSERT INTO Teilnehmer VALUES (2, 'Wol Tär', 'woltaer123@pmg-bautzen.lernsax.de');
INSERT INTO Teilnehmer VALUES (3, 'Deez Who', 'illegal@gmail.com');

INSERT INTO Tickets VALUES (1, 1, 1, 90.00);
INSERT INTO Tickets VALUES (2, 2, 2, 00.00);
INSERT INTO Tickets VALUES (3, 3, 2, 40.00);

INSERT INTO Sponsoren VALUES (1, 'Hallsonde Gesellschaft', 800.00);
INSERT INTO Sponsoren VALUES (2, 'Kompression INC.', 1200.00);
INSERT INTO Sponsoren VALUES (3, 'DOS GmbH', 2.00);

INSERT INTO Veranstaltung_Sponsor VALUES (1, 1);
INSERT INTO Veranstaltung_Sponsor VALUES (2, 2);
INSERT INTO Veranstaltung_Sponsor VALUES (3, 1);
INSERT INTO Veranstaltung_Sponsor VALUES (3, 3);
</code>

== Erstellen von verschiedenen Abfragen ==

'''Alle Teilnehmer ausgeben'''
<run id="65e184b911c93">
SELECT * FROM Teilnehmer;
</run>

----

'''Alle Veranstaltungen am 22.02.2024 ausgeben'''
<run id="65e184b911ce4">
SELECT * FROM Veranstaltungen WHERE Datum='22-02-24'; 
</run>

----

'''Email aller Teilnehmer, die ein Ticket im Wert von über 50 € besitzen, ausgeben'''
<run id="65e184b911d30">
SELECT Teilnehmer.Email FROM Teilnehmer, Tickets WHERE Teilnehmer.TeilnehmerID = Tickets.TeilnehmerID AND Tickets.Preis > 50;
</run>

----
'''Alle Sponsoren mit einem Spendenwert zwischen 700 € und 1000 € ausgeben'''
<run id="65eab6e17f751">
SELECT Name FROM Sponsoren WHERE 700 < Betrag AND Betrag < 1000;
</run>

----

'''Alle Veranstaltungen mit mehr als einem Sponsor ausgeben'''
<run id="65eab16fe3982">
SELECT V.Name, V.Datum FROM Veranstaltungen V WHERE (SELECT COUNT(*) FROM Veranstaltung_Sponsor VS WHERE V.VeranstaltungsID = VS.VeranstaltungsID) > 1;
</run>

== Kritische Reflexion zu Modellierung und Umsetzung ==

Das DBMS stellt eine realistische und praktische Anwendung von SQL dar, die es ermöglicht, Datenbank-Konzepte umzusetzen. Das DBMS ist komplex genug, um eine Vielzahl von SQL-Konzepten und -Techniken zu demonstrieren, einschließlich Tabellenerstellung, Beziehungen, Primär- und Fremdschlüssel und komplexe Abfragen. Darüber hinaus stellt das DBMS eine Reihe von Problemen dar, die gelöst werden müssen, wie z.B. das Verwalten von Beziehungen zwischen Tabellen und das Durchführen komplexer Abfragen.

Allerdings hat dieses DBMS auch seine Grenzen. Es ist ein vereinfachtes Modell und erfüllt nicht alle Anforderungen eines realen Veranstaltungsmanagementsystems. Beispielsweise fehlen Funktionen zur Verwaltung von Mitarbeiterdaten, zur Verfolgung von Veranstaltungskosten oder zur Durchführung von Marketingaktivitäten. 

== Verwendete Tools ==

* ERDplus