Like和DisLike的SQL数据库结构

时间:2013-01-07 18:50:30

标签: sql sql-server database relational-database

我是网络编程的新手,需要一些专家建议。 我正在使用SQL数据库作为我的一个网站项目。 我的网站将显示一个主题列表,其中包含“喜欢”和“不喜欢”按钮。登录用户可以单击每个主题的“赞”或“不喜欢”按钮。 我能够为每个主题保持喜欢和不喜欢的数量。因此,如果用户点击某个主题,它将显示该特定主题的喜欢和不喜欢的数量,但我想要实现的是当有人点击特定的用户个人资料时,它应该显示用户喜欢或不喜欢的所有主题。 例如,当我们点击Facebook中的用户个人资料时,它会显示该特定用户的所有评论或喜欢,我该如何做类似的事情。我想知道实现这个并查询数据的数据结构 谢谢你们。 问候, AAF。

3 个答案:

答案 0 :(得分:4)

如果您有一个主题表和一个用户表,您可以添加一个链接到两者的Likes表。像这样:

User
----------
ID (int, PK)
Name (string)
etc...

Topic
----------
ID (int, PK)
Title (string)
etc...

Like
----------
ID (int, PK)
UserID (int, FK to User.ID)
TopicID (int, FK to Topic.ID)
IsLike (boolean)
etc...

因此,只要用户“喜欢”您将某条记录添加到该表设置IsLiketrue的任何内容。如果他们“不喜欢”某些内容,那么您可以将该记录添加到该表设置IsLikefalse。您可以更改术语/名称/类型/等。但总体思路是一样的。 “喜欢”成为UserTopic之间的链接记录。

因此,在显示主题时,您只需从链接表中选择与该主题相关联的记录数。在显示用户时,您可以从链接表中选择与该用户关联的记录。

答案 1 :(得分:2)

enter image description here

这是一个可以使用的简单模式。 isLike是一个布尔值,如果是喜欢则为true,如果不喜欢则为false。

按主题查询总喜欢喜欢

    Select Count(*), Topic,isLike FROM LikesDislikes GROUP BY Topic,isLike

对于所有用户喜欢的主题

   SELECT topic FROM likesdislikes WHERE userName = 'user' AND isLike = true;

等等。

答案 2 :(得分:0)

您可以有三个SQL表:

主题 评级 用户

然后,您可以通过Ratings表将Users表链接到Topics表并执行查询:

select * from Topics where RatingsUserID = UsersUserID

(伪代码)