Je crée une galerie. Je veux que les utilisateurs puissent choisir qui peut voir leurs photos par groupe ou par individu. Je figure que je devrais avoir une table can_see
avec deux colonnes (user_id, photo_id)
. Cela devrait fonctionner pour les particuliers, mais cela ne fonctionnera pas si je jette group_id
s là aussi. Je pense que la meilleure approche pourrait être simplement d'ajouter chaque individu dans le groupe sélectionné à cette table quand un groupe est choisi, plutôt que son group_id
. Cela crée cependant plus d'entrées dans la table pour passer au crible plus tard. Est-ce toujours la meilleure approche?Question de conception de base de données de galerie concernant les autorisations/visibilité
Voici ce que je pense:
users: id, username, ...
photos: id, album_id, ...
albums: id, user_id (owns all photos in album), ....
can_see: user_id, photo_id
groups: id, user_id(owner), name
member_of: user_id, group_id
Je pense que vous ou moi avons un malentendu. Nous ne sommes pas à la recherche de photos, nous essayons de déterminer qui a la permission de voir la photo. Comment feriez-vous cela avec cette configuration? Je ne sais même pas comment fonctionne votre "table de groupes d'utilisateurs". Si j'ai 5 utilisateurs qui font tous partie du même groupe, que se passe-t-il? Le nom du groupe est répété 5 fois? C'est juste un mauvais design. Je vais ammend ma question avec ma configuration ... – mpen
D'accord. Ma conception antérieure pour la table de groupe d'utilisateurs avec le nom de groupe répété n'est pas un bon design comme vous l'avez souligné à juste titre. J'ai modifié le design pour refléter ma pensée actuelle. En cherchant, je voulais dire accéder. – msvcyc
Je ne comprends toujours pas. Vous le faites sonner comme un utilisateur individuel * possède * la photo, ou l'ensemble * possède * la photo. Que se passe-t-il si l'utilisateur A télécharge la photo B, puis arrive l'utilisateur C qui veut voir la photo B. Comment vérifions-nous s'il a la permission de le faire? D'après vous, nous tirons son UserID de la Table Utilisateur, puis vérifions la Table Photo ... mais la Table Photo décrit simplement qui en est le propriétaire. Il vous manque toujours une table de visibilité. – mpen