当前位置: 首页 > news >正文

用户关注表的设计

二、基础表结构设计

CREATE TABLE user_follow (id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',follower_id BIGINT UNSIGNED NOT NULL COMMENT '粉丝ID(关注者)',followee_id BIGINT UNSIGNED NOT NULL COMMENT '被关注者ID',create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '关注时间',update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',UNIQUE KEY uk_follower_followee (follower_id, followee_id),KEY idx_followee (followee_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户关注表';

✅ 三、字段说明

字段名类型含义说明
idBIGINT UNSIGNED主键,唯一标识每一条关注记录
follower_idBIGINT UNSIGNED关注者 ID(粉丝)
followee_idBIGINT UNSIGNED被关注者 ID
create_timeDATETIME关注时间,默认当前时间
update_timeDATETIME最后更新时间,自动更新

✅ 四、索引设计说明

  1. 联合唯一索引 uk_follower_followee

    • 防止重复关注:一个用户不能多次关注同一个用户。
    • 用于快速查询某用户是否已关注他人。
  2. 单列索引 idx_followee

    • 用于加速查询某个用户的粉丝列表(按 followee_id 查询)。

📌 如果你经常需要查“用户 A 关注了哪些人”,也可以添加一个 idx_follower(follower_id) 索引。

自连接查询互相关注

  • 可通过两次查询或自连接判断是否互粉:
SELECT a.follower_id, b.follower_id IS NOT NULL AS is_mutual
FROM user_follow a
LEFT JOIN user_follow b
ON a.follower_id = b.followee_id AND a.followee_id = b.follower_id
WHERE a.follower_id = 1001;

✅ 七、可选扩展字段(视业务而定)

字段名类型含义说明
remarkVARCHAR给关注对象添加备注名
group_idINT所属关注分组 ID(如“好友”、“同事”)
is_blockedTINYINT是否拉黑(屏蔽通知)
notification_onTINYINT是否接收该用户的动态推送
http://www.xdnf.cn/news/693685.html

相关文章:

  • 【深度学习-pytorch篇】5. 卷积神经网络与LLaMA分类模型
  • 钩子函数的作用(register_hook)
  • 基于c++11重构的muduo核心库项目梳理
  • 动态规划-LCR 091.粉刷房子-力扣(LeetCode)
  • xcode 编译运行错误 Sandbox: rsync(29343) deny(1) file-write-create
  • pycharm生成图片
  • 【设计模式】简单工厂模式,工厂模式,抽象工厂模式,单例,代理,go案例区分总结
  • 自动化测试基础知识详解(全)
  • 如何通过知识共享构建企业创新文化
  • 利用计算属性 结合 new date()写一个当前时间的计时器时间格式为年月日 时分秒
  • 通过API接口获取1688店铺所有商品的技术实现与实战指南
  • AI 产品的 MVP 构建逻辑:Prompt 工程 ≠ 产品工程?(实战增补篇)
  • CANdela/Diva系列9--CDD文件在CANoe工程的应用1
  • Centos7升级openssl
  • 互联网大厂Java求职面试:AI与云原生架构实战解析
  • day39 pythonCNN网络
  • CSS Animation 详解
  • python第35天打卡
  • RISC-V 开发板 MUSE Pi Pro 搭建 Spacengine AI模型部署环境
  • 联软SDP+安渡:收敛暴露面 从生产网自动取数 安全高效
  • 班级管理系统
  • Python+Flask+Html做一个简单的测试联调工具
  • 链路追踪神器zipkin安装详细教程教程
  • C语言中:递归问题的深入研究
  • mp中的密码处理
  • 数据分析的方法总结
  • 工业控制核心引擎高性能MCU——MM32F5370
  • 【教程】服务器如何防止GET/SYN洪泛攻击
  • C++ 模板元编程语法大全
  • 如何在使用kickstart安装物理机操作系统的过程中核对服务器的SN