Второй вариант, который вы описали, будет моим предпочтением.Он корректно моделирует отношения, которые вы описываете на уровне базы данных, и должен быть более понятным и в коде.
Если вам действительно не нравится идея добавления записи при каждом прослушивании трека, вы можете простодобавьте запись при первом прослушивании для каждого пользователя и включите в нее счетчик, который увеличивается при последовательном прослушивании.Тем не менее, я думаю, что это хуже, так как это будет трудно расширить позже;например, если вы хотите отслеживать даты прослушивания.Вы также должны проявить особую осторожность, если счетчик увеличивается в параллельных ситуациях.