mysql的一些规范

我司的mysql规范,值得牢记

一.禁止内容

  1. 表字段类型 不推荐使用enum,set,blob,text等类型
  2. 表中所有字段都不能为空,需要设置not null属性,可以给默认值
  3. 表的主键列值禁止被更新,可以进行删除操作。
  4. 程序中不能试用中间表和备份表 表名以tmp_开头或者 bak_开头
  5. 数据库账号的授权需要具体到授权服务器的IP,禁止使用机器名和%
  6. 禁止使用insert、delete或update语句进行用户权限的设置,清理和修改操作
  7. 禁止使用old_password进行加密,数据库参数old_passwords必须置为OFF
  8. 禁止使用全文检索功能
  9. 禁止使用事件(EVENT)功能
  10. 禁止在mysql中使用用户自定义变量
  11. 不推荐使用外键,临时表,视图,自定义函数,存储过程以及触发器
  12. SELECT语句必须指定具体字段名称,禁止写成*
  13. SELECT语句禁止使用UNION,推荐使用UNION ALL
  14. INSERT语句必须指定具体的字段名称
  15. 禁止写成多层子查询嵌套的SQL语句,推荐改写成表顺序连接的格式
  16. 禁止在INSERT|UPDATE|DELETE|REPLACE语句中进行多表连接操作
  17. WHERE 子句中禁止只使用全模糊的LIKE条件进行查找,必须有其他查询条件
  18. WHERE子句中的索引列或组合索引前导列上不能使用函数

 二.数据库设计原则

  1.数据库名称 小写 字母 数字 _ ,不超32字符  例如: test_db

  2.数据库字符编码 utf8或者gbk

  3.表结构 :表名与字段名 小写 字母 数字 _ ,数据表量少推荐表名为 数据库缩写+表功能名 如 test_dict,量多按功能划分 如资源区可以用 r_dict,数据区可以用 d_dict。

       创建表时必须显式指定字符集,与库一致。

       创建表时必须显式指定表存储引擎类型。

      表中的自增列(auto_increment属性)推荐使用bigint类型

      状态status、类型type等字段推荐使用tinytint或者smallint类型

      IP地址字段推荐使用int类型

      使用表中必须有时间字段create_time和最后更新时间字段update_time

  4.索引的设计原则

      InnoDB类型表必须要有主键列

      索引类型必须为BTREE

      主键的名称以"pk_"开头

      唯一键以"uk_"开头

      普通索引以"idx_"开头

      分区表的分区字段(partition-key)必须有索引

  5. 数据库账号

      读写账号以"_w"后缀,只读账号以"_r"后缀

原文地址:https://www.cnblogs.com/JhoneLee/p/10615802.html