我正在构建一个跟踪用户位置并更新Firebase的应用。我已经阅读了有关结构数据的文档,但仍然有一些问题。
我考虑以两种方式之一构建数据,但无法确定哪一种方式。
users
$id
-position
-other attr
VS
user_position
$id
users
$id
-other attr.
在什么情况下,第一个设计最好,第二个?
答案 0 :(得分:2)
如果每个用户只保留一个位置(事实上你使用单数user_position
就是这种情况),两个结构之间没有任何有用的区别。在这种情况下,用户的位置只是另一个属性,只是恰好有两个值(lat和lon)。
但是如果你想为每个用户保留多个位置,那么你的第一个结构是混合实体类型:users和user_positions。对于Firebase数据库,这是一种反模式。
两个最常见的原因是:
/user_names
列表以获得最佳读取性能。/users
向下推到树中的较低位置来实现。在第二种结构中,您只需为/users
和/user_positions
提供单独的权限。