Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/natan-dot-com/rotten-lemons
Database system project about review methods on Spotify
https://github.com/natan-dot-com/rotten-lemons
database database-implementation database-modeling database-schema erm plpgsql postgresql relational-database sql
Last synced: 13 days ago
JSON representation
Database system project about review methods on Spotify
- Host: GitHub
- URL: https://github.com/natan-dot-com/rotten-lemons
- Owner: natan-dot-com
- Created: 2022-04-02T12:48:28.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-07-04T02:13:38.000Z (over 2 years ago)
- Last Synced: 2024-11-03T04:02:46.421Z (13 days ago)
- Topics: database, database-implementation, database-modeling, database-schema, erm, plpgsql, postgresql, relational-database, sql
- Language: PLpgSQL
- Homepage:
- Size: 4.11 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Rotten Lemons
- Gabriel da Cunha Dertoni - 11795717
- Natan Henrique Sanches - 11795680
- Paulo Henrique de Souza Soares - 11884713
- Álvaro José Lopes - 10873365## Descrição do problema e dos requisitos de dados
Um dos principais serviços de *streaming* de músicas utilizados na
atualidade é o *Spotify*, que conta com uma grande variedade e
quantidade de músicas, possuindo também uma grande gama de
funcionalidades. Mesmo assim, algumas funcionalidades demandadas pelos
usuários não estão disponíveis até o momento. Em particular, o *Spotify*
não permite que usuários ou críticos deixem *reviews* em músicas, álbuns
e artistas. Além disso, métodos de *reviews* e classificação são
amplamente utilizados em outras mídias digitais, como no caso dos filmes
e séries (através de plataformas como o *Rotten Tomatoes*). Por conta
disso, existe uma demanda para tal serviço como demonstram publicações e
comentários de usuários do *Spotify* no fórum oficial da plataforma
(*Spofity community*[^1]).O sistema proposto atende à demanda existente permitindo a classificação
e avaliação de músicas, álbuns e artistas da plataforma *Spotify*. Nesse
sistema, o usuário dispõe de um mecanismo de avaliação de cinco
estrelas, abrangendo também *tags* para classificação de acordo com
gênero e temática, além de comentários de livre escrita. Com os dados
das *tags*, serão levantadas estatísticas para a construção automática
de *playlists* tematizadas, com uma gama de músicas fortemente
relacionadas à *tag* escolhida. O usuário também pode se relacionar com
outros usuários da plataforma na forma de seguidor, sendo notificado dos
comentários e avaliações do seguido.## Relacionamento entre entidades do 'mundo real'
Um **usuário** do sistema pode deixar uma **avaliação** (de 1 a 5
estrelas) para **músicas**, escolher ***tags*** classificadoras (como
feliz, triste, nostálgica, etc.) para ela e deixar um **comentário**
(com no máximo 300 caracteres). Cada usuário possui **nome de usuário**,
**sinalizador para críticos** (sim ou não) e um **sinalizador de
cargo**, sendo os cargos: **usuário**, **moderador** e
**administrador**. Os **moderadores** são responsáveis por garantir um
ambiente agradável aos **usuários** e podem remover **avaliações** e
***tags*** que não atendem às diretrizes da comunidade. Já os
**administradores** possuem permissões ainda maiores, podendo gerenciar
o sistema no geral. Além disso, cada **usuário** também possui um
conjunto de informações pessoais, sendo eles **endereço de *e-mail*** e
**idade**. Ademais, **usuários** também podem seguir outros **usuários**
e serão notificados de seus **comentários** e **avaliações**.Um **artista** possui um **nome** e pode publicar vários **álbuns**.
Cada **álbum** possui um **nome** e é composto por um conjunto de
**músicas**. Artistas também podem colaborar na publicação de um
**álbum** conjunto. Além disso, uma **música** pode estar presente em
vários **álbuns**.As ***tags*** são compostas e identificadas pelo seu **nome** e sua
relevância é determinada de acordo com a frequência que são utilizadas
por **música**. Cada **música** pode ser dita fortemente relacionada com
uma ***tag***, se ela foi repetidamente atribuída à **música** por
diferentes **usuários**. Uma ***tag*** gera uma ***playlist*** que será
composta por uma lista de **músicas**.Os **comentários** (com no máximo 300 caracteres) **de** **música**,
**álbum** e **artista** são feitos por **usuários** e possuem
**conteúdo** e **data/hora de publicação**, se relacionando diretamente
com **música**, **álbum** e **artista** respectivamente.## Principais funcionalidades
As funcionalidades são diversas para cada tipo de usuário. Dentre elas,
podemos citar:- **Usuário**
- Inserção, alteração ou remoção de avaliações em músicas, álbuns
e artistas através de um sistema de avaliação cinco estrelas;
- Inserção, alteração ou remoção de *tags* em músicas para
classificação;
- Inserção, alteração ou remoção de comentários de livre escrita
em músicas, álbuns e artistas;
- Seguir outros usuários de preferência;
- Navegação entre as avaliações e os comentários mais recentes de
determinada música, artista ou álbum;
- Pesquisa por determinado usuário, com base em seu nome de
usuário;
- Salvamento de *playlists* através do mecanismo de 'Curtir'.- **Moderador**
- Alteração ou remoção de avaliações, comentários e *tags* que não
sigam as diretrizes da comunidade;
- Banimento e perdão a usuários que descumpram as regras da
comunidade;
- Listagem de usuários banidos;
- Concebimento do sinalizador de crítico para usuários
reconhecidos como tal.- **Administrador**
- Inserção, modificação ou remoção de registros de músicas, álbuns
e artistas;
- Listagem de moderadores;
- Concebimento do cargo de moderador para usuário.## Discussões sobre ciclos
## Diagrama do modelo Entidade-Relacionamento
![Diagrama Entidade-Relacionamento](./Rotten-Lemons-MER.png)[^1]: Pode ser observado em
e