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.
minor-sql-2022/report.md

60 lines
2.4 KiB

2 years ago
### База данных Музыкального приложения
## 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);