首页

数据库对象命名规范一(原则、命名、 表、视图、存储过程、函数、触发器命名规范)

标签:数据库设计,触发器规范,存储过程设计,视图规范     发布时间:2018-02-06   

命名规范是指数据库对象如数据库(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)。

  • 出于性能考虑,如无特殊需要,建议不使用外键。参照完整性由代码控制。

  • 命名应使用小写。