mysql数据库开发管理规范
规范1:Mysql数据库的名字最好跟应用的名字一致
规范2:表命名总长度不能超过26位
规范3:表名由英文单词与下划线组成,表名中禁止使用中横线‘-’ ,单词之间用下划线隔开,严禁使用中文拼音。对于单词超长的,可使用单词缩写,但是单词缩写必须能够完整表达原单词的含义。禁止新建表名和原有系统中已有表名重名
规范4:表名必须使用小写,如果大小写混合用,可能存在abc,Abc,ABC等多个表共存,容易导致混乱;
规范5:无特殊用途,线上使用InnoDB存储引擎,innodb主键推荐使用自增列;
规范6:表字符集选择UTF8
规范7:每个表都需要添加表注释,方便其他开发人员查看
规范8:合理分表,控制单表数据量,int型建议不超过1000w,含char则不超过500w
规范9:临时表命名方式:TMP_表缩写
规范10:字段名必须非Mysql关键字,具体的可以查看MySQL关键字文档
规范11:控制单表列数量,字段少而精,字段数建议在20以内;
规范12:字段名长度不得超过15位;
规范13:存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE,浮点数存在误差;
规范14:整形定义中不显示规定显示长度,比如使用INT,而不是INT(4);
规范15:尽可能不使用TEXT、BLOB类型,varchar的性能会比text高很多;实在避免不了blob,请拆表,单独存放blob字段数据;
规范16:只存储年使用YEAR类型;
规范17:如果是索引字段,强烈建议定义为not null;
规范18:禁止在数据库中使用VARBINARY、BLOB存储图片、文件等;
规范19:Mysql字段上禁止单独指定字符集;
规范20:表的每个字段都需要添加相应注释,方便其他开发人员查看;
规范21:字段的命名需要有含义,字段命名要能真实表达字段的意义。对于外键引用的字段,需要与主表的字段名保持一致。
规范22:主键约束:表名_字段名_PK,约束名的最大长度为30位
规范23:尽量少的使用外键,请由程序保证约束;
规范24:唯一性约束:表名_UNIQ,对于存在多个唯一性约束的表,唯一性约束的命名为:表名缩写_字段名_UNIQ 2.1.5索引的命名,索引名的最大长度为30位
规范25:索引:表名_字段名_IDX
规范26:索引中的字段数建议不超过5个,唯一键由3个以下字段组成,唯一键不和主键重复
规范27:索引字段的顺序需要考虑字段值去重之后的个数,个数多的放在前面
规范28:索引名称必须使用小写
规范29:UPDATE、DELETE语句也需要根据WHERE条件添加索引
规范30:不建议使用%前缀模糊查询,例如LIKE “%koo”,这样会导致无法使用列上的索引而做全表扫描
规范31:合理创建联合索引(避免冗余),(a,b,c) 相当于(a) 、(a,b) 、(a,b,c)
规范32:单张表的索引数量控制在5个以内,禁止在每一个where条件列上创建索引,索引一定不是越多越好(能不加就不加,要加的一定得加),去重后记录条数过少不适合建索引,例如“性别”,“状态status”;
规范33:创建表脚本命名为:_DDL.SQL
规范34:修改线上表脚本命名为:_OTHER.SQL因为修改线上表的动作风险较大,所以对线上已存在的表修改脚本,需要单独列出,命名为DATABASE_OTHER.SQL
规范35:create table语句参数需要显示指定ENGINE,CHARSET选项,表中有AUTO_INCREMENT自增列的,需要指定AUTO_INCREMENT的初始值
规范36:每个表的字段数目不要超过100个
规范37:字段必须定义合适的数据类型
规范38:日期字段推荐使用TIMESTAMP和DATETIME数据类型,尽量不使用CHAR 和VARCHAR2,DATETIME记录年月日时分秒,并且记录的年份比较久远,那么最好用datetime,而不是timestamp,它的时间范围比较短,TIMESTAMP表示的时间为1970-01-01 08:00:01到2038-01-19 11:14:07
规范39:所有表都默认加两列:
1:created_time datetime not null
2:update_time timestamp default current_timestamp on update current_timestamp
规范40:关联表之间相同字段的数据类型和类型长度必须完全一致,如果关联表之间相同字段的数据类型不一致,那么在通过关联字段进行关联表之间的联合查询的时候,会导致执行计划出现问题,影响SQL语句效率。
规范41:表和字段必须有comment中文注释表和字段必须有中文注释,注释采用comment on的形式;
规范42:根据更新的频繁程度决定字段的顺序为提高数据库效率,建议将更新频繁程度高的字段排在表中靠前的位置。越靠后的字段效率越低:
规范43:创建表时,添加必要的约束
规范44:相同用途的字段,在各个表里的定义属性完全一致;
规范45:不在表中添加外键关联为了提高数据库处理效率,尽量不在表中添加外键的关联关系。该关系由应用来保证。
规范46:表结构变更需要通知DBA审核
规范47:禁止删除线上表字段,或修改线上表及字段名
规范48:对同一个表add/modify多个字段时,每种情况需写成一个sql语句,既表达清晰,又能保证在报错的情况下可重复执行