【问题标题】:How to design three dimension nosql database using Firebase如何使用 Firebase 设计三维 nosql 数据库
【发布时间】:2017-05-03 13:55:57
【问题描述】:

我正在使用 Firebase 作为电子商务应用的数据库。 我在产品目录设计中遇到了问题。

我的想法是: 1. 一种产品可以有不同的尺寸。 (例如 S、M、L、XL) 2. 一种产品也可以有不同的颜色。 (例如黑色、蓝色、青铜色、红色) 3. 价格可能因尺寸不同不同颜色而异,例如一件黑色的中号 T 恤是 100 美元,而同样尺寸的蓝色 T 恤是 150 美元。 换句话说,一件 T 恤最多可以有 9 种不同的价格,它有 3 种尺寸和 3 种颜色。

下面是我能想到的设计。 我将尺寸、颜色和价格存储在子“sku”中。 在这个孩子下,我把不同颜色的价格放在孩子的“价格”中 但我认为这不是最好的设计,所以希望任何人都可以提出更好的解决方案。

出于安全原因,我隐藏了唯一密钥的一部分。

【问题讨论】:

    标签: firebase database-design data-modeling database nosql


    【解决方案1】:

    你应该根据你的需要改造你的数据库。

    Products
        |
        -Kj53453453453453 //ProductId
        |   |
            --- Small_Size: true
        |   |
            --- Black_Color: true
        |   |
            --- Quantity: 7
        |   |
            --- Price: 100
        |   |
            --- ProductId: T_SHORT_ID // which must be the same for all t-shirts of same type
        |
        -Kj53453794677886 //ProductId
            |
            --- XL_Size: true
            |
            --- Red_Color: true
            |
            --- Quantity: 9
            |
            --- Price: 65
            |
            --- ProductId: T_SHORT_ID // which must be the same for all t-shirts of same type
    
    Sizes
        |
        --- Small_Size: "S"
        |
        --- Medium_Size: "M"
        |
        --- Large_Size: "L"
        |
        --- XL_Size: "XL"
        |
        --- XXL_Size: "XXL"
    Colors
        |
        --- Black_Color: "Black"
        |
        --- Blue_Color: "Blue"
        |
        --- Bronze_Color: "Bronze"
        |
        --- Red_Color: "Red"
    

    使用此模型,您将能够为每个产品分别创建一个节点。这意味着,假设第一个具有 -Kj53453453453453 作为 id 的产品,你知道它是回来的,尺寸是 si S。对于这种类型的产品,你也知道你有 7 件。当有人买一件时,你唯一需要做的就是减少一个数量,就是这样!

    创建正确的查询,您将能够显示数据库中的所有内容、所有产品、所有尺寸、所有颜色、所有黑色产品、所有尺寸为 XL 的产品等等。

    希望它有所帮助。

    【讨论】:

    • 我的意思是,同样的产品,有不同的尺寸和不同的颜色,价格可能会因这两个条件而有所不同。
    • 不,你的方法是错误的。让我们举个例子。假设我们有 100 条不同颜色、不同尺寸的 t-shorts。如果有人购买 t-short、黑色和 XL 码,如何知道剩余的产品数量。很简单,100-1=99。但是我怎么知道有多少产品是相同颜色和相同尺寸的呢?还有多少产品是其他颜色和其他尺寸的?因此,为了了解数据库中每个项目的每个细节,您需要flatten 您的数据,如上所述。
    • 以你的第一个产品ID为例,-Kj53453453453453 //ProductId有大小两种,黑白两种。以下是四种情况: 1. 小黑 T 恤售价 100 美元。 2. 小白 T 恤售价 120 美元。 3. 大号黑色 T 恤售价 150 美元。 4. 大号白色 T 恤售价 170 美元。他们应该使用相同的产品 ID,但颜色和大小不同,我们如何显示这种关系?
    • 这完全没问题,你添加一个新字段,命名productId 并为每个产品设置相同的产品id 但注意不是push方法生成的push id,就是这样.
    • 我编辑了你的答案,所以你的方法是这样的?要将每个组合视为新记录,同时将相同的产品 ID 作为其字段之一?
    猜你喜欢
    • 2017-10-23
    • 2012-12-08
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 2017-03-14
    • 1970-01-01
    相关资源
    最近更新 更多