0

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

4

3 回答 3

6

如果您有一个主题表和一个用户表,您将添加一个链接到两者的点赞表。像这样的东西:

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...

因此,任何时候用户“喜欢”某些东西,您都可以在该表设置IsLike中添加一条记录true。如果他们“不喜欢”某些东西,那么您将该表设置添加IsLikefalse. 您可以更改术语/名称/类型/等。但总体思路是一样的。“like”成为 aUser和 a之间的链接记录Topic

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

于 2013-01-07T18:56:05.240 回答
3

在此处输入图像描述

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

按主题查询总喜欢不喜欢

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

对于用户的所有喜欢的主题

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

等等。

于 2013-01-07T19:04:44.013 回答
0

您可以拥有三个 SQL 表:

主题评分用户

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

select * from Topics where RatingsUserID = UsersUserID

(伪代码)

于 2013-01-07T18:57:05.923 回答