Dúvidas do slide 38 da aula 5

Dúvidas do slide 38 da aula 5

por Ricardo de Oliveira -
Número de respostas: 3

Estou com duas dúvidas quanto a esse slide:

- Se "ordes" está dentro de "customer" então porque ele contém o atributo "customerID"?

- Onde está a relação "shipping Adress"?

Em resposta à Ricardo de Oliveira

Re: Dúvidas do slide 38 da aula 5

por Kelly Rosa Braghetto -

Oi, Ricardo.

Sobre sua primeira dúvida: concordo plenamente com a sua "estranheza", os objetos em "orders" não precisam desse customerId.

Quanto à segunda dúvida: note que, no modelo relacional, "shipping Address" é uma relação para guardar um relacionamento M:N entre "Customer" e "Address". No modelo do agregado, o "shipping address" ficou "embutido" em "Order" (um order tem 1 shipping address). O endereço está embutido em Customer também. Por essa razão, pode haver replicação de endereços dentro de um agregado Customer.

Ficou mais claro agora?

Kelly

Em resposta à Kelly Rosa Braghetto

Re: Dúvidas do slide 38 da aula 5

por Ricardo de Oliveira -

Mas minha dúvida é que não está em nenhum lugar o "shipping Adress" no slide 38. No slide 36 ele aparece. Mas neste não.

 

E aproveitando a discussão, tenho também dúvida no slide 36: são duas possibilidades de escrever o código: "in customers" e "in orders" ou são os dois num mesmo arquivo, ou são dois arquivos separados? Pois "in customers" e "in orders" são só comentários no arquivo. Fiquei na dúvida então como um programa diferencia um do outro se ambos tem o elemento id mas não tem um separador externo dizendo que é "customer" ou  "order".

Em resposta à Ricardo de Oliveira

Re: Dúvidas do slide 38 da aula 5

por Kelly Rosa Braghetto -

É verdade, Ricardo. Eu olhei o slide 36.

No slide 38 o "shippingAddress" erradamente não está aparecendo. Esse modelo veio da primeira edição do livro "NoSQL Distilled", que parece estar meio "buggada".

Acabo de consultar o mesmo modelo na segunda edição do livro e vi que o problema do "shippingAddress" já foi consertado (o do "customerId" ainda não, infelizmente).

Eis o modelo com o "shippingAddress" e sem "customerId" (vou consertar nos slides também):

// in customers
{
    "customer": {
        "id": 1,
        "name": "Martin",
        "billingAddress": [{"city": "Chicago"}],
        "orders": [
            {
                "id":99,
                "orderItems":[
                    {
                         "productId":27,
                        "price": 32.45,
                        "productName": "NoSQL Distilled"
                    }
                ],
                "shippingAddress":[{"city":"Chicago"}]
                "orderPayment":[
                    {
                        "ccinfo":"1000-1000-1000-1000",
                        "txnId":"abelif879rft",
                        "billingAddress": {"city": "Chicago"}
                    }
                ]
            }
        ]
    }
}

 

Quanto à dúvida do "customers" e "orders" estarem ou não em arquivos separados: a aula 5 fala de sistemas de gerenciamento de bancos de dados NoSQL, então o que podemos dizer é que "customers" e "orders" são coleções de dados diferentes. Uma coleção é como uma tabela -- agrupa objetos semânticamente relacionados. Um banco de dados NoSQL pode ter várias coleções. A forma como as coleções são armazenados fisicamente em arquivos no disco é uma decisão do sistema NoSQL e depende das configurações usadas nele (por exemplo, em um BD com particionamento, uma mesma coleção estará armazenada em vários arquivos, em diferentes máquinas).

 

Kelly