An online music streaming platform with the following features :
- Music divided by genres, artists, albums etc.
- Option to create your playlist
- Option to search music based on various filters like genre,language etc.
- Recently played songs
- Git : Code management
- Sqlite : DBMS
- Python3 : Mostly Backend, may be with CGI
- HTML5, CSS3 and Javascript : Frontend
- Inkscape : Drawing E-R Diagrams
A mini project with the following goals :
- Using multiple tables to store different kinds of data
- Using different types of relations
- Using a variety of relational concepts like joins,indexes, intersect etc.
- Maintaining efficient queries
- Implementing advanced SQL concepts to better use and store the data
- Login
- Personal playlist
- Recently played
- Bookmarked/Favourites list
- Listen or Buy songs
- Developer and User mode
STD: Relation names begin with capital letter Column names begin with small letter and separated by underscore in case of composite name
-
UserProfile
(user_id(PK), username, first_name, last_name, date_of_birth, city(FK), state(FK), favourites(multivalued attribue)) -
Credentials
(user_id(FK), username(FK), MD5hash of password) -
Songs
(song_id(PK), name, singer, film/album, genre, duration, price, popularity/rating, url, copies_sold) -
Playlist
(user_id, song_id) -
FavouriteGenres
(user_id(FK), genre) -
Quotes
(quote_id, quote, personality) -
ActiveUsers
(user_id(FK)) --> View using Union -
InactiveUsers
(user_id(FK)) --> View using difference -
Places
(city_name(PK),state_name(FK)) -
States
(state_name(PK)) -
SongTags
(song_id int(20)(FK), tag TEXT)
PS: Popularity is an integer value for the number of times played.
Favourites
--> language or user_id
Profile
--> state
Songs
--> name, singer, genre, language, duraition, popularity
Active users are those who have either listened to a song within last week.
Join UserProfile
with FavouriteGenres
and get the details of person
InactiveUsers
= All users - Active users