Mariella

Aus ProgrammingWiki
Archivierte Version vom 2026-02-03T17:37:32+00:00. Aktuelle Version

Inhaltsverzeichnis

Musikdienst Spotify

Ziel der Datenbank

Spotify ist ein digitaler Streamingdienst für Musik, Podcasts und Videos, mit dem du Zugriff auf Millionen Songs und andere Inhalte von kreativen Köpfen aus der ganzen Welt hast.
Der Sinn dieser Datenbank ist die strukturierte Speicherung, Verwaltung und Auswertung von Nutzern, Songs und Playlists, um Musikinhalte effizient zu gestalten und die personalisierte Nutzung zu ermöglichen.'''

Modellierung in einem ER-Modell

Mariella_Screenshot_2026-01-21_103301.png

Transformation in das Relationenmodell

Kardinalitäten:
Ein Song gehört zu mehreren Playlists. Zu einer Playlist gehören mehrere Songs. 
Ein Nutzer erstellt mehrere Playlists. Eine Playlist wird von einem Nutzer erstellt.
Ein Nutzer hört mehrere Songs. Ein Song wird von mehreren Nutzern gehört.
Im vorliegenden Datenbankmodell entstehen genau zwei Relationstabellen durch die Umwandlung von m:n-Beziehungen aus dem ER-Modell ins Relationenmodell:
Die Tabelle Playlistinhalt realisiert die m:n-Beziehung zwischen Song und Playlist. 
Die Tabelle Hörerverlauf realisiert die m:n-Beziehung zwischen Nutzer und Song (unter Berücksichtigung des Zeitpunkts).
Alle übrigen Beziehungen sind 1:n-Beziehungen und werden lediglich durch Fremdschlüssel abgebildet, ohne eigene Tabellen zu erzeugen.
Normalformen sind Regeln zur Strukturierung von Datenbanken. Sie verhindern doppelte Daten und Probleme beim Speichern, Ändern oder Löschen.
In meinem Modell sind alle drei Normalformen erfüllt.
  • Song (Song_ID, Artist, Titel, Länge, Album)
  • Nutzer (Nutzer_ID, Nutzername, Follower, Premium)
  • Playlist (Playlist_ID, Erstellungsdatum, Name)
  • zugehören -> Playlistinhalt (Song_ID, Playlist_ID, Position)
  • hören -> Hörerverlauf (Nutzer_ID, Song_ID, Datum, Uhrzeit, Gerät)

Alle Songs, die die Playlist Chill Vibes für Sonntage beinhält

Die Länge der Playlist Workout Motivation (in Sekunden) ermitteln => So lang sollte das Workout gehen ;)

Der meistgehörte Song (wird wichtig für Spotify-Awards)

Die meistgehörten Songs von PartyQueen => Spotify-Wrapped

Ausgabe der beliebtesten Geräte zum Abspielen

Kritische Reflexion und Vorgehensweise

Mein Ziel war es, die Funktionsweise der App Spotify möglichst genau nachzustellen. Dabei muss man allerdings sagen, dass Spotify weit aus komplexer ist und über viel mehr Funktionen, Songs bzw. weiteren Inhalten verfügt. Das war in der gegebenen Zeit allerdings nicht umsetzbar. Deshalb ist die gezeigte Datenbank schlichtweg eine Vereinfachung zur Veranschaulichung. Mögliche Erweiterungen könnten u.a. in Tabellen für Artists, Albums oder Genres erscheinen, welche das Modell immer näher an die Realität anpassen würden. Bei der Erstellung des gesamten Modells habe ich mir zunächst Gedanken über das ERM und die dazugehörigen Kardinalitäten gemacht. Daraufhin war es für mich wichtig, direkt festzulegen, was die Tabellen darstellen, die bei n:m Kardinalitäten aus Relationen entstehen. Außerdem habe ich in meiner Spotify-App nach Eigenschaften gesucht, die später Attribute wurden. Bei dem Umschreiben in das RM fiel mir auf, dass ich im ERM bei der Entität „Song“ das Attribut „Titel“ vergessen habe. Dieses habe ich beim Fortfahren einfach ergänzt, damit die Abfragen bzw. deren Ausgaben später auch Sinn ergeben. Außerdem habe ich die Attribute des Playlistinhalts noch verändert, da es sinnvoller war, die Dauer später ausrechnen zu lassen und dafür die Position der Songs direkt anzugeben. Für das Programmieren habe ich mich an gegebenen Seiten (Learningview-> SQL-Codes, Programmingwiki -> bereits erstellte Tabellen wie Bibliothek) und fertiggestellten Seiten aus vergangenen Jahren orientiert. Für eine kreative Songauswahl bzw. Namensgebung habe ich künstliche Intelligenz hinzugezogen, um Zeit zu sparen, in der man ewig überlegen bzw. suchen würde. Bevor ich die Ausgaben in meiner Seite eingefügt habe, habe ich diese auf der zur Verfügung gestellten Übungsseite auf ihre Funktion getestet. Die Ideen dafür kamen mir durch meine eigene Spotify-Nutzung bzw. mein Wissen über diese App. Gesamt kann man sagen, dass SQL das Darstellen und Abfragen von Datensätzen stark vereinfacht und bei der Nutzung hilft. Allerdings benötigt es eine strukturierte und durchdachte Planung von Anfang an. Bei diesen umfangreichen Projekten wie Spotify kann das sehr viel Zeit beanspruchen. Mir persönlich hat es aber den Umgang mit SQL sehr verbildlicht und alltäglicher gemacht, wodurch ich die gesamten Abläufe des Programmierens besser verstehe und selbst anwenden kann.


Quellen

https://support.spotify.com/de/article/what-is-spotify/ https://hsqldb.org/doc/guide/sqlgeneralchapt.html