关于社交系统,类似微博系统用户、内容表设计求指导
最近在开发一套类似微博、抖音的社交系统,核心功能是用户发布内容,其他用户可以评论并转发,并可以在发布、评论和转发中@其好友。
我想请教各位,对于@用户相关这方面有没有比较好的建议,@的用户需要解析,我目前的相关做法如下,虽然能满足功能,感觉不够优雅。
资源表,用户产生的内容
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_ids
和 at_name
来组合类似以下数据
[
['user_id' => 1, 'user_name' => '小明'],
['user_id' => 2, 'user_name' => '小红'],
]
请问各位大佬有什么更好的方案吗?
可以看看 Laracasts 里是怎么做的 https://laracasts.com/series/whatcha-worki...
@Epona 这个课程不确定是否能回答我的疑问,而且还需要购买,谢谢你的回答
老哥,你这个想法我不太认同 :joy: