php - MySQL 表用于保存用户喜欢的页面

标签 php mysql sql

如何为用户喜欢的主题设置表格?我有一个主题表和一个用户表(更实际,但针对此处的帖子进行了简化)。由于用户生成的主题数量不断增加,我如何允许用户喜欢页面?我会将主题的 id 放入用户表中,还是将用户的 id 放入主题表中,或者创建一个新的喜欢表?我看到的问题是主题的数量可能(可能)非常大。我可以使用什么来创建一个允许用户 ID 和主题 ID 之间存在关系的系统?

最佳答案

您可以做的是“多对多”表结构

  • 唯一的自动递增 ID - UINT (10) AUTO_INCRMENT
  • 包含用户 ID 的字段 - UINT (10)(或与您的主 user_id 字段匹配的内容)
  • 包含“喜欢的”主题 ID 的字段 - UINT (10)(或与您的主 topic_id 字段匹配的内容)

user_idtopic_id 字段都需要是唯一的。这意味着每个用户只能有一个特定的行。这可以确保(在数据库方面)不允许用户多次喜欢某个主题。

获取用户喜欢的主题将如下所示 -

SELECT * FROM user_likes` WHERE `user_id`=USER_ID

获取每个点赞的用户看起来像这样 -

从用户喜欢中选择 *WHEREtopic_id`=TOPIC_ID

<小时/>

正如其他人在他们的回答中所说的以及@trevor在下面的评论中 -

Don't forget to add an index on the userid to support retrieval of user liked topics and a separate index on topic is to support the topics per user query - without these, the queries will get slower as more data is added over time.

关于php - MySQL 表用于保存用户喜欢的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11704582/

相关文章:

php - postgresql 事务并发测试脚本

php - 将 YAML 文件转换为 PHP 文件

MySQL 过程创建时出错

mysql - 如何链接 SQL 查询

php - 如何完成此登录脚本?

php - 验证字段仅包含以逗号分隔的数字

php - Solr 搜索不适用于 BOTH LIKE

php - Yii2中如何实现mysql记录锁定

mysql - 子查询中的派生表无法访问主表

ios - 从 2 个表中获取所有唯一条目