Nelly

Aus ProgrammingWiki
Archivierte Version vom 2026-01-31T09:54:14+00:00. Aktuelle Version

Inhaltsverzeichnis

Datenbank - Fitnessstudio

Erstellen und Modellieren von meinem Datenbankprojekt

Ziel der Datenbank

Diese Datenbank dient zur Strukturierung und Verwaltung der Daten eines Fitnessstudios, indem Mitglieder, deren Verträge sowie angebotene Kurse übersichtlich erfasst und miteinander verknüpft werden. Zusätzlich ermöglicht sie durch die Teilnahme Tabelle die Dokumentation, welche Mitglieder an welchen Kursen teilnehmen und unterstützt so Auswertungen und organisatorische Prozesse.

ERM

Nels_Screenshot_2026-01-26_105952.jpg

Erläuterung zur Datenbank: Die Datenbank besteht aus den 3 Entitäten, Mitglied, Vertrag und Kurs. Die Entität Mitglied speichert alle persönlichen und organisatorischen Informationen der Fitnessstudio-Mitglieder. Die Entität Vertrag enthält die Vertragsdaten eines Mitglieds, wie Laufzeit oder monatilicher Beitrag. Zwischen Mitglied und Vertrag besteht eine 1:n Beziehung, da ein Mitglied im Laufe der Zeit mehrere Verträge besitzen kann (Gold, Silber, Bronze Vertragsart) aber ein Vertrag nur einem Mitglied zugeordnet ist. Die Entität Kurs beschreibt die im Fitnessstudio angebotenen Kurse mit Angaben wie Kursname, Trainer oder Termin. Da ein Mitglied mehrere Kurse besuchen kann und ein Kurs von mehreren Mitgliedern besucht wird, besteht zwischen Mitglied und Kurs eine n:m Beziehung. Diese wird durch die Zusatztabelle Teilnahme aufgelößt, welche zusätzlich Informationen wie Teilnahmestatus speichert. Durch die Ergänzung von Teilnahme wird die n:m Beziehung aufgelößt, wodurch die Datenbank übersichtlich, redundantfrei und erweiterbar bleibt.

RM (zu erstellende Tabellen)

  • Mitglied (Mitglied_ID, Vorname, Nachname, Geschlecht, Ort, Straße, Status)
  • Vertrag (Vertrag_ID, Startdatum, Enddatum, Laufzeit, Monatsbeitrag, Mitglied_ID )
  • Kurs (Kurs_ID, Kursname, Trainername, Raum, Wochentag, Uhrzeit)
  • Teilnahme(Mitglied_ID, Kurs_ID)

Erläuterungen wichtiger Begriffe

  1. Entitäten:
    • Mitglied: angemeldete Personen im Fitnessstudio
    • Vertrag: abgeschlossene Mitgliedsverträge (z.B Bronze, Silber, Gold)
    • Kurs: angebotene Fitnesskurse des Studios
  2. Attribute:
    • beschreiben die Eigenschaften einer Entität
    • Mitglied:lle persönlichen und organisatorischen Informationen
    • Vertrag: Vertragsdaten eines Mitglieds, wie Laufzeit oder monatilicher Beitrag
    • Kurs: Angaben wie Kursname, Trainer oder Termin
  3. Primär- und Fremdschlüssel
    • Primärschlüssel identifizieren den Datensatz eindeutig (z.B Mitglied_ID)
    • Mitglied_ID ist im Vertrag als Fremdschlüssel enthalten, um den Vertrag einem Mitglied zuzuordnen
  4. Beziehungen und Kardinalitäten
    • Eine Beziehung beschreibt wie Entitäten miteinander verknüpft sind
    • Kardinalitäten geben an, wie viele Entitäten an der Beziehung beteiligt sind
    • Zwischen Mitglied und Vertrag besteht eine 1:n Beziehung, da ein Mitglied im Laufe der Zeit mehrere Verträge besitzen kann (Gold, Silber, Bronze = Vertragsart) aber ein Vertrag nur einem Mitglied zugeordnet ist
    • Zwischen Mitglied und Kurs eine n:m Beziehung, da ein Mitglied mehrere Kurse besuchen kann und ein Kurs von mehreren Mitgliedern besucht wird
    • die n:m Beziehung wird in einer dritten Tabelle ufgelößt, wodurch die Datenbank übersichtlich, redundantfrei und erweiterbar bleibt

Datenbank

Abfragen

Ausgabe aller Mitglieder mit Vorname und Nachname

SELECT Kursname, Trainername FROM Kurs;

SELECT Vertragsart, Monatsbeitrag FROM Vertrag;

SELECT Mitglied.Vorname, Mitglied.Nachname, Vertrag.Vertragsart FROM Mitglied JOIN Vertrag ON Mitglied.M_ID = Vertrag.Mitglied_ID;

SELECT Mitglied.Vorname, Mitglied.Nachname FROM Mitglied JOIN Teilnahme ON Mitglied.M_ID = Teilnahme.Mitglied_ID JOIN Kurs ON Teilnahme.Kurs_ID = Kurs.Kurs_ID WHERE Kurs.Kursname = 'Yoga';

SELECT Mitglied.Vorname, Mitglied.Nachname, COUNT(Teilnahme.Kurs_ID) AS Anzahl_Kurse FROM Mitglied JOIN Teilnahme ON Mitglied.M_ID = Teilnahme.Mitglied_ID GROUP BY Mitglied.M_ID, Mitglied.Vorname, Mitglied.Nachname HAVING COUNT(Teilnahme.Kurs_ID) > 1;

SELECT Mitglied.Vorname, Mitglied.Nachname, COUNT(DISTINCT Vertrag.Vertragsart) AS Anzahl_Vertragsarten FROM Mitglied JOIN Vertrag ON Mitglied.M_ID = Vertrag.Mitglied_ID GROUP BY Mitglied.M_ID, Mitglied.Vorname, Mitglied.Nachname HAVING COUNT(DISTINCT Vertrag.Vertragsart) >= 2;