关系设计 | 青训营笔记

111 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

本次记录抖音极简版项目中后端数据库的设计

接口要求

本项目分为基础/互动/社交接口

基础接口:视频流接口、视频投稿、发布列表、用户注册接口、用户登录接口、用户信息

互动接口:点赞操作、喜欢操作、评论操作、视频评论列表

社交接口:用户关联操作、用户关注列表、用户粉丝列表、用户好友列表、聊天记录、消息操作

其中要求的字段:

用户:

required int64 id = 1; // 用户id
required string name = 2; // 用户名称
optional int64 follow_count = 3; // 关注总数
optional int64 follower_count = 4; // 粉丝总数
required bool is_follow = 5; // true-已关注,false-未关注
optional string avatar = 6; //用户头像
optional string background_image = 7; //用户个人页顶部大图
optional string signature = 8; //个人简介
optional int64 total_favorited = 9; //获赞数量
optional int64 work_count = 10; //作品数量
optional int64 favorite_count = 11; //点赞数量

视频:

required int64 id = 1; // 视频唯一标识
required User author = 2; // 视频作者信息
required string play_url = 3; // 视频播放地址
required string cover_url = 4; // 视频封面地址
required int64 favorite_count = 5; // 视频的点赞总数
required int64 comment_count = 6; // 视频的评论总数
required bool is_favorite = 7; // true-已点赞,false-未点赞
required string title = 8; // 视频标题

评论:

required int64 id = 1; // 视频评论id
required User user =2; // 评论用户信息
required string content = 3; // 评论内容
required string create_date = 4; // 评论发布日期,格式 mm-dd

关系模型设计

从上述接口提供的必须字段中,提取关系模型之间的关系,需要构建中间表

点赞表:用户——视频(多对多关系)

关注表:用户——用户(多对多关系)

同时对于登录和视频发布、点赞操作,需要根据密钥对登录的用户生成特定的token、经过中间件进行验证,由此需要用户token表

登录信息:用户——token(一对一关系)

此外不需要额外建表的关系又:

投稿:用户——视频(一对多关系)

评论:用户——评论(一对多)、视频——评论(一对多)

表设计

由上述关系模型,建立的表有:

user_token:用户的登录信息

user_info:用户的基本信息

video:视频的基本信息

comment:评论的基本信息

favor: 点赞基本信息

ralations:用户关系信息

对于标间关系举例其中:

user_token设置外键参考user_info中主键user_id、user_info和video一对多关系,设置video外键参考user_id、favor设置外键参考user_id和video_id等等