关于社交系统,类似微博系统用户、内容表设计求指导

最近在开发一套类似微博、抖音的社交系统,核心功能是用户发布内容,其他用户可以评论并转发,并可以在发布、评论和转发中@其好友。
我想请教各位,对于@用户相关这方面有没有比较好的建议,@的用户需要解析,我目前的相关做法如下,虽然能满足功能,感觉不够优雅。

资源表,用户产生的内容
CREATE TABLE `resources` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `cover_img` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '封面图',
  `describe` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '描述',
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@用户表
CREATE TABLE `at_list` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `resource_id` int(11) NOT NULL COMMENT '资源id',
  `resource_type` int(11) NOT NULL COMMENT '1:视频/图片/活动 2:评论',
  `user_ids` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '@用户列表id',
  `at_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '@的用户名列表',
  `auth_id` int(11) NOT NULL COMMENT '发起者ID',
  `auth_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '发起者名字',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

这里只展示了表的核心字段。

接口返回@用户数据时,需要组装 at_list 表中的 user_idsat_name 来组合类似以下数据

[
    ['user_id' => 1, 'user_name' => '小明'],
    ['user_id' => 2, 'user_name' => '小红'],
]

请问各位大佬有什么更好的方案吗?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
Epona

可以看看 Laracasts 里是怎么做的 https://laracasts.com/series/whatcha-worki...

4年前 评论

@Epona 这个课程不确定是否能回答我的疑问,而且还需要购买,谢谢你的回答

4年前 评论

而且还需要购买

老哥,你这个想法我不太认同 :joy:

4年前 评论
GitPush (楼主) 4年前
pigzzz 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!