• MySQL数据库开发规范


    MySQL数据库开发规范

    一、命名规范
    1.库名、表名、字段名必须使用小写字母,并采用下划线分割
    2.库名、表名、字段名中禁止使用‘-’(减号)或其它关联字符(如to、from等)
    3.库名、表名、字段名禁止超过32个字符,需要见名知意
    4.视图以_view结尾、事件以_event结尾,触发器以_triger结尾,存储过程以_proc结尾,函数以_func结尾
    5.普通索引以idx_col1_col2名命,唯一索引以uk_col1_col2开头
    6.临时库、表须以_tmp+日期为后缀(如eip_con_tmp20200701)

    (例)库名规范写法:cms_general
    表名规范写法:eip_con
    字段名规范写法:con_code
    普通索引规范写法:idx_con_type
    唯一索引规范写法:uk_con_code
    视图规范写法:ipo_po_view
    事件规范写法:ipo_po_event
    触发器规范写法:ipo_po_triger
    存储过程规范写法:ipo_po_proc
    函数的规范写法:ipo_po_func

    二、库、表基础规范
    1.使用Innodb存储引擎
    2.库、表字符编码统一使用utf8mb4,校对字符集使用utf8mb4_general_ci
    3.给所有的表和字段添加注释,对含有字典的字段要在注释中标明数据字典
    4.单表字段不应超过50,超过50个字段的单表应垂直分表
    5.所有的表都应显示指定主键,除业务主键外还应设置递增的逻辑主键(无意义主键)保证记录的顺序存取
    6.禁止使用外键,避免插入记录时做主表校验
    7.尽量不要使用存储过程、视图,禁止使用触发器、事件影响debug问题定位和数据库不记录log
    8.数据库中不允许使用明文密码,使用加密工具对数据进行脱敏后存储
    三、字段规范
    1.对于长度固定且更新频繁的列使用char字符类型
    2.varchar(M)类型的M值不得超过4000,避免影响单行记录最大字符数
    3.对于存放容量很大,操作不频繁的值可以使用text类型,text类型可变长,在20字节以后的内容在数据页以外的空间存储,多一次寻址,避免创建索引
    4.status、type、flag等字段使用tinyint类型
    5.对于数据类型字段使用unsigned存储非复数值
    6.主键建议使用bigint unsigned
    7.时间类型的字段建议优先使用timestamp,timestamp占4字节,datetime占8字节,且两者时间范围不同(timestamp只支持1970-01-01 08:01 ~ 2038-01-19 11:14:07)
    8.索引字段一定要设置成not null,否则影响优化器对索引的选择
    9.字段尽量使用not null,如果不能保证insert时一定有值,应设定default值并指定含义
    10.不同表中的同一意义的字段属性必须相同(字段名、数据类型、字段长度)
    四、SQL规范
    1.杜绝使用 select *
    2.确定返回结果只有一条时使用limit 1
    3.避免隐式转换对性能的影响
    4.禁止在where条件上使用函数,会导致索引失效,如必须使用应放在右侧的常量上
    5.使用like模糊匹配时不要将%放在首位导致索引失效
    6.尽量将复杂的SQL拆分成简单SQL(不以代码处理复杂为由),若查询条件涉及多个索引可以拆分成多个SQL再讲结果union all
    7.使用join代替子查询,避免临时表的建立
    8.在没有去重要求的操作使用union all代替union,减少排序的cost
    9.分页方式应将上一次的分页边界值放在where条件中再limit
    10.杜绝使用恒真的where条件,避免SQL注入
    11.业务SQL不允许出现DDL语句
    五、行为规范:
    1.禁止在数据运维组不知情的情况下大批量导入导出数据
    2.禁止对大表执行ctas(锁表)以及insert into ... select(阻断其它会话DML)操作
    3.备份恢复数据避开高峰期,由数据运维组操作

  • 相关阅读:
    动态调用web服务
    组件设计实战--组件之间的关系 (Event、依赖倒置、Bridge)
    .NET平台下可复用的Tcp通信层实现
    推荐所有的.NET开发人员阅读《J2EE Development without EJB》
    关于跨程序集的反射(续)
    IoC与DI (转载)
    某公司的一道机考题的解答
    使用 EmptyClass 避免条件判断
    EsbAOP应用--权限管理
    企业(分布式)计算十大谬误
  • 原文地址:https://www.cnblogs.com/q1359720840/p/13522294.html
Copyright © 2020-2023  润新知