Estou modelando um banco de dados para uma aplicação que estou desenvolvendo e estou diante de uma escolha para a qual gostaria de saber qual a melhor prática.
Digamos que eu tenha uma tabela de documentos e uma tabela de usuários. Os documentos podem ser genéricos ou relacionados a um usuário de três maneiras:
Criado pelo usuário, caso em que ele tem acesso ao documento; Sobre o usuário, caso em que o acesso ao documento pode ou não ter sido concedido a ele; Feito sob medida para aquele usuário, caso em que o acesso ao documento pode ou não ter sido concedido a ele ainda;
Eu poderia modelar um relacionamento Muitos-para-Muitos com uma tabela contendo um campo DocumentId, um campo UserId e um pouco informando se o usuário tem acesso ao documento:

Outra abordagem seria ter uma tabela Muitos-para-Muitos com um campo UserId e um campo DocumentId para vincular Documentos a Usuários que tenham acesso a eles, e também ter um campo UserId na tabela Documentos que seja Nulo se o documento for genérico ou que contenha o ID do usuário ao qual está relacionado.

A primeira abordagem parece mais organizada porque há apenas um UserId FK. A segunda abordagem, entretanto, permite filtrar documentos por usuário sem a necessidade de ingressar em uma tabela.
Qual é a melhor prática aqui?