mysql数据库设计 表名 注释 逆向生成关系模型 预留字段
1 表名
首先是数据库表的命名 可以看到都有前缀
命名公式: 前缀(模块)_功能别名_作用
2 字段的注释
每个字段都要写注释,一定要写全
3 表与表之间的关系模型
3.1 使用场景及注意事项
navicat中有一个模型功能,能显示表之间的关系,有的公司要求在设计完表后,把这个模型发群里
但这个功能要求表之间建立主外键关系,而实际开发又不给建立主外键关联,所以流程上要先把做好的表备份,再去建主外键关联
大费周章建起来的目的也很简单,就只是“看一下”这个模型,实际开发时依然是用没有主外键关联的表
3.2 操作流程
首先建两个表,并设置外键关联
然后在表界面下多选需要生成关系模型的数据库
在选中数据库的情况下——鼠标右键——逆向数据库到模型,得到下图,此时可以使用文本标签,给各个表添加一些注释
4 数据库脚本
如果根据业务需求向表中添加了新的字段,即修改了表的结构,在对表新建字段后,需要把sql预览里的语句提交给小组长、测试等人员,而且不能修改sql语句,要完全保留着给别人
5 预留字段
预留字段的目的是避免以后数据库表无法满足开发需求,导致需要修改数据库结构的情况,所以在一开始建表后就预留几个字段,允许以后通过重命名已有字段,满足开发需求
一般预留说明:
varchar类型 预留2个
int类型 预留2个
6 一张表必备的五个字段
无论什么表,都要有五个字段
主键id,一般与业务不相关
创建人
创建时间
修改人
修改时间
这五个字段一般都会被BaseEntity统一抽取,抽取的BaseEntity见下方代码
@Data
public class BaseEntity implements Serializable {
/**
* 管理员id
*/
@TableId(value = "id", type = IdType.AUTO)
@Null(groups = addGroup.class,message = "添加时不能有id ")
@NotNull(groups = updateGroup.class,message = "修改id必须有数值")
private Long id;
/**
* 创建者
*/
@JsonIgnore
private Long createBy;
/**
* 创建时间
*/
@JsonIgnore
private LocalDateTime createTime;
/**
* 修改者
*/
@JsonIgnore
private Long updateBy;
/**
* 修改时间
*/
@JsonIgnore
private LocalDateTime updateTime;
/**
* 创建时间和修改时间的调用
*/
public void setData() {
if (id == null) {
//添加功能
this.createBy = 1L;//创建人
this.createTime = LocalDateTime.now();//当前创建时间
} else {
this.updateBy = 2L;//修改人
this.updateTime = LocalDateTime.now();//当前修改时间
}
}
}