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:
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 ?
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.
[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 .