0

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

| post_id | post_content | post_user | post_date | 

用户可以看到后只能从他们下面的人的表结构。

首先,我想我会添加另一行到上面的帖子表,但这会造成不必要的数据重复,然后我想添加行到我的user_action表中,我在其中存储后喜欢和评论,但多数民众赞成在使系统变得复杂..

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

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

+0

您可以发布你已经创建表的完整结构? – Maximus2012

+0

哪张表???? –

+0

你还没有创建任何表格? – Maximus2012

回答

0

我同意添加重复的数据行不好。让我们仔细看看你想要做什么。

你有用户,你有帖子。这些肯定是与他们自己的表格分开的实体。

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

评论与帖子类似,但包含一些内容。相同的用户和帖子组合也可以包含多个评论。评论也将自己的表与两个外键,用户和帖子。这两者的结合将是独一无二的,但非唯一的评论。

现在分享部分。您希望用户能够关注其他用户。这也是一种N-M关系,因为任何用户都可以关注任意数量的用户,任何用户都可以关注任意数量的用户。因此,您需要使用两个外键(用户和用户)为此关系再添加一个表。这两个用户密钥的组合将是唯一的。

对于给定的用户John,找到用户的所有职位,他的下面,我们可以使用下面的伪查询:

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