【问题标题】:best practice data design in firebaseFirebase 中的最佳实践数据设计
【发布时间】:2016-09-17 15:22:49
【问题描述】:

我如何为以下场景构建数据?

有一个叫订餐系统的应用程序。它包含

用户名(谁正在注册这家餐厅的菜单以进行在线订购)

餐厅名称

说明

位置

预计投放

菜单(一家餐厅有多个菜单)

我的设计

  "restaurant":{
    "username":{
        "restaurant_name":"KFC Restaurant",
        "description":"short description on restaurant",
        "estimated delivery":"1hour/km",
        "distance":"20km away",
        "location":"Kathmandu",
        "rating":"rating star up to 5",
        "menus":{
            "menu":{
                "item":"buff momo",
                "price":"$5",
                "rating":"rating star up to 5"
                },
            "menu":{
                "item":"Fried Chicken",
                "price":"$10",
                "rating":"rating star up to 5"
            },
            "menu":{
                "item":"BBQ",
                "price":"$20",
                "rating":"rating star up to 5"
            }
        }
    }

}

我的设计是最佳实践设计吗?

【问题讨论】:

  • 没有最佳实践,因为这完全取决于您打算如何处理这些数据以及它会变得多复杂(例如,具有 1000 个菜单的用户)。因此,如果您还可以告诉您打算做什么,而不是只显示您拥有的数据,那将会有所帮助。
  • 我正在尝试创建食品订购系统,每个用户都可以注册他们的餐厅或酒店菜单,并且用户将订购他们喜欢的菜单。数据不会超过 2000 个,一家餐厅的菜单不会超过 20 个。

标签: javascript firebase database-design firebase-realtime-database database


【解决方案1】:

这实际上取决于您要如何处理这些数据。

如果您想在您的网站中显示所有餐厅的列表,并且当您单击餐厅时会显示他们提供的菜单列表,则将菜单存储在餐厅内可能不是一个好主意。

因为根据文档:

当我们读取 Firebase 数据库中的数据节点时,我们还会检索它的所有子节点!

(旧的)https://www.firebase.com/docs/rest/guide/structuring-data.html#section-denormalizing-data

另外,想象一下,如果您想创建一个搜索栏并查找菜单(如鸡块)并返回提供此菜单的餐厅列表,我会这样设计您的数据库:

"restaurant":{
"$username":{
    "restaurant_name":"KFC Restaurant",
    "description":"short description on restaurant",
    "estimated delivery":"1hour/km",
    "distance":"20km away",
    "location":"Kathmandu",
    "rating":"rating star up to 5",
    ...
  }
}

"menus":{
  "$username" : {
        "menu":{
            "item":"buff momo",
            "price":"$5",
            "rating":"rating star up to 5"
            },
        "menu":{
            "item":"Fried Chicken",
            "price":"$10",
            "rating":"rating star up to 5"
        },
        "menu":{
            "item":"BBQ",
            "price":"$20",
            "rating":"rating star up to 5"
        }
    }
}

【讨论】:

  • 这正是我想要实现的。我对菜单部分感到困惑,现在我很清楚了。谢谢。
  • $username 键的用途是什么?
  • 啊,我明白了,Username(Who is registering this restaurant menus for online order)
猜你喜欢
  • 2011-11-23
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 2014-10-03
相关资源
最近更新 更多