diff --git a/report.md b/report.md new file mode 100644 index 0000000..28e54be --- /dev/null +++ b/report.md @@ -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);