← Back to projects

Spotify DBMS

A music streaming database app with user and admin roles.

MySQLReact.jsJavaScript
Spotify DBMS screenshot

The problem

A music catalogue is highly relational (artists, albums, tracks, users). The goal was a working application on a properly designed schema, with sign-in, search and admin controls.

Approach

  • Designed a relational schema for users, artists, albums and tracks with primary and foreign keys.
  • Built sign-up and sign-in with validation: matching passwords, no future dates of birth, no duplicate emails.
  • Added search by title, artist, album, genre and release year, combinable in one query, plus a top-25 songs view.
  • Added an admin dashboard to add and remove artists, albums and tracks, with integrity checks and cascading deletes.

Results

  • A complete user and admin flow on a normalised MySQL schema.
  • Referential integrity enforced for every add and remove operation.

At a glance

Database schema

Users

  • User_IDPK
  • User_Name
  • DOB
  • Emailunique
  • Password

Artist

  • Artist_IDPK
  • Name
  • Bio
  • Genre

Albums

  • Album_IDPK
  • Name
  • Artist_IDFK
  • Genre
  • Release_Date

Tracks

  • Track_IDPK
  • Title
  • Album_IDFK
  • Duration
  • Popularity
  • PlayCount
  • • One artist has many albums.
  • • One album has many tracks.

Tables and keys from the project README.