【发布时间】:2016-03-26 21:50:35
【问题描述】:
我正在开发一个使用 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 - 我没有保存在用户中的位置,因为角色不同。 这是一个好习惯吗?
如果有人可以为这些表推荐一个好的数据结构,那就太好了。
【问题讨论】:
-
NoSQL 数据建模是一个非常广泛的话题,远远超出了我们在 StackOverflow 上可以处理的范围。我建议仔细阅读这篇文章:highlyscalable.wordpress.com/2012/03/01/….
-
一般来说,您的问题太宽泛,无法在 StackOverflow 上回答,所以我将投票关闭它。您还一口气问了很多问题。下面是对一个不太主观的问题的回答。我建议您阅读我链接的文章,为您的应用程序提出一个数据架构,稍微使用它,然后当您对此有具体问题时:发布一个新问题。
标签: firebase ionic-framework firebase-realtime-database geofire nosql