这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
站内信数据库设计
核心表
站内信表 insite_messages:
| 字段 | 含义 |
|---|---|
| message_id | 消息 ID |
| user_id | 接收者 |
| type | 通知类型 |
| content | 内容 |
| is_read | 已读状态 |
| data | 关联业务 JSON |
| created_at | 创建时间 |
核心原则:保存业务事实,不把规则散落在应用逻辑里。
索引设计
idx_user_created:查询用户消息列表(WHERE user_id = ? ORDER BY created_at DESC)。
idx_user_unread:查询未读消息数量(WHERE user_id = ? AND is_read = 0)。
查询目标是快速定位状态、任务或资源——避免在关键路径上做大范围扫描,而不是堆更多字段。
附加数据 data 字段
data 字段存储 JSON,包含关联的业务数据:
{
"target_id": "12345",
"target_type": "post",
"comment_id": "67890"
}
这样,用户点击消息时,可以直接跳转到对应的评论或动态。
data 表达的是「关联信息」,不是业务规则本身——规则应留在服务逻辑里。
创建消息的时机
什么时候创建站内信?几个场景:
- 用户评论动态:创建一条评论通知。
- 用户点赞动态:创建点赞通知(但要聚合,见 3.4)。
- 系统公告:批量创建。
一句话
站内信设计要点:索引服务高频查询、data 存关联 JSON、保存事实而非规则。这是所有后续优化(未读、聚合)的数据基础。
发现内容有问题?
告诉我们哪里需要改进。
