关于社交系统,类似微博系统用户、内容表设计求指导
最近在开发一套类似微博、抖音的社交系统,核心功能是用户发布内容,其他用户可以评论并转发,并可以在发布、评论和转发中 @其好友。
我想请教各位,对于 @用户相关这方面有没有比较好的建议,@的用户需要解析,我目前的相关做法如下,虽然能满足功能,感觉不够优雅。
资源表,用户产生的内容#
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' => '小红'],
]
请问各位大佬有什么更好的方案吗?
推荐文章: