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

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);