SQL-Kiosk Ticketshop
Ein vollständiges Datenbank-Projekt zur Verwaltung eines Ticketshop-Systems mit MySQL
Projektübersicht
Das SQL-Kiosk Projekt ist eine umfassende Datenbanklösung für ein Ticketshop-System. Es demonstriert fortgeschrittene Datenbank-Konzepte und SQL-Techniken zur Verwaltung von Kunden, Veranstaltungen, Tickets und Bestellungen.
Datenbank-Schema
Das Datenbankschema umfasst folgende Haupttabellen:
📋 kunden
-
KundenID(PK) -
Name,Vorname -
Email,Telefon -
Adresse,Stadt,PLZ
🎭 veranstaltungen
-
VeranstaltungID(PK) -
Name,Beschreibung -
Datum,Uhrzeit -
OrtID(FK),KategorieID(FK)
🎫 tickets
-
TicketID(PK) -
VeranstaltungID(FK) -
Preis,Kategorie -
Verfügbarkeit,Sitzplatz
🛒 bestellungen
-
BestellungID(PK) -
KundenID(FK) -
Bestelldatum,Gesamtpreis -
Status,Zahlungsmethode
🏢 orte
-
OrtID(PK) -
Name,Adresse -
Kapazität,Stadt
📁 kategorien
-
KategorieID(PK) -
Name,Beschreibung
Implementierte SQL-Features
⚙️ Stored Procedures
1. NeueBestellung()
Erstellt eine neue Bestellung mit automatischer Berechnung des Gesamtpreises. Prüft Ticket-Verfügbarkeit und aktualisiert den Bestand.
CALL NeueBestellung(KundenID, TicketID, Anzahl);
2. KundeRegistrieren()
Registriert einen neuen Kunden mit Validierung der E-Mail und Telefonnummer.
CALL KundeRegistrieren(Name, Vorname, Email, Telefon, Adresse, Stadt, PLZ);
3. VeranstaltungSuchen()
Sucht Veranstaltungen nach Kategorie, Datum oder Ort mit flexiblen Suchkriterien.
⚡ Trigger
1. BestandAktualisieren (AFTER INSERT)
Aktualisiert automatisch die Ticket-Verfügbarkeit nach jeder Bestellung.
2. PreisValidierung (BEFORE INSERT/UPDATE)
Stellt sicher, dass Ticketpreise positiv sind und verhindert ungültige Werte.
3. BestellungLog (AFTER UPDATE)
Protokolliert alle Änderungen an Bestellungen für Audit-Zwecke.
🔍 Komplexe Queries
Umsatzanalyse pro Veranstaltung
SELECT v.Name, COUNT(b.BestellungID) AS AnzahlBestellungen,
SUM(b.Gesamtpreis) AS Gesamtumsatz
FROM veranstaltungen v
JOIN tickets t ON v.VeranstaltungID = t.VeranstaltungID
JOIN bestellungen b ON t.TicketID = b.TicketID
GROUP BY v.VeranstaltungID
ORDER BY Gesamtumsatz DESC;
Top-Kunden nach Bestellwert
SELECT k.Name, k.Vorname, COUNT(b.BestellungID) AS Bestellungen,
SUM(b.Gesamtpreis) AS Gesamtwert
FROM kunden k
JOIN bestellungen b ON k.KundenID = b.KundenID
GROUP BY k.KundenID
HAVING Gesamtwert > 100
ORDER BY Gesamtwert DESC
LIMIT 10;
Verfügbare Tickets mit Veranstaltungsdetails
SELECT v.Name, v.Datum, o.Name AS Ort,
t.Kategorie, t.Preis, t.Verfügbarkeit
FROM tickets t
JOIN veranstaltungen v ON t.VeranstaltungID = v.VeranstaltungID
JOIN orte o ON v.OrtID = o.OrtID
WHERE t.Verfügbarkeit > 0 AND v.Datum >= CURDATE()
ORDER BY v.Datum ASC;
Technische Umsetzung
🗄️ Datenbank-Design
- ✓ Normalisierung bis 3. Normalform (3NF)
- ✓ Referentielle Integrität mit Foreign Keys
- ✓ Indizes für Performance-Optimierung
- ✓ Check Constraints für Datenvalidierung
⚙️ Automatisierung
- ✓ Stored Procedures für Geschäftslogik
- ✓ Trigger für automatische Updates
- ✓ Views für vereinfachte Abfragen
- ✓ Transaktionen für Datenkonsistenz
🔐 Sicherheit
- ✓ Benutzer-Rollen und Berechtigungen
- ✓ Input-Validierung in Stored Procedures
- ✓ Audit-Logs für Änderungsverfolgung
- ✓ Backup-Strategie implementiert
Hauptfunktionen
Kundenverwaltung
Vollständige Verwaltung von Kundendaten mit Validierung und Duplikatsprüfung
Veranstaltungen
Flexible Veranstaltungsverwaltung mit Kategorien, Orten und Zeitplanung
Ticketverwaltung
Automatische Bestandsverwaltung mit Kategorien und Preisstufen
Bestellsystem
Komplettes Bestellmanagement mit Status-Tracking und Zahlungsabwicklung
Reporting
Umfangreiche Reports und Analysen für Umsatz, Kunden und Veranstaltungen
Automatisierung
Trigger und Procedures für automatische Prozesse und Validierungen
Verwendete Technologien
Gelernte Konzepte
Dieses Projekt demonstriert ein tiefes Verständnis von Datenbank-Design und SQL-Entwicklung:
📐 Datenbankdesign
- Entity-Relationship-Modellierung (ERM)
- Normalisierung und Denormalisierung
- Primär- und Fremdschlüssel
- Indizes und Performance
💻 SQL-Entwicklung
- Komplexe JOIN-Operationen
- Aggregatfunktionen und GROUP BY
- Subqueries und CTEs
- Window Functions
⚙️ Automatisierung
- Stored Procedures mit Parametern
- Trigger für Event-Handling
- Error Handling und Validierung
- Transaktionsmanagement
Weitere Projekte entdecken
Schaue dir meine anderen Projekte an oder kontaktiere mich für eine Zusammenarbeit.