Обновить

Комментарии 2

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

Для альбомных композиций очень полезно хранить порядковый номер трека в альбоме — чтобы слушать так, как привыкли слушать на CD. Для многочастных вещей порядковый номер части при прослушивании практически обязателен, как и его строгое соблюдение (если шаффлинг для альбома, например, допустим, то шаффлинг для концерта из 4-х частей абсолютно бессмысленен).

Исполнители относятся к произведениям как многие-ко-многим. Если произведения объединены в альбом, то исполнители обычно определяются для всего альбома — из этого иногда бывают исключения, которые можно смоделировать переопределением набора исполнителей для определенных треков альбома.

Итого, нужно иметь три уровня, к которым может прилагаться валидность подписки и ассоциация с юзером: трек, композиция, альбом. Композиция может состоять из одного и более треков. Альбом может содержать как композиции, так и треки из разных композиций (например, лучшие части струнных концертов Баха)

DRM могут применяться ко всем трем уровням, возможно с исключениями (купить весь альбом, кроме трека XYZ)

My Music тоже удобно сделать с манипуляцией всеми тремя уровнями (удобнее добавлять сразу альбомами) с опциональным набором исключений

Жанр также может быть применен к треку, композиции, или альбому (с переопределением для отдельных композиций или треков)

Правильное моделирование этих особенностей гораздо важнее разных там валидаций корректности ввода email и телефонного номера — ибо учет этих требований и есть учет моделью специфики именно этой предметной области — и основные силы должны быть потрачены именно на него. Общие же вещи — тривиальщина, их можно просто оставить за скобками, просто указав, что стандарнтые поля хранятся и валидируются стандартно.

Выглядит как чья-то курсовая работа средней паршивости...


  1. Первое, что бросилось в глаза, это некорректное моделирование отношения трек — исполнитель. У трека может быть много исполнителей.
  2. Про порядковый номер трека уже написали выше. А ещё альбом может быть двухдисковым.
  3. Пароль с ограничением в 20 символов — это зашквар. Хранить, надеюсь, будете в виде хэша с солью?
  4. Жанров может быть много.

P.S. Классной фичей была бы возможность не терять льготные подписки. Поясню на примере Яндекс.Плюса: есть человек, который платит за семейную подписку каждый месяц. Он покупает Яндекс.Станцию и получает ещё полгода индивидуальной подписки. Чтобы этот льготный период не сгорел, его можно привязать к аккаунту и заморозить, либо конвертировать в семейную подписку.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации