parent
0406c81072
commit
38370fa55c
@ -0,0 +1,59 @@ |
|||||||
|
### База данных Музыкального приложения |
||||||
|
|
||||||
|
## I |
||||||
|
Будем разрабатывать базу данных для _упрощённого_ музыкального приложения, |
||||||
|
похожего на Spotify/YouTube Music/iTunes со следующей функциональностью: |
||||||
|
|
||||||
|
+ пользовательские плейлисты; |
||||||
|
+ поиск аудиотреков; |
||||||
|
+ оформление платной подписки; |
||||||
|
|
||||||
|
Функциональность, которую мы точно не будем реализовывать |
||||||
|
- стриминг аудиотреков; |
||||||
|
- пользовательские рекомендации(?); |
||||||
|
|
||||||
|
## II |
||||||
|
|
||||||
|
Специфичные ограничения: |
||||||
|
- обязателен учёт пользователей (_например, с помощью какого-то числового |
||||||
|
идентификатора_); |
||||||
|
- для каждого трека должна быть сохранена следующая инфа: |
||||||
|
- UPS (исполнитель) |
||||||
|
- ISRC (год+страна записи) |
||||||
|
- название трека |
||||||
|
- исполнитель |
||||||
|
- [опционально] текст трека |
||||||
|
- [опционально] жанр |
||||||
|
- [опционально] язык(и?) (_а сколько языков есть? можно ли их |
||||||
|
описать в отдельной таблице?_) |
||||||
|
- про плейлисты хорошо бы тоже хранить информацию: |
||||||
|
- название; |
||||||
|
- открытый или нет; |
||||||
|
- [опционально] описание; |
||||||
|
- [опционально] ссылка на обложку; |
||||||
|
|
||||||
|
Обязателен учёт следующих связей: |
||||||
|
- пользователь <-> плейлисты |
||||||
|
- плейлисты <-> набор треков |
||||||
|
- пользователь <-> токен платной подписки |
||||||
|
|
||||||
|
## III |
||||||
|
|
||||||
|
- playlist |
||||||
|
- `id`: integer(?) -- id; |
||||||
|
- `name`: varchar(100) -- имя плейлиста; |
||||||
|
- `is_open`: boolean -- открытый или нет; |
||||||
|
- `desc`: text -- описание; |
||||||
|
- `cover_link`: text(url?) -- ссылка на обложку; |
||||||
|
|
||||||
|
- `user_to_playlist` |
||||||
|
- `user_id`: integer(?); |
||||||
|
- `playlist_id`: integer(?); |
||||||
|
|
||||||
|
- `playlist_to_tracks:` |
||||||
|
- `playlist_id`: integer(?); |
||||||
|
- `track_id`: integer(?); |
||||||
|
|
||||||
|
- `user_to_payment_token` |
||||||
|
- `user_id`: integer(?); |
||||||
|
- `token`: char(80); |
Loading…
Reference in new issue