如何使用Firebase设计三维nosql数据库

How to design three dimension nosql database using Firebase

我正在使用 Firebase 作为 e-commerce 应用程序的数据库。 我在产品目录设计中遇到了问题。

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

以下是我能想到的设计。 我将尺码、颜色和价格存储在 child 'sku' 中。 在这个child下,我把不同颜色的价格放在child'price' 但我认为这不是最好的设计,所以希望有人能提出更好的解决方案。

为了安全起见,我隐藏了部分唯一密钥。

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

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"

使用此模型,您将能够为每个产品单独设置一个节点。这意味着,假设第一个产品的 ID 为 -Kj53453453453453,您知道它已退货且尺码为 si S。对于此类产品,您还知道您有 7 件。当有人要买一件的时候,你唯一需要做的就是减少一件,就这样!

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

希望对您有所帮助。