You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.4 KiB
59 lines
2.4 KiB
### База данных Музыкального приложения
|
|
|
|
## 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);
|
|
|