O fato é que, se você deseja permissões no nível do artigo por usuário então você precisa de uma maneira de relacionar
User
s para o Article
s eles podem acessar. Isso requer um mínimo você precisa de N*A (onde A é o número de artigos com permissão exclusiva). A abordagem 3NF para isso seria, como você sugeriu, ter um
UsersArticles
set... que seria uma mesa muito grande (como você notou). Considere que esta tabela seria muito acessada... Esta me parece uma das situações em que uma abordagem um pouco desnormalizada (ou mesmo noSQL) é mais apropriada.
Considere o modelo que o Twitter usa para suas tabelas de seguidores de usuários:
Jeff Atwood sobre o assunto
E blog de alta escalabilidade
Uma amostra dessas peças é uma lição aprendida no Twitter de que consultar seguidores de uma tabela normalizada coloca um estresse tremendo em um
Users
tabela. A solução deles foi desnormalizar os seguidores para que os seguidores de um usuário sejam armazenados em suas configurações de usuário individuais. Imagino que uma abordagem semelhante possa ser usada para fornecer permissões de artigo e evitar um
UsersArticles
tremendamente estressado mesa única.