gpt4 book ai didi

php - 用户帖子共享系统的最佳表结构是什么?

转载 作者:行者123 更新时间:2023-11-30 01:28:05 25 4
gpt4 key购买 nike

我正在创建一个应用程序,用户可以在其中创建内容,其他用户可以喜欢、评论这些帖子,现在我想实现共享功能。我想知道实现这一点的最佳方法是什么。以下是帖子的表结构

| post_id | post_content | post_user | post_date |

用户只能看到他们关注的人发布的帖子。

首先,我认为我应该向上面的 posts 表添加另一行,但这会产生不必要的数据重复,然后我想到向我的 user_action 表添加行,在其中存储帖子喜欢和评论,但这就是系统复杂..

我搜索了SO,但找不到任何东西,或者可能是我的搜索词无法回答这些问题。

有没有更好的方法来实现这个目标?

最佳答案

我同意添加另一行包含重复数据的做法不好。让我们仔细看看您想要做什么。

您有用户,也有帖子。这些绝对应该是具有自己的表的单独实体。

“喜欢”是一种 N-M 关系,因为用户可以喜欢任意数量的帖子,并且帖子可以被任意数量的用户喜欢。所以这将是它自己的表,有两个外键:user 和 post。

评论与帖子类似,但包含一些内容。同一用户和帖子组合还可以包含多个评论。评论也将是它自己的表,有两个外键:用户和帖子。这两者的组合在点赞中是唯一的,但在评论中是非唯一的。

现在是分享部分。您希望用户能够关注其他用户。这也是 N-M 关系,因为任何用户都可以关注任意数量的用户,并且任何用户也可以被任意数量的用户关注。因此,您将需要另外一张表来表示具有两个外键(user 和 user)的这种关系。这两个用户 key 的组合将是唯一的。

对于给定的用户 John,要查找他关注的用户的所有帖子,我们可以使用以下伪查询:

select posts.*
from posts
join user intermediateUser on posts.author = intermediateUser.id
join follow on follow.followee = intermediateUser.id
where follow.follower = John

关于php - 用户帖子共享系统的最佳表结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com