admin 发表于 2017-12-13 17:16:30

MySQL数据库使用规范


[*]DDL规范:

[*]数据库名、表名和字段名都小写,需要区分词意以“_”连接
[*]禁止使用关键字做为库、表、字段名
[*]表,字段名需要有注释,注释简单明了
[*]必须有主键,主键需要为int/bigint unsigned
[*]主键ID 是和业务无关的自增id
[*]不允许使用外键
[*]字段不允许为NULL,需为not null default 0(or default '')(text/blob类型除外)
[*]索引名为idx_开头,唯一键以uk_开头,后以字段名(或字段名缩写)拼接
[*]使用字符集 utf8/utf8mb4
[*]非特殊情况,不允许指定与库不一致的编码规则与排序规则
[*]date/datetime/timestamp默认值使用合法的时间,建议统一使用"1971-1-1 00:00:00"
[*]密码生成规则:数字大小写字母特殊字符混合的生成策略
[*]DML规范:

[*][重要] 调用方需要有错误重试机制,毕竟网络都不能保障绝对100%的可用,所以调用端一定要有容错机制!
[*][重要] 长连接需要业务自己做心跳保活!如果不做探活,那么需要有错误重试机制!
[*][重要] 长连接需要业务自己限制最大使用时间和最大复用次数,确保流量在各proxy上保持均衡,防止proxy异常恢复后负载均衡失效!
[*][重要] 线上业务查询一定要根据索引查询,避免查全表 以及 结果集较大的查询
[*][重要] delete/udpate 必须带where(强制要求)
[*]数据链路规范:
[*]

[*]分表规范

[*]分表命名必须为“表名_自然数”,分表序号前不可随意添加0,如:g_order_1,不可命名为g_order_01
[*]分表表名前缀不可重复
[*]不可多级分表(即不允许分表格式为“表名_xx_xx”,如:不可命名为g_order_01_02)
[*]表字段变更(新增、类型变更等)必须在所有分表范围内一致变更
[*]临时表命名规范

[*]临时命名必须以"temp_",以免与正式表名(含分表名)冲突
[*]不可与正式表表名重复
[*]变更操作规范

[*]字段类型不可随意变更
[*]变更字段类型必须先和数据下游使用方确认,否则可能造成数据丢失、下游数据报错等


页: [1]
查看完整版本: MySQL数据库使用规范