数据库规范
命名规则
全局命名规则
- 使用具有意义的英文词汇命名,词汇中间以下划线分隔"_"
- 命名只能使用英文字母、数字、下划线,以英文字母开头
- 避免用数据库中的保留字如:SELECT、FROM
- 所有数据库对象使用小写字母
库名规则
- 数据库命名尽量不超过30个字符
- 数据库命名一般为项目名称+代表库含义的简写,如:finger_plus
- 数据库创建时必须添加默认字符集和校对规则子句,如:字符集(utf8mb4)
表名规则
- 常规表表名命名规则 模块(包含模块含义的简写)+ 表(包含表含义的简写),比如用户模块的用户信息表:user_info
- 临时表,命名规则:temp前缀+模块+表+日期后缀:temp_user_info_20220413
- 备份表(用于保存和归档历史数据或者作为灾备恢复的数据)命名规则,bak前缀+模块+表+日期后缀:bak_user_info_20220780
- 同一个模块的表尽可能使用相同的前缀,表名称尽可能表达含义
- 常规表表名尽量不超过30个字符,一般不超过三个英文单词,temp表和bak表视情况而定,也尽量简短为宜
- 表的名称一般使用名词或者动宾短语(实在不行可以使用拼音首字母)
- 用单数形式表示名称(表名不使用复数名词),列如:使用 user ,而不是 users(因为用户表是一个的而不是多个)
- 表必须填写描述信息(建表时可以用注释详细写出表细节的作用,不同数据库的注释都不一样)
--表名示例
customer_info --会员信息
customer_address --会员收货地址
pt_admin --平台管理员用户
pt_role --平台角色
字段名规则
- 字段命名需要表示其实际含义的英文单词或简写,单词之间用下划线 _ 进行连接,如 service_ip、service_port
- 各表之间相同意义的字段必须同名,比如a表和b表都有创建时间,应该统一为add_time
- 字段名尽量不超过30个字符,一般采用名词或动宾短语,选词必须易于理解,一般不超过三个英文单词(实在不行可以使用拼音首字母)
- 字段必须填写描述信息
- 在命名表的列时,不要重复表的名称(如:在 user 表中,出现 user_name 字段)
-- 字段名示例
id --主键
add_time --添加时间
last_update_time --最后一次更新时间
视图命名规则
- 视图名以v开头,表示view,完整结构是v+视图内容含义缩写。
- 如果视图只来源单个表,则为v+表名。如果视图由几个表关联产生就用v+下划线(_)连接几个表名,视图名尽量不超过30个字符。如超过30个字符则取简写。
- 如无特殊需要,严禁创建视图。
- 其他命名规则与表名相同
存储过程命名规则
- 存储过程名以sp开头,表示存储过程(storage procedure)。之后多个单词以下划线(_)进行连接。存储过程命名中应体现其功能。存储过程名尽量不能超过30个字符。
- 存储过程中的输入参数以i_开头,输出参数以o_开头。
函数命名规则
除了前缀改为“f_”,其余与存储过程相同
数据库设计规范原则
- 表不应该有重复的值或者列
- 每个表必须要有主键
- 减少每张表使用的索引数量,因为维护索引的成本很高
- 对于所有的非参数、非代码类实体表,增加相应的技术字段(创建时间create_time,创建用户create_user,变更时间update_time,变更用户update_user),用以记录数据操作的记录,以便于数据审计
- 单个表尽量保证只存在一个大字段
- 单个表字段总设置行长度不要超过8k
- 字段不能使用enum,set类型,应该使用TINYINT来代替
- 单个表的索引个数最多不要超过7个
- 所有字段尽量定义为NOT NULL,如需default 空,建议使用default ‘’。如果null字段建立索引,需要额外的1字节,使索引,索引统计,值的比较变得更复杂
- 所有表、列、视图等必须有comment注释,便于开发和后期维护