Le fait est que si vous voulez des autorisations au niveau de l'article par utilisateur alors vous avez besoin d'un moyen de relier User
s à Article
s auxquels ils peuvent accéder. Cela nécessite un minimum vous avez besoin de N*A (où A est le nombre d'articles avec autorisation unique).
L'approche 3NF à cela serait, comme vous l'avez suggéré, d'avoir un UsersArticles
ensemble... ce qui serait une très grande table (comme vous l'avez noté).
Considérez que cette table serait beaucoup consultée... Cela me semble être l'une des situations dans lesquelles une approche légèrement dénormalisée (voire noSQL) est plus appropriée.
Considérez le modèle utilisé par Twitter pour ses tableaux d'abonnés :
Et blog sur la haute évolutivité
Un échantillon de ces pièces est une leçon apprise sur Twitter selon laquelle interroger les abonnés à partir d'un tableau normalisé met un stress énorme sur un Users
table. Leur solution consistait à dénormaliser les abonnés afin que les abonnés d'un utilisateur soient stockés dans leurs paramètres d'utilisateur individuels.
J'imagine qu'une approche similaire pourrait être utilisée pour servir les autorisations d'article et éviter un UsersArticles
extrêmement stressé table unique.