我的网站有一个跟随者/跟随者系统(就像Twitter一样).我的两难境地是创建数据库 struct 来处理谁在跟踪谁.

我想到的是创建一个这样的表:

 id  |  user_id  |  followers |  following
  1  |    20     |  23,58,84  |  11,156,27
  2  |    21     |  72,35,14  |  6,98,44,12
 ... |   ...     |    ...     |     ...

基本上,我认 for each 用户都应该为他们的关注者和他们关注的用户安排一行栏目.追随者和他们关注的人将用逗号分隔他们的用户ID.

这是一种有效的处理方式吗?如果没有,最好的 Select 是什么?

推荐答案

这是做这件事最糟糕的方式.这是反对正常化的.有两张分开的桌子.USERS和USER_FLOGLES.用户将存储用户信息.用户跟随者将如下所示(_F):

id | user_id | follower_id
1  | 20      | 45
2  | 20      | 53
3  | 32      | 20

USER_ID和FLOGER_ID将是引用USERS表中ID列的外键.

Database相关问答推荐

为Postgres数据库字段创建复合索引

如果我想支持我的工作负载,我需要多少个 node ?

网络分区恢复后副本的更新数据发生了什么

如何让 Google Drive Electron 表格像 MySQL 数据库一样工作吗?

add_index 到数据模型 - Ruby on Rails 教程

为什么引用 SQLite rowid 会导致外键不匹配?

如何使用错误消息中指定的 tbspaceid tableid 在 DB2 中查找表和列

如果我使用存储过程,我对 SQL 注入免疫吗?

基于邮政编码的纬度和经度

mysql搜索表名的段

用于获取存储在单个表中的 n 级父子关系的 Postgresql 查询

执行语句还是运行脚本?

有人可以详细解释 SOLR requestHandlers 和 responseWriters 吗?

游戏中使用什么样的数据库?

何时在关系数据库中使用枚举或小表?

Twisted + SQLAlchemy 和最好的方法

复式记账的关系数据模型

对于 N:M 关系,在 MongoDB 中推荐的级联删除等效项是什么?

ManyToOneRel 和 ForeignKey 的区别?

什么是提交日志(log)?