Je veux essayer CouchDb en développant une petite application PhotoAlbum où différents utilisateurs peuvent avoir beaucoup d'albums avec beaucoup de photos dedans. Est-ce que je le fais bien si je crée un document pour chaque utilisateur, qui contient un tableau d'albums, qui contient des photos avec des pièces jointes?Comment structurer un design de base de données pour un simple album photo dans couchdb?
{
user: "Dominik",
albums: [
{ name: "USA Trip", photos:
[
{ title: "Golden Gate Bridge", _attachments: [ the photo ] },
{ another photo }
]
},
{ ...} ]
}
ou existe-t-il un autre moyen de le faire? Ou est-il préférable de stocker les utilisateurs, les albums et les photos dans des documents différents? Cela nécessiterait des clés étrangères comme dans mysql?
{ type: "user", name: "Dominik", albums: [ "a1", "a2", "a3" ] }
{ type: "album", _id: "a1", title: "USA Trip", photos: [ "p1", "p2" ... ] }
{ type: "photo", _id: "p1", _attachments: {...}, title: "Golden Gate Bridge" }
...
ou l'inverse ?:
{ type: "user", _id: "u1", name: "Dominik" }
{ type: "album", _id: "a1", title: "USA Trip", user: "u1" }
{ type: "photo", _id: "p1", _attachments: {...}, title: "Golden Gate Bridge", album: "a1" }
J'ai oublié de mentionner un autre avantage de stocker des parties de données séparément: si vous changez le titre de vos photos dans votre album , le document entier sera mis à jour (et ETag aussi), ce qui n'est souvent pas très bon. –