Saudações guerreiros! =D
Ao preparar uma Pamonha posso escolher várias opções de Recheio disponíveis em minha cozinha.
Temos ao menos duas opções de modelagem, conforme os exemplos abaixo:
1ª Opção: Relacional
Coleção de Pamonha
{
"_id" : ObjectId("5c07e5bc797e0891aec1082c"),
"Nome": "A de sempre",
"Recheios" : [
{
"RecheioId": ObjectId("xxxxxx"),
"Quantidade": "2"
},
{
"RecheioId": ObjectId("yyyyy"),
"Quantidade": "2"
}
]
}
Coleção de Recheio
{
"_id": ObjectId("xxxxxx"),
"Nome": "Queijo"
}
2ª Opção: Com recheio redundante
Coleção de Pamonha
{
"_id" : ObjectId("5c07e5bc797e0891aec1082c"),
"Nome": "A de sempre",
"Recheios" : [
{
"Recheio": {
"_id": ObjectId("xxxxxx"),
"Nome": "Queijo",
},
"Quantidade": "2"
},
{
"Recheio": {
"_id": ObjectId("yyyyy"),
"Nome": "Presunto",
},
"Quantidade": "2"
}
]
}
Coleção de Recheio
{
"_id": ObjectId("xxxxxx"),
"Nome": "Queijo"
}
Eu coloquei uma coleção Recheio porque imaginei um cenário onde os recheios são previamente cadastrados. E aí então, acontece que preciso atualizar o nome do recheio de 'Queijo' para 'Queijo Mussarela':
Na Opção 01 eu rodo um update apenas na coleção de Recheios. Me parece mais adequado, mas por ser relacional num banco NoSQL, acredito que estou fazendo algo errado hehehe
Na Opção 02 eu rodo um update na coleção de Recheios e também na coleção de Pamonhas. Ao consultar uma Pamonha é muito prático ter o Recheio junto, mas o update pode ser perigoso se não feitos em todas as coleções que tem Recheio dentro.
Qual seria a modelagem ideal se tratando desse cenário simples e com um pensamento NoSQL?