Dúvida em Mapeamento

Bom dia,
Estou desenvolvendo uma aplicação que basicamente cada usuário deverá ter seus produtos específicos. Com isso surgiu a seguinte dúvida junto aos envolvidos no projeto:

  1. No mapeamento deveríamos criar uma tabela de produto para cada usuário e gerar uma tabela de relacionamento para identificar o nome da tabela de produto do respectivo usuário ?

  2. Ou devemos utilizar uma tabela unica de produto gerando uma tabela de relacionamento linkando os usuários aos produtos ?

Esse duvida surgiu pois estamos com medo de ao adotar a abordagem 2 a tabela fique com muitas informações futuramente (Pois irá conter os produtos de todos os clientes) e acabe atrapalhando a performance. Enquanto a abordagem 1 ficaria algo isolado para cada usuário ter a sua tabela, porém nunca vi nenhum projeto usando esse tipo que foi falado na abordagem 1, por isso me gerou a dúvida se isso seria uma boa ideia.

Obrigado a todos

Tabela usuario
id
nome

Tabela produto
id
nome

Tabela UsuarioProduto
id
id_produto
id_usuario

Resolve ???

Isso forma um relacionamento de muitos para muitos

Bom dia alexafe,
Essa abordagem caso a tabela de produtos cresça muito não irá atrapalhar a performance das pesquisas ?

Obrigado

[quote=strikezado]Bom dia alexafe,
Essa abordagem caso a tabela de produtos cresça muito não irá atrapalhar a performance das pesquisas ?

Obrigado[/quote]

Se você indexar corretamente, não. O banco de dados não trabalha com índices lineares, e sim, em forma de árvore. É papel deles tornar pesquisas em tabelas como essa violentamente rápidas.

Não, a performance não fica afetada porque para vc saber os produtos de cada usuario vc primeiro consulta a Tabela UsuarioProduto
e depois chega na tabela produto já refinando os registros.

Assim vc tem: performance, produtividade, evita duplicação de registros e se quizer melhorar ainda mais a performance pode trabalhar com indexes .