Pessoal, preciso de uma ajuda pra me ajudar a como melhorar (Ou encontrar)a solução para este problema:
Tenho um sistema em JSF, a view será a mesma para todos usuários, porém cada usuário por exemplo terá seu registros específicos, por exemplo, o usuário joao se loga, ele tem acesso a todas as tabelas do banco que o usuário fernando tem, ambos persistem os dados nas mesmas tabelas, tabelas como por exemplo: publicacoes e revendas, duas tabelas distintas.
Eu pensei na primeira solução: todo objeto usuário terá uma lista de publicações, com isso, a tabela publicacoes teria uma foreign key usuario_id, e cada publicacao teria uma lista de revendas.
Só que achei que esta solução ruin, digamos que cada usuário tenha 10000 publicações, eu ainda vou salvar em formato BLOB as publicações do usuário, e estas tabelas são apenas 2 de 15 tabelas, como será o banco de dados daqui a 5 anos por exemplo? e como será o acesso aos dados? O usuario quando procurar por suas publicações, o acesso ao banco ficará muito lento, correto? E a tabela não terá fim, crescerá indefinidamente. Como opção para banco de dados escolhi postgresql, por ser gratuito, oferecer os recursos que tdos conhecem e também teoricamente não ter limite de armazenamento.
A idéia eh ter um sistema rápido, com um banco de dados que tenha um retorno nas consultas rápido e que um usuário não possa visualizar nenhum dado de outro usuário.
Bom, alguma sugestão para esta solução? Como melhorar ou padrões que poderia aplicar?
PS: Uma coisa a ser levada em conta, a manutenção neste banco vai ficar complexa também, um dos motivos que achei ruin armazenar tudo em uma única tabela.
POR OUTRO LADO…
Pensie em ter vários bancos de dados, mas dai vai perder o dinamismo do sistema, onde o usuário se cadastra e já pode começar a upar seus documentos, pois teria necessidade de se criar um novo banco para cada usuário e não faço idéia de como gerenciar dinamicamente como o hibernate vai acessar e persistir os dados nos bancos.
Bem, foram as duas idéias que tive, se alguem puder me clarear melhor as hipóteses e melhorias, será bem vindo! Obrigado.