Hi!

I'm trying to think in CouchDB documents (coming from an SQL
perspective) and I am wondering how I should set up my documents to
represent the following.

I have users who play songs as often as they want. Whenever they
access a song, in the SQL world I add a record to a song_access table
that stores user id, song id and date/time. And there are of course a
users and a songs table.

In the CouchDB world, I find it reasonable to have both a User
document and Song document. But where should I store song accesses?

- Should it be on the User as a dict of song_id and timestamp (or vice versa),
- or should ie be on the Song with a user id and timestamp?
- or would it be worthwhile to do such a thing in a third document
SongAccess, which has one user id, one song id and possible multiple
timestamp?

The list of song accesses per user and also per song can grow very
large of course. Is this a good reason to leave it out of User/Song?

I would later need a view that lists all songs heard by a user in
chronological order.

The same design problem I have for ratings, although here I have song
id, user id, date/time and score.

Thanks for ramping me up!

Marian

Reply via email to