Il fatto è che se desideri autorizzazioni a livello di articolo per utente allora hai bisogno di un modo per mettere in relazione User
s all'Article
s possono accedere. Ciò richiede un minimo hai bisogno di N*A (dove A è il numero di articoli con autorizzazione univoca).
L'approccio 3NF a questo sarebbe, come hai suggerito, avere un UsersArticles
set... che sarebbe un tavolo molto grande (come hai notato).
Considera che questa tabella sarebbe molto accessibile... Mi sembra una delle situazioni in cui un approccio leggermente denormalizzato (o addirittura noSQL) è più appropriato.
Considera il modello utilizzato da Twitter per le tabelle dei follower degli utenti:
E blog sull'elevata scalabilità
Un esempio di quei pezzi è una lezione appresa su Twitter che interrogare i follower da una tabella normalizzata mette un enorme stress su un Users
tavolo. La loro soluzione era denormalizzare i follower in modo che i follower di un utente vengano archiviati nelle impostazioni dei singoli utenti.
Immagino che un approccio simile potrebbe essere utilizzato per fornire i permessi degli articoli ed evitare UsersArticles
tremendamente stressati tavolo unico.