阅读 1089

全栈全平台开源项目 CodeRiver 数据库设计文档

前言

CodeRiver 是一个免费的项目协作平台,愿景是打通 IT 产业上下游,无论你是产品经理、设计师、程序员或是测试,还是其他行业人员,只要有好的创意、想法,都可以来 CodeRiver 免费发布项目,召集志同道合的队友一起将梦想变为现实!

CodeRiver 本身还是一个大型开源项目,致力于打造全栈全平台企业级精品开源项目。涵盖了 React、Vue、Angular、小程序、ReactNative、Android、Flutter、Java、Node 等几乎所有主流技术栈,主打代码质量。

目前已经有近 100 名开发者参与,每个技术栈都有多位经验丰富的大佬坐镇,更有两位架构师指导项目架构。无论你想学什么语言处于什么技术水平,相信都能在这里学有所获。

通过 高质量源码 + 博客 + 视频,帮助每一位开发者快速成长。

项目地址:github.com/coderiver-o…

数据库关系图

产品的第一版功能相对简单,主要模块只有用户模块、项目模块,后期版本中将丰富更多功能,欢迎关注。

数据库关系图如下:

数据表详解

所有的 id 都采用了Long (bigint) 类型,相比于字符串,Long 在查询比对方面有很大优势。

时间格式,除了只需时分的 time 类型,其他时间均存成时间戳,所以类型也是 Long (bigint)

详细的数据表文档如下:

user_info

用户表,存储用户的基本信息。但登录相关的信息单独抽出来了一张新表:user_login ,便于后期扩展。

字段 类型 not null 默认值 备注
user_id bigint(64) not null 用户主键id
username varchar(255) not null 用户名/昵称
password varchar(255) not null 加密后的密码
gender int(11) 0 性别,0未知,1男,2女
avatar varchar(255) 头像
city bigint(64) 城市编码
role_id bigint(64) 角色id
experience_id bigint(64) 工作经验id
workday_start_time time 工作日空闲开始时间
workday_end_time time 工作日空闲结束时间
weekend_start_time time 周末空闲开始时间
weekend_end_time time 周末空闲结束时间
influence int(11) 影响力,由多个数据动态计算而来
introduce varchar(512) 个人简介
status int(11) not null 1 账户状态。1正常,2冻结,3注销
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

user_login

用户登录表,存储登录的各种账号。每种账户都有一个 active 字段,为了标记这种登录方式是否可用。

例如用户通过邮箱注册了一个账号,并跟微信绑定了,此时用微信或者邮箱均可登录,微信和邮箱的 active 状态值都是1。某天用户把微信解绑了,只能通过邮箱登录,此时微信的 active 状态值是 2 表示不可用,邮箱的 active 状态值是 1 表示可用。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
user_id bigint(64) not null 用户id
email varchar(64) 邮箱
email_active int(11) 0 状态,0不可用,1可用
phone varchar(64) 手机号
phone_active int(11) 0 状态,0不可用,1可用
wechat_id varchar(255) 微信id
wechat_active int(11) 0 状态,0不可用,1可用
sina_id varchar(255) 新浪id
sina_active int(11) 0 状态,0不可用,1可用
github_id varchar(255) github id
github_active int(11) 0 状态,0不可用,1可用
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

user_role

用户角色表。存储用户角色分类:

产品经理、设计师、前端工程师、移动端工程师、小程序、游戏工程师、后端工程师、测试、DBA工程师、运维工程师、其他。

字段 类型 not null 默认值 备注
id bigint(64) not null 角色id
name varchar(64) 角色名

user_experience

用户工作经验表。存储工作经验分类:

在校生,0年,1-2年,3-5年,5-8年,8-10年,10年+

字段 类型 not null 默认值 备注
id bigint(64) not null 经验id
name varchar(64) 经验名

work_experience

工作经历表。存储个人简介中的工作经历,每人的工作经历可能有多个。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
user_id bigint(64) not null 用户id
company_name varchar(64) 公司名
position varchar(32) 职位
comment varchar(512) 备注
start_date bigint(64) 开始日期(格式:2018-09)
end_date bigint(64) 结束日期(格式:2018-09)
status int(11) not null 1 状态。1正常,2删除
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

education_experience

教育经历表。存储个人简介中的教育经历,每人的教育经历可能有多个。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
user_id bigint(64) not null 用户id
school_name varchar(64) 学校名
major varchar(32) 专业
degree varchar(32) 学位
comment varchar(512) 备注说明
start_date bigint(64) 开始日期(格式:2018-09)
end_date bigint(64) 结束日期(格式:2018-09)
status int(11) 1 状态。1正常,2删除
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

user_like

用户点赞表。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
liked_user_id bigint(64) not null 被点赞的⽤用户id
liked_post_id bigint(64) not null 点赞的⽤用户id
status int(11) not null 1 点赞状态,1 点赞,2取消
create_time bigint(64) 创建时间
update_time bigint(64) 修改时间

project_info

项目信息表。存储项目的基本信息。

字段 类型 not null 默认值 备注
project_id bigint(64) not null 项目id
project_name varchar(255) 项目名字
project_avatar varchar(255) 项目封⾯面
project_difficulty float 项目难度
category_id bigint(64) not null 项⽬类型id
project_status int(11) 0 项目状态, 0招募中,1 进行中,2已完成,3失败,4延期,5删除
project_introduce varchar(512) 项目简介
project_creator_id bigint(64) not null 项⽬创建者id
team_id bigint(64) 项目所属团队id
project_start_date bigint(64) 项目开始时间,格式:2018-10-01
project_end_date bigint(64) 项⽬结束时间,格式:2018-10-01
project_delay_date bigint(64) 项⽬延迟的⽇期,格式:2018-10-01
delay_count int(11) 项⽬目延期次数。最多三次每次最多一个⽉
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

project_category

项目类型表。如电商、社交、教育等。

字段 类型 not null 默认值 备注
id bigint(64) not null 项⽬目类型id
name varchar(255) 类⽬目类型名称

project_picture

项目图片表。存放项目截图。项目与图片是一对多的关系。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
project_id bigint(64) not null 项⽬id
picture_url varchar(255) not null 图⽚地址

project_like_user

项目点赞表。存储项目点赞的具体信息。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
project_id bigint(64) not null 项目id
user_id bigint(64) not null 点赞的用户id
status int(11) not null 0 点赞状态,0 取消点赞,1点赞
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

team_application

组队申请表。有四种业务逻辑:申请加入项目,申请加入团队,邀请加入项目,邀请加入团队。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
project_id bigint(64) 项目id
team_id bigint(64) 团队id
target_user_id bigint(64) not null 目标用户id。如果是用户主动申请,就是申请者id;如果是被邀请,就是被邀请者id。
creator_user_id bigint(64) not null 申请创建者id。如果是用户主动申请,target_user_id 和 creator_user_id 都是该申请者id;如果是被邀请,creator_user_id 是邀请者id。
role_id_apply bigint(64) not null 申请在本项目中的角色id
workday_start_time time 工作日空闲开始时间
workday_end_time time 工作日空闲结束时间
weekend_start_time time 周末空闲开始时间
weekend_end_time time 周末空闲结束时间
comments varchar(512) 备注消息
status int(11) 1 状态。1待审核,2通过,3驳回,4撤回,5删除
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

user_project_relation

用户与项目的对应关系表。关系是多对多。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
project_id bigint(64) not null 项目id
role_id_project bigint(64) not null 用户在本项目的角色id
user_id bigint(64) not null 用户id
status int(11) 0 状态。0未匹配,1已匹配
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

team_info

团队信息表

字段 类型 not null 默认值 备注
team_id bigint(64) not null 团队主键id
team_name varchar(255) 团队名称
team_avatar varchar(255) 团队logo
team_introduce varchar(512) 团队简介
team_creator_id bigint(64) not null 团队创建者id
description varchar(128) 团队描述
status int(11) 1 状态。1正常,2解散
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

user_team_relation

团队-用户关系表,多对多的关系。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
user_id bigint(64) not null 用户id
team_id bigint(64) not null 团队id

comments

评论表。可以对资源(下一版加入资源中心)、对项目、对用户进行评论。

字段 类型 not null 默认值 备注
id bigint(64) not null 主键id
pid bigint(64) 父评论id
from_id bigint(64) not null 评论者id(只可能是用户id)
to_id bigint(64) not null 被评论者id(可能是资源、项目、用户id)
content varchar(512) not null 评论内容
type int(11) not null 评论的类型:1资源,2项目,3用户
status int(11) 1 评论状态:1正常,2删除
create_time bigint(64) 创建时间
update_time bigint(64) 更新时间

数据库 sql 文件放在了 GitHubdoc 仓库下,点击 这里 快速打开。

关注我们

在项目开发过程中我们会尽可能多的总结技术实现过程,并形成一系列文档,文档 + 源码 带给您最高效的学习体验。文档会在 CodeRiver 官方微信公众平台 CodeRiver河码 首发,也会在各博客平台发布,欢迎大家关注。

扫码或搜索微信号 code_river 关注微信公众平台:

参与项目

CodeRiver 是开源项目,任何想为开源事业贡献一份力量的小伙伴均可加入。

同时我们还建立了项目讨论群,如果您对项目感兴趣,可以进群一起讨论。

加入方式:

搜索并添加 wx 号: douglas1840,备注:coderiver


感谢大家一直以来的的支持,CodeRiver 团队将继续朝着打造全栈全平台精品开源项目的目标不懈努力!

您的鼓励是我们前行最大的动力,欢迎点赞,欢迎送小星星✨ ~

关注下面的标签,发现更多相似文章
评论