Firebase 中的最佳实践数据设计
best practice data design in firebase
我如何为以下场景构建数据?
有一个名为 Food Ordering System 的应用程序。它包含
用户名(谁在注册这家餐厅的在线订单菜单)
Restaurant_name
描述
地点
预计交货时间
菜单(一家餐厅有多个菜单)
我的设计
"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":"",
"rating":"rating star up to 5"
},
"menu":{
"item":"Fried Chicken",
"price":"",
"rating":"rating star up to 5"
},
"menu":{
"item":"BBQ",
"price":"",
"rating":"rating star up to 5"
}
}
}
}
我的设计是最佳实践设计吗?
这实际上取决于你想用这些数据做什么。
如果您希望在您的网站中显示所有餐厅的列表,并且当您单击餐厅时显示他们提供的菜单列表,那么将菜单存储在餐厅内可能不是一个好主意。
因为根据文档:
When we read a data node in our Firebase database, we also retrieve all of its children!
(旧的)https://www.firebase.com/docs/rest/guide/structuring-data.html#section-denormalizing-data
此外,想象一下,如果您想做一个搜索栏并查找菜单(例如鸡块)和return提供此服务的餐厅列表,我会这样设计您的数据库:
"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":"",
"rating":"rating star up to 5"
},
"menu":{
"item":"Fried Chicken",
"price":"",
"rating":"rating star up to 5"
},
"menu":{
"item":"BBQ",
"price":"",
"rating":"rating star up to 5"
}
}
}
我如何为以下场景构建数据?
有一个名为 Food Ordering System 的应用程序。它包含
用户名(谁在注册这家餐厅的在线订单菜单)
Restaurant_name
描述
地点
预计交货时间
菜单(一家餐厅有多个菜单)
我的设计
"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":"",
"rating":"rating star up to 5"
},
"menu":{
"item":"Fried Chicken",
"price":"",
"rating":"rating star up to 5"
},
"menu":{
"item":"BBQ",
"price":"",
"rating":"rating star up to 5"
}
}
}
}
我的设计是最佳实践设计吗?
这实际上取决于你想用这些数据做什么。
如果您希望在您的网站中显示所有餐厅的列表,并且当您单击餐厅时显示他们提供的菜单列表,那么将菜单存储在餐厅内可能不是一个好主意。
因为根据文档:
When we read a data node in our Firebase database, we also retrieve all of its children!
(旧的)https://www.firebase.com/docs/rest/guide/structuring-data.html#section-denormalizing-data
此外,想象一下,如果您想做一个搜索栏并查找菜单(例如鸡块)和return提供此服务的餐厅列表,我会这样设计您的数据库:
"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":"",
"rating":"rating star up to 5"
},
"menu":{
"item":"Fried Chicken",
"price":"",
"rating":"rating star up to 5"
},
"menu":{
"item":"BBQ",
"price":"",
"rating":"rating star up to 5"
}
}
}