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

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

资源表,用户产生的内容#
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' => '小红'],
]

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
Epona

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

5年前 评论

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

5年前 评论

而且还需要购买

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

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