MySQL数据库开发规范简要
数据命名一般如无特殊情况一般采用全小写,且单词之间使用“_”分隔。
1. 表命名
①. 表名的格式一般为【表类型_业务名称_表的作用】:
表名一般由两部分拼接而成,一部分是表示实际的业务含义,比如面向对象中的实际的对象的名称;另一部分是表类型前缀(见前缀表1.1-1),表示的这张表的类型;
②.全部小写;
③.表的名称一般使用名词或者动宾短语;
④.不建议使用缩写,填写完整单词;
⑤.表的名字不能取太长(≤30个字符),一般不超过三个英文单词(特殊情况下允许4个单词),不推荐中文拼音,如果超过30字符,则允许使用单词缩写(请用约定俗成的缩写),但是需在表名注释中添加缩写的全名称。
⑥.多对多的连接表可以使用两个表的业务含义作为表名;
⑦.表名的单词一般都为单数(例:推荐Employee,不推荐Employees);
⑧.不要使用数据库关键字,如name、time、datetime、password等;
⑨.必须加表注释。表名注释支持换行,第一行会被视为表名。 表的介绍请换行填写
前缀表1-1
序号 | 类型 | 缩写 | 英文注释 | 数据特点 | 举例 |
---|---|---|---|---|---|
1 | 主表 | tm | Table of main | 数据量基本稳定,不会随时间线性增长 | 用户、产品、用户权限控制、 |
2 | 关联表 | tr | Table of Relationship | 同主表 | 用户⇌角色、用户⇌角色、 |
3 | 字典表 | td | Table of Dictionary | 同主表 | 基础配置、枚举 |
4 | 记录表 | tl | Table of Log | 随时间线性增长,可根据需要定时清除过期数据,需要按时间对表分区 | 登录日志、操作日志、设备上传数据 |
5 | 拓展表 | te | Table of Expansion | ||
6 | 统计表 | ts | Table of Statistic | 随时间线性增长,需要按时间对表分区 | 设备每日运行情况统计 |
7 | 任务表 | tt | Table of Task | 数据量不大,但肯能会随时间线性增长,数据量大时需要对表分区 | 一般都不怎么用,有的任务表同时还是作为记录表在使用,这种表一般都是当做用tl前缀 |
8 | 临时表 | tp | Table of Tmp | 临时存储数据使用,使用完毕后会立即删除 |
2. 字段1
① 必须显式指定主键
;
② 数据表的常规3个字段:id(bigint/int)、createTime(datetime)和updateTime(datetime);可根据实际情况酌情去掉个别字段,建议每个表都包含id字段;
③ 字段必须加注释;
④ 字段的第一行视为字段中文名,详细介绍和枚举类型请换行;
⑤ 所有字段尽量根据业务设置合理的缺省值
,尽量避免表中出现 NULL值;
⑥ 当字段为外键时,字段名为: 关联表_id, 注释需要在字段注释基础上,换行加上 #Table(关联表表名)
来说明关联的哪张表。(注意英文#号);
⑦ 当字段为枚举时,需按照模板配置:
(注意: 注释内容 需要替换成当前字段的具体注释)
注释模板1: 注释内容 #Enum(枚举类名 {枚举值英文名:val,“枚举值注释”; …})
注释模板2: 注释内容 #Enum({枚举值英文名:val,“枚举值注释”; …})
注释模板3: 注释内容 #Enum(枚举表中的枚举类名), 这种方式的前提是枚举表中必须预先设置好了这个枚举类;
3. 索引和外键
①必须加注释;
②索引格式为【前缀_当前表全名(或表名缩写)@字段名】;外键格式:【前缀_当前表名缩写_外部表名缩写@字段名】;
③长度不超过30个字符,若超过,可用先后采用字段名、表名的缩写来代替,直到长度满足条件为止。
注意:使用缩写时,需在注释中写明缩写的全名称;建议缩写使用表名中每个单词的首字母大写。
索引和主外键前缀表1.3-12
序号 | 类型 | 前缀 | 英文全名 |
---|---|---|---|
1 | 普通索引 | idx | index |
2 | 唯一索引 | uk | unique key |
3 | 外键 | fk | foreign key |