0

我正在编写一个简单的“Facebook 墙”类型功能,用户可以在另一个人的墙上发帖,人们可以简单地回复该墙帖,或发布新的墙帖。用户无法回复回复,您只能回复原始墙帖(就像 facebook 一样)

我想到的原始 mySQL 数据库架构是这样的:

post_id (pk)
post_text(字符)
date_posted(日期时间)
is_parent (bool)
parent_id(父母的ID)

工作原理:
如果有人发布新的墙帖,is_parent 将设置为 1,而 parent_id 将设置为 null。

如果有人回复了该帖子,is_parent 将为 0,而 parent_id 将设置为父帖子的 ID。

我的问题

  1. 这是此功能的良好架构吗?如果没有,你会使用什么模式?
  2. 如果它很好,我怎么能做一个查询,它将按最近发布的顺序返回所有墙贴,同时将孩子与父母分组,这样当我遍历查询结果时,父母和孩子都聚集在一起.
  3. 还是做 2 个查询更好?1 次查询所有父母,1 次查询孩子。
4

2 回答 2

1

首先。我认为您不需要两个字段来实现相同的目的。在这种情况下, parent_id 就足够了。当你有 post_id 设置自动增量时。第一个分配的值将是 1,因此 parent_id=0 永远不会发生。当 parent_id=0 时,您可以假设它是一级帖子。

最好对所有回复使用一个查询。

于 2009-11-25T02:27:24.310 回答
0
  1. 不知道/可能。丢失 is_parent 列。
  2. 我最近通过查询按 post_id 升序排序的所有帖子来做到这一点。然后用一些 PHP (array['parrent'] -> array['post']...[]) 将它缓存在一个二维数组中。
  3. 应该按照#2 中描述的方法进行
于 2009-11-25T03:02:55.593 回答