我正在开发一个使用 firebase 作为后端的混合移动应用程序。我习惯了传统的关系型 DBMS,这是我第一次尝试 NoSql 方式。我很难构建我的数据。我不确定我是否做得对。这是我的域(以传统方式定义)。
User table -
has username
has name
has email
has authentication type - authenticated by facebook or google
has location {}
has role {}
has many services
location table - (separating this table because i would like to use geofire and it probably needs a separate node in firebase.)
has lat
has long
has userid
role table -
has role id
has role name
services table
has service id
has service name
has category id
category table
has category id
has category name
我在firebase中使用facebook身份验证创建了用户,这就是在firebase中创建的
myfirebaseio.com/users/
facebook:some-uid {
email : "a@a.com",
name : "abc xyz",
userid : some-uid,
}
如何以良好的扁平结构在 Firebase 中构建我的数据。我能想到的firebase中用户域的一个例子如下 -
myfirebaseio.com/users/
facebook:some-uid {
email : "a@a.com",
name : "abc xyz",
userid : some-uid,
role : {
id : id,
name : "rolename"
}
services : {
id: id,
name : "service name",
categoryid : "catid"
}
}
现在我的问题是我不确定是否也应该创建所有其他表节点。它将增加冗余。
我如何构建用户和服务?一个用户可以提供许多不同类型的服务,一个服务可以由许多用户提供。
我想将 geofire 用于基于位置的服务 - 对于位置,我不想存储每个用户的位置,只有具有特定角色的用户才应该保存他们的位置。我应该在用户节点中添加位置对象吗?2个不同的用户节点可以有不同的属性吗?对于用户 A - 我在用户中设置了位置。但对于用户 B - 我没有将位置保存在用户中,因为角色不同。这是一个好习惯吗?
如果有人可以为这些表建议一个好的数据结构,那就太好了。