samedi 10 septembre 2016

Nosql best practice with orders example

I try to create a noSQL DB for admin orders with Firebase, this is like sql (every entity with id and relation):

{
        "orders": [{
            "customer": 1,
            "rows": [{
                "article": 1,
                "quantity": 7
            }, {
                "article": 2,
                "quantity": 10
            }]
        }],
        "articles": [{
            "sku": 1,
            "name": "article-test-1"
        }, {
            "sku": 2,
            "name": "article-test-2"
        }, {
            "sku": 3,
            "name": "article-test-3"
        }],
        "customers": [{
            "id": 1,
            "name": "customer-test-1",
            "country": 1
        }, {
            "id": 2,
            "name": "customer-test-2",
            "country": 2
        }, {
            "id": 3,
            "name": "customer-test-3",
            "country": 3
        }],
        "countries": [{
            "id": 1,
            "name": "france"
        }, {
            "id": 2,
            "name": "germany"
        }, {
            "id": 3,
            "name": "canada"
        }, {
            "id": 4,
            "name": "spain"
        }],
        "statistics": [{
            "quantity-ordered": 17
        }]
    }

So I try to make some changes but now is very redundant (remove countries and not use id to relation):

 {
        "orders": [{
            "customer": {
                "name": "customer-test-1",
                "country": "france"
            },
            "rows": [{
                "article": "article-test-1",
                "quantity": 7
            }, {
                "article": "article-test-2",
                "quantity": 10
            }]
        }],
        "articles": [{
            "sku": 1,
            "name": "article-test-1"
        }, {
            "sku": 2,
            "name": "article-test-2"
        }, {
            "sku": 3,
            "name": "article-test-3"
        }],
        "customers": [{
            "name": "customer-test-1",
            "country": "france"
        }, {
            "name": "customer-test-2",
            "country": "germany"
        }, {
            "name": "customer-test-3",
            "country": "canada"
        }],
        "statistics": [{
            "quantity-ordered": 17
        }]
    }

In the end, I try to mix (countries inside customer without id):

{
    "orders": [{
        "customer": {
            "name": "customer-test-1",
            "country": "france"
        },
        "rows": [{
            "article": "article-test-1",
            "quantity": 7
        }, {
            "article": "article-test-2",
            "quantity": 10
        }]
    }],
    "articles": [{
        "sku": 1,
        "name": "article-test-1"
    }, {
        "sku": 2,
        "name": "article-test-2"
    }, {
        "sku": 3,
        "name": "article-test-3"
    }],
    "customers": [{
        "id": 1,
        "name": "customer-test-1",
        "country": "france"
    }, {
        "id": 2,
        "name": "customer-test-2",
        "country": "germany"
    }, {
        "id": 3,
        "name": "customer-test-3",
        "country": "canada"
    }],
    "statistics": [{
        "quantity-ordered": 17
    }]
}

What's the best practice? If is wrong how can I do?

Aucun commentaire:

Enregistrer un commentaire