表名规范
对表名进行归类命名,且开头前缀使用单词缩写方式,命名为英文单词或单词缩写。
不要无缘无故的多出一种开头的表,以下是错误用法
错误一:即无归类,也未缩写
错误二:未缩写
常用缩写举例,此缩写也适用于代码变量或类名命名:
sys:系统类
tr:交易类
bs:基础数据类
acc:账户类
out:外部对接类
om:运营类
chk:对账类
stat:统计类
stl:结算类
clr:清分类
park:停车类
字段命名规则
小写英文单词或单词缩写,下划线分隔,保留常用单词惯用语,如账户状态acc_state、审核状态audit_state,但一般不会用status。
字段类型规则
按照标准用法即可,金额用数字、名称类用字符串,但如果是oracle里的char类型尽量不要用,哪怕是1个长度也要用varchar2(1)
表注释、字段注释规则
清晰完整,能起到一看注释就知道如何使用,可体现在如下几个方面:
① sequence字段,如:绑定id,sequence:seq_bind_id。
② 关联外键字段,如:车牌id,关联park_car_info表。
③ 格式需要特殊说明,如:
出生日期,YYYY-MM-DD;
交易金额,单位:分;
④ code类似字段,如:绑定状态,0待审核,1绑定,2审核不通过,9解绑,sys_code:CAR_BIND_STATE。
若code较长或者有可能扩展变化时,“0待审核,1绑定,2审核不通过,9解绑”具体code对应内容可不写明。
⑤ 需要特殊说明用法字段,如:审核时间,审核通过时,作为绑定时间使用。
因为一般数据库设计人员和开发人员可能不是同一人,哪怕是同一个人,也难免在时间一长后,忘记当时的设计思想。
其它同事使用这个表,查询、维护时,就知道如何与数据库设计人员的思路保持一致,比如对于审核时间,不作特殊说明,肯定不知道是当作绑定时间用。
以下截图举例说明,比较标准的表注释
mysql时间字段使用
mysql注意:对于时间字段,尽量不要使用默认值current_timestamp,原因是由于mysql双主机数据同步时,有可能造成两个库的同一个表的这种字段值不同,因为这个值是取当前要器的系统时间,因此需要从代码中赋值