命名规范是指数据库对象如数据库(SCHEMA)、表(TABLE)、索引(INDEX)、约束(CONSTRAINTS)等的命名约定。
1. 原则
命名使用具有意义的英文词汇,词汇中间以下划线分隔。
命名只能使用英文字母、数字、下划线。
避免用MySQL的保留字如:call、group等。(保留字详见附录)
所有数据库对象使用小写字母。
2. 命名规范
2.1 数据库命名规范
数据库名不能超过30个字符。
数据库命名必须为项目英文名称或有意义的简写。
数据库创建时必须添加默认字符集和校对规则子句。默认字符集为UTF8MB4。示例见设计规范。
命名应使用小写。
附: MySQL中Unicode字符集列表:
字符集名称 | 字节占用 | 字符集兼容性 | Unicode字符支持 |
UCS2 | 每字符2字节 | 所有Unicode 3.0字符 | |
UTF16 | 每字符2字节,或4字节。 | 与UCS2兼容 | 所有Unicode 5.0和Unicode 6.0字符,包括扩展字符。 |
UTF16LE | 与UTF16相同,只是字节顺序相反。 | 所有Unicode 5.0和Unicode 6.0字符,包括扩展字符。 | |
UTF8 | 每字符1到3字节。 | 所有Unicode 3.0字符 | |
UTF8MB4 | 每字符1到4字节。 | 与UTF8兼容 | 所有Unicode 5.0和Unicode 6.0字符,包括扩展字符。 |
UTF32 | 每字符4字节。 | 所有Unicode 5.0和Unicode 6.0字符,包括扩展字符。 |
2.2 表命名规范
同一个模块的表尽可能使用相同的前缀,表名称尽可能表达含义。
多个单词以下划线(_)分隔。
表名不能超过30个字符。
普通表命名规则为 模块名_表描述(或有意义的简写)。
例如:
是否正确 | 举例 | 说明 |
错误 | APP_USER、USER、TEST | |
正确 | SEC_USER | SEC为权限模块(SECURITY)的简称,USER是表描述 |
临时表(运营、开发或数据库人员临时用作临时进行数据采集用的中间表)命名规则:加上tmp前缀和8位时间后缀(tmp_test_user_20130501)。
备份表(运营、开发或数据库人员备份用作保存历史数据的中间表)命名规则:加上bak前缀和8位时间后缀(bak_test_user_20130501)。
命名应使用小写。
字段命名需要表示其实际含义的英文单词或简写,单词之间用下划线(_)进行连接。
各表之间相同意义的字段必须同名。
字段名不能超过30个字符。
常用约定:
序号列字段:以id后缀,如:user_id表示用户编号。
编码字段:以code后缀,如:cust_code表示客户编码。
时间字段:
1)精确到日的字段,以_date作为后缀。如:open_date表示开户日期。
2)精确到秒或毫秒的,以_time作为后缀。如:register_time表示注册时间。
布尔值字段:命名以“is_”前缀+字段描述。如member表上表示为enabled的会员的列命名为is_enabled。
命名应使用小写。
2.3 视图命名规范
视图名以模块名_v结尾,表示view。
视图由几个表关联产生就用下划线(_)连接几个表名,视图名不能超过30个字符。如超过30个字符则取简写。
如无特殊需要,严禁开发人员创建视图。
命名应使用小写。
2.4 存储过程命名规范
存储过程名以_proc结尾,表示procedure。之后多个单词以下划线(_)进行连接。存储过程命名中应体现其功能。存储过程名不能超过30个字符。
存储过程中的输入参数以i_开头,输出参数以o_开头。
命名应使用小写。
2.5 函数命名规范
函数名以_func结尾,表示function。之后多个单词以下划线(_)进行连接,函数命名中应体现其功能。函数名不能超过30个字符。
函数中输入参数以i_开头,输出参数以o_开头。
命名应使用小写。
2.6 触发器命名规范
触发器以_tri结尾,表示trigger。
基本部分,描述触发器所加的表,触发器名不能超过30个字符。
后缀(_i,_u,_d),表示触发条件的触发方式(insert,update或delete)。
如无特殊需要,严禁开发人员使用触发器。
命名应使用小写。
2.7 索引命名规范
二级(辅助)索引以idx_开头,唯一索引以uidx_开头。后面紧跟索引所在的字段名。如要在id列上添加二级索引,则应为idx_id。
多单词组成的列名,取尽可能代表意义的缩写,如test_contact表member_id和friend_id上的组合索引:idx_mid_fid。
组合索引命名应注意字段顺序。如在字段member和字段userid上创建组合索引,则可以命名为idx_userid_member(‘userid’,‘member’)
命名应使用小写。
2.8 约束命名规范
唯一约束: uk_表名称_字段名。
外键约束:fk_表名,后面紧跟该外键所在的表名和对应的主表名(不含t_).子表名和父表名用下划线(_)分隔。
非空约束:如无特殊需要,建议所有字段默认非空(not null),不同数据类型必须给出默认值(default)。
出于性能考虑,如无特殊需要,建议不使用外键。参照完整性由代码控制。
命名应使用小写。