首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于数据建模的几点建议

关于数据建模的几点建议
EN

Software Engineering用户
提问于 2019-03-04 09:21:24
回答 1查看 156关注 0票数 -1

我想为Android做一个社交游戏。我使用的是基于NoSQL的数据库(MongoDB)和NodeJs。我正在使用Android-Volley库来发布帖子并获得请求。但我被塞了一些东西,我需要看到朋友的朋友,或发送一些游戏请求或朋友请求从一个用户到另一个。然而,我仍然在为如何设计数据库模型而奋斗。

首先,

代码语言:javascript
复制
{     
  "user1": 
  {           
      "friendsList": [ {"user2" : {id:"2", ...}}]        
  },
  "user2":{
      "friendsList": [ {"user1" : {id:"1", ...}}]        
  }
}

或者第二种方法,

代码语言:javascript
复制
 {
  "user1" : { 
     "friendsList": [ 
         { 
          "user2" : { 
             "friendsList":[ {"user1" : { ... } } ] 
         }, 
         ...
      ]
   }
}

基本上,我想问的是,我应该把整个"user“对象包括在一个列表中,还是只保留id号。如果我保留id号,是否应该再次请求给定的Id号以显示配置文件等。我想减少到请求(我认为我需要对给定的id号提出另一个请求),这就是为什么,我需要您的帮助。

谢谢您抽时间见我。

EN

回答 1

Software Engineering用户

发布于 2019-03-04 21:59:39

我将尝试解释为什么第二种方法不是解决问题的好方法(第一种使用RDBMS的方法非常简单,就像其他人提到的那样)。

另外,我没有遵循任何JSON表示法,我只是将用户的完整信息命名为Ux,ids命名为x

  • 假设您有两个用户(U1U2分别具有ids 12 ),然后决定嵌套它们。那你就会有这样的东西:

[ {U1, friends:{U2}}, {U2, friends:{U1}} ] -在这里,两个用户的信息都是重复的。

  • 现在,我们添加了一个3d用户,它是U1U2的朋友。

[ {U1, friends:{U2, U3}}, {U2, friends:{U1, U3}}, friends:{U3, {U1, U2}} ] --在这里,正如你可能已经注意到的,你有更多的重复。

如果你有N个用户,你会复制他们N次。

  • 但是我忽略了一些东西:如果严格遵循第一种方法--用户表示,事情会变得更糟,因为U1与U2是朋友,而与U1是朋友,循环!我们应该把它也筑巢吗?我们什么时候停下来?

最后,当您使用方法1时,您只需要引用其他对象。数据不会被复制,您也不需要嵌套任何东西。

如果您有N个用户,则最多有一个没有重复的N+1朋友ID列表。:)

然后可以使用这些ID访问其他用户。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/388002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档