我正在尝试构建/设计一个表格,该表格可用于类似于谷歌+的帖子/评论系统,可以支持双向的一对多/多对多关系。我目前所拥有的是
member_id,
post_id,
post_body,
post_date,
post_flagged,
post_shared,
post_likes
我有一个与上面几乎相同的评论表,除了它在上面列出的那些上面的一个comment_id作为其自动判罪列。
我目前最终在这里寻求的是一个健全性检查。上面的构造/模式看起来是否可行?你会以任何方式添加/删除/更改它吗?如果不是/或如果是。任何人都可以建议做post_shared列的好方法吗?是否存在某种类型的对象或在该列中存储数据的方式,这些对象或方法可用于Google+圈子的逻辑?
答案 0 :(得分:1)
post_shared不应该在主帖表中。
对于规范化的解决方案,您需要一个circles
表,一个users
表,一个posts
表和一些关联表来判断哪些是相关的 - 类似于
user_circles
post_circles
答案 1 :(得分:1)
根据我的理解,您的post_shared
专栏就是这里真正有用的内容。假设您有一个针对5个“圈子”的帖子(我们将从谷歌窃取这个词)。您如何在当前设置中指出?
在一个字段中执行此操作的唯一方法是{1, 2, 3, 4, 5}
,其中这些数字是圆圈ID。这不是一个很好的做法。
我能看到实现这一目标的最佳方式是拥有此架构:
post_id, post_body, post_flagged, post_likes
circle_id, ...
post_id, circle_id
PostCircles表格会显示哪些帖子对哪些圈子可见。在上面的示例中,PostCircles表中有5行。假设帖子ID是1:
post_id | circle_id
1 1
1 2
1 3
1 4
1 5
然后,您可以使用查询语言显示相应的帖子,具体取决于查看者所在的圈子(请注意,此答案中未显示用户架构)。