Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Modelagem NoSQL

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?

1 resposta
solução!

Saudações guerreiro Tiago!!!! :)

É díficil dizer qual a melhor forma porque diferentemente do SQL que possui uma norma ISO com boas práticas e diretrizes o NoSQL não tem nada disso.

Acho que por isso que o NoSQL é mágico por ele permitir fazer as coisas da forma que mais nos sentimos confortáveis.

Escolha a que se sentir mais confortável e faça. Depende muito do seu projeto.

Espero ter ajudado!!!