z0ng
@z0ng
Python-developer

Как лучше организовать БД для плейлистов с музыкой?

Практики ради решил сделать на Django простой сервис, с помощью которого человек может составлять плейлисты из своих любимых песен.

Примерная логика работы:
Есть таблица, содержащая названия всех песен всех пользователей, таблица пользователей, таблица с плейлистами всех пользователей. Также есть промежуточная таблица для связи песен с плейлистами.

При регистрации юзера для него создается скрытый плейлист, куда добавляются все его треки (даже если он не выбрал ни одного плейлиста). Когда юзер добавляет трек, которого еще нет в базе, то он добавляется в основную базу треков и через скрытый плейлист привязывается к юзеру. Если трек есть в базе - то просто привязывается к юзеру. На первый взгляд ничего сложного.

Проблемы начались когда стало нужно упорядочить треки по дате добавления для каждого юзера отдельно. Нужно чтобы при выборке треки шли по порядку добавления каждым отдельным юзером, как в общем плейлисте юзера, так и в дочерних.

У меня есть 2 идеи как это сделать:
  1. Добавить поле с датой добавления в скрытый плейлист
  2. Вообще убрать скрытые плейлисты, создать промежуточную таблицу с внешними ключами на пользователя и трек, а также дату добавления


Какой вариант лучше выбрать? Очень важно чтобы выборка работала быстро при большом количестве юзеров, треков и плейлистов.

Спасибо за ответы.
  • Вопрос задан
  • 250 просмотров
Решения вопроса 1
orlov0562
@orlov0562
I'm cool!
Я бы отталкивался от простоты построения запросов на выборку с сортировкой. Как по мне, тут наиболее простой вариант №1, добавить поле с датой в плейлист. Тогда ты просто сможешь делать ORDER BY по индексированному полю без каких-либо дополнительных связей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы