首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DB中实现帖子、评论和喜欢

在DB中实现帖子、评论和喜欢
EN

Stack Overflow用户
提问于 2018-01-09 02:28:23
回答 2查看 8K关注 0票数 6

我正在尝试在Postgresql中模拟一个DB,这个平台类似于twitter和Instagram这样的社交媒体平台。

我有以下要求:

  1. 用户可以创建一个帖子
  2. 用户可以喜欢邮政
  3. 用户可以在帖子上发表评论
  4. 用户可以评论另一个用户的评论(回复评论)
  5. 用户可以喜欢评论

现在我意识到,如果用户继续以评论的形式回复其他用户,我们就可以有深度嵌套的注释。我想出了一些自引用表,这些表都是从公共实体表继承的。到目前为止,我的意思是:

^^我知道,“喜欢”或评论“喜欢”是可能的,但这不是一项要求。为了防止这种情况,我认为我可以在应用程序代码级别强制执行这些约束。如果我们将来可能想要实现这些选项,那么最好是保留这些选项,对吗?

我的问题是,这是一个好的DB实现吗?是否有用例和陷阱,我可能会遇到,我没有看到?设计是否适合用例?

EN

回答 2

Stack Overflow用户

发布于 2018-01-09 02:55:44

您的基本模式结构可能可以用于您提到的基本用例。我只是错过了评论和帖子之间的连接(哪个评论属于哪个帖子)。您还可以说,注释和post是同一类型的对象,只需区分它们与另一篇文章的关系(或者没有)。此外-更重要的是:

现在,您应该考虑使用图形数据库来建模社交媒体领域。正如您在模式中所看到的,大多数数据是表之间的链接,而关系数据库实际上在高度链接的数据中并不是最好的。这是因为SQL查询可能最终会包含许多联接,一旦图形达到一定的大小和深度,这可能会成为性能问题。

还可以将关系数据库(或nosqldb)的使用与图形数据库结合使用,在该数据库中,您只对图形中的链接网络和常规数据库中更面向表的数据进行建模。

有关图形数据库的流行示例,请参见

有关图形数据库在图形建模方面优于关系数据库的更多信息,请阅读

票数 4
EN

Stack Overflow用户

发布于 2018-01-10 05:53:28

目前的实现已经足够好了。需要考虑的几点:

  • 职位的喜欢和评论的喜欢的分离可能会导致更清晰的发展。
  • 考虑对关系数据库中的性能问题进行深度嵌套的注释(它可能需要递归和或多个联接)。你可以考虑将评论限制在2的深度(比如Facebook和Youtube)。
  • 更多属性:用户密码、实体创建日期等。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48160665

复制
相关文章

相似问题

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