Spotify
Comprehensive database schema for a Spotify-like music streaming platform covering artist profiles, album releases, track catalog with audio features, user-curated and editorial playlists, social following, listening history, liked songs, podcast integration, device management, and listening queue.
musicstreamingplaylistpodcastsocial
MySQL9 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique user account identifier
User login email address
Bcrypt hashed password
User's public display name
Profile photo URL
ISO country code for content availability
Subscription plan: free or premium
Account registration timestamp
Last profile update timestamp
IXUQCK|💬
MySQL9 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique artist identifier
Artist or band display name
Artist biography text
Artist profile image URL
Artist header banner image URL
Monthly unique listener count
Whether artist is verified on platform
Artist profile creation timestamp
Last update timestamp
IXUQCK|💬
MySQL5 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique artist-user link identifier
Artist being managed
User account linked to this artist
Role within artist: owner or member
Link creation timestamp
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique genre identifier
Genre display name e.g. Pop, Rock, Jazz
URL-friendly genre identifier
Genre creation timestamp
IXUQCK|💬
MySQL10 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique album identifier
Primary artist who released the album
Album title
Release type: album, single, ep, compilation
Album artwork image URL
Official release date
Record label name
Total number of tracks
Album record creation timestamp
Last update timestamp
IXUQCK|💬
MySQL11 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique track identifier
Track display title
Main performing artist
Track duration in milliseconds
Track number on the album
Whether track contains explicit content
30-second preview audio URL
Full audio stream URL for premium users
Popularity score 0-100 based on play counts
Track record creation timestamp
Last update timestamp
IXUQCK|💬
MySQL6 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique album-track junction identifier
Album containing the track
Track in the album
Disc number for multi-disc albums
Track position on disc
Record creation timestamp
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique track-genre junction identifier
Track being categorized
Genre assigned to the track
Record creation timestamp
IXUQCK|💬
MySQL12 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique audio features record identifier
Track these features belong to
Estimated tempo in BPM
Energy level 0.0-1.0, measure of intensity
Danceability score 0.0-1.0
Musical positiveness score 0.0-1.0
Acousticness confidence 0.0-1.0
Instrumentalness prediction 0.0-1.0
Presence of spoken words 0.0-1.0
Musical key 0=C, 1=C#, ... 11=B
Modality: 1=major, 0=minor
Estimated beats per bar 3-7
IXUQCK|💬
MySQL11 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique playlist identifier
User who owns this playlist
Playlist display name
Playlist description text
Custom playlist cover image URL
Whether playlist is publicly visible
Whether others can add tracks
Total number of tracks in playlist
Number of users following this playlist
Playlist creation timestamp
Last modification timestamp
IXUQCK|💬
MySQL6 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique playlist track entry identifier
Playlist containing the track
Track added to playlist
User who added the track
Track ordering position within playlist
When track was added to playlist
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique liked song record identifier
User who liked the song
Liked track
When user liked the song
IXUQCK|💬
MySQL7 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique listening event identifier
User who listened
Track that was played
Timestamp when playback started
Milliseconds actually listened before skip
Playback context type: playlist, album, artist, search
ID of the context entity (playlist_id, album_id, etc.)
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique artist follow record
User following the artist
Artist being followed
When user followed the artist
IXUQCK|💬
MySQL4 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique playlist follow record
User following the playlist
Followed playlist
When user followed the playlist
IXUQCK|💬
MySQL9 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique podcast identifier
User or creator account who publishes this podcast
Podcast display title
Podcast description and synopsis
Podcast cover artwork URL
Primary spoken language code
Total published episode count
Podcast record creation timestamp
Last update timestamp
IXUQCK|💬
MySQL9 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique podcast episode identifier
Podcast this episode belongs to
Episode title
Episode description and show notes
Audio stream URL for the episode
Episode duration in milliseconds
Sequential episode number
When episode was published
Record creation timestamp
IXUQCK|💬
MySQL8 cols
Num
PK
AI
FK
Null
Physical Name
Type
Default
Comment
Unique device identifier
User who owns this device
Device display name e.g. Home Speaker, iPhone
Device type: computer, smartphone, speaker, tv
Whether this device is currently playing
Current volume level 0-100
Last time device was seen active
Device registration timestamp
IXUQCK|💬
Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
Created with ERD Studio
Tables in this template
usersUsers
9 colsartistsArtists
9 colsartist_membersArtist Members
5 colsgenresGenres
4 colsalbumsAlbums
10 colstracksTracks
11 colsalbum_tracksAlbum Tracks
6 colstrack_genresTrack Genres
4 colstrack_featuresTrack Features
12 colsplaylistsPlaylists
11 colsplaylist_tracksPlaylist Tracks
6 colsliked_songsLiked Songs
4 colslistening_historyListening History
7 colsfollows_artistsFollows Artists
4 colsfollows_playlistsFollows Playlists
4 colspodcastsPodcasts
9 colspodcast_episodesPodcast Episodes
9 colsdevicesDevices
8 colsRelated Templates
View all templates →GitHub
CloneCode hosting platform with repositories, issues, pull requests, and CI/CD
PostgreSQL16 tables
developer-toolsgitcollaboration+2
Web App
Netflix
CloneVideo streaming platform with content catalog, profiles, subscriptions, and recommendations
PostgreSQL15 tables
streamingvideosubscription+2
Web App
Discord
CloneCommunity platform with servers, channels, roles, voice, and bots
PostgreSQL15 tables
gamingcommunityvoice+2
Web App
Slack
CloneTeam messaging platform with workspaces, channels, threads, and integrations
PostgreSQL14 tables
messagingcollaborationteam+2
Web App