Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Complexidade com várias coleções

O principal exemplo do curso foi a utilização de apenas uma coleção, em cima disso consegui ver várias vantagens, mas o problema começa a surgir quando preciso criar mais de uma coleção.

Como seria o relacionamento entre as coleções? Vamos imaginar que existe o "Clientes" e existe "Restaurantes".

Com um sistema minimamente complexo precisamos ter garantia de qualidade dos dados, vocês explicaram que quem passaria a fazer isso seria na camada de aplicação, até ai OK.

Mas imagina que eu tenho uma coleção "Pessoa", que tem um campo status que teria que ter no máximo 2 domínios:

1 - Ativo; 2 - Desativado;

Nesse caso não posso adicionar em "pessoa.status" nenhum valor diferente dos citados acima. Como faria?

A solução que eu acredito seria criar uma Coleção Status do tipo chave-valor, onde eu adicionaria os valores possíveis e quando a aplicação receber um valor diferentes desses, não incluiria em "pessoa.status", essa seria a melhor solução?

Abraços.

2 respostas
solução!

Eduardo, considerando a especificidade que você impôs: ter no máximo dois domínios, esse campo não pode ser transformado em um campo booleano? pessoa.ativa (true/false) não seria mais interessante?

Se o armazenamento em String é uma prioridade, a minha sugestão seria criar um enumerador na sua aplicação que represente essas opções e executar uma validação do valor do status antes de fazer a qualquer insert ou update no banco de dados, baseado nesse enumerador.

Faz sentido pra você? O banco armazena como se fosse uma String mesmo, e você confere que o valor é adequado antes de executar a consulta.

Marco,

Entendi a sua resposta, mas conforme você mesmo falou, toda integridade e qualidade dos dados quem vai garantir será a aplicação a ser chamada.

É complicado aplicar esse tipo de banco em uma empresa grande, mas acredito que em pequenas funcionalidades sim, ou quem sabe em projetos pessoais pequenos.

Mas não consigo enxergar um sistema todo em NoSql.