数据库使用规范

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Webben/article/details/78720777

命名规范

命名总规则

  1. 所有名称的字符范围为:A-Z, a-z, 0-9 和_(下划线)。不允许使用其他字符作为名称。
  2. 采用英文单词或英文短语(包括缩写)作为名称,不能使用无意义的字符或汉语拼音。
  3. 名称应该清晰明了,能够准确表达事物的含义,最好可读,遵循“见名知意”的原则。

表命名规范

  1. 表名以代表表内的内容的一个和多个名词组成,以下划线分隔,单词默认采用小写。
  2. 表名需要增加前缀,例如:entity表示主表,link表示关系表,auth表示权限表,xs表示xunsearch的索引表。
  3. 表的前缀以后,是表的具体内容的描述。
  4. 一些作为多对多连接的表,可以使用两个表的前缀作为表名
  5. 当系统中有一些少量的,重复出现的值时,使用字典表来节约存储空间和优化查询。如地区、系统中用户类型的代号等。这类值不会在程序的运行期变化,但是需要存储在数据库中。字典表统一以dic_作为前缀。

字段命名规范

  1. 字段不使用任何前缀(表名代表了一个名称空间,字段前面再加前缀显得罗嗦)
  2. 字典名也避免采用过于普遍过于简单的名称:例如,用户表中,用户名的字段为UserName比Name更好。
  3. 布尔型的字段,以一些助动词开头,更加直接生动:如,用户是否有留言HasMessage,用户是否通过检查IsChecked等。
  4. 字段名为英文短语、形容词+名词或助动词+动词时态的形式表示,大小写混合,遵循“见名知意”的原则。

SQL语句规范

  1. 不允许写SELECT * FROM ……,必须指明需要读取的具体字段。
  2. 不允许使用CREATE TABLE …… SELECT …..
  3. 尽量避免使用子查询。、
  4. 尽量避免在数据库中做运算。
  5. 所有的SQL关键字大写
  6. 在使用索引时需要注意字段格式,当字段为字符类型而where条件中匹配的是数字时,虽然不会报错,但是无法使用索引。
  7. 尽量避免使用触发器和视图
  8. 不要在where后的筛选字段上做运算
  9. 9.

数据库表设计规范

  1. 字符集使用utf8mb4
  2. 存储引擎使用innodb
  3. 主键应是名为id ,且类型为bigint 的自增字段。
  4. 对表和字段都添加备注说明。
  5. 尽量避免使用NULL,创建列时应指定为NOT NULL,可以使用0、一个特殊的值或者一个空串代替空值。
  6. 选用能满足需求的最小类型,对于固定长度的字符串应使用char类型,对于varchar类型应根据实际使用,不要分配过大的长度。varchar(50)表示最大存储50个字符而不是50字节。
  7. 存储时间数据应尽量采用datetime格式,对于自动记录更新时间的字段可以采用timestamp类型。
  8. 应尽量避免将地段设为text和blob类型,如果不能避免,应尽可能在设计表时将text和blob类型的字段从大表中分隔开。
  9. 避免使用外键,以提高性能

索引添加原则

  1. 最左前缀匹配原则,这是索引中最重要的一个原则。简单的讲就是,当你创建一个(a,b,c,d)的索引时,这个索引中已经包含了索引(a,b,c)、(a,b)、(a),而不需要再单独创建这些索引了。
  2. 尽量少的创建索引,当你创建了一个索引时,虽然提高了查找速度,但是却在修改数据时额外增加了修改索引的开销。
  3. 索引列不应成为表达式的一部分或者函数的参数。
  4. 如果复合索引中的某一列需要频繁使用范围查找,应将该字段放到复合索引的最后,因为当复合索引中某一字段进行了范围查找后,那么他之后的索引将不能被使用。
  5. 当使用LIKE关键字做范围查找时,只有形如LIKE ‘abc%’这样的匹配可以使用到索引,而LIKE ‘%abc’和LIKE ‘%abc%’则无法使用索引。
  6. 超过20个长度的字符串列,应做前缀索引,例如:alter table city_demo add key (city(6));利用city的前6个字符做索引。
  7. 在排序中也可以利用索引,但是要求排序顺序和索引顺序相同。

线上数据库修改规范

  1. 线上数据修改应由各部门负责人审批通过后交由DBA进行修改。
  2. 对于多项修改之间有先后顺序的,申请修改时应注明修改顺序。
  3. 对于线上数据修改,DBA应根据修改的内容评估变更的规模,以及制定恢复方案,如:在修改前备份修改的内容。
  4. 对于线上表结构变更,DBA应确认该表没有大规模/长时间事务运行的情况下使用online DDL或者pt-online-schema-change修改。

DB服务器登陆权限规范

  1. DB服务器应由DBA(或经由DBA授权后)登录进行操作;
  2. DB服务器禁止长时间执行与数据库无关的命令或程序;
  3. DB服务器禁止执行可能会消耗大量系统资源(包括IO,内存,CPU等),且与数据库无关的命令或程序;
  4. 应尽量避免直接使用命令行操作数据库,建议使用图形客户端或者脚本操作数据库,以避免误操作;
  5. 使用交互式连接时(包括各类数据库客户端),如短时间内不进行操作,应及时断开连接,以避免误操作

DB服务权限规范

  1. 应用程序帐号权限需要做严格限制,对不同应用需求使用不同权限和操作范围帐号, 要有部门负责人确认;
  2. 所有帐号名称、访问权限、应用程序名称必须记录在案;
  3. 在防火墙上严格限制数据库端口访问的IP地址,只有正常对外服务的应用服务器IP 可以访问相关数据库;
  4. 数据库超级用户权限使用严格限制;

DB服务器及服务安全参数和密码设置

  1. 帐号密码需要有复杂性要求(字母、数字、特殊符号);
  2. 线上使用的账户只允许内网访问
  3. 超级用户账户每3个月更新一次密码
  4. root用户只允许本地登录

猜你喜欢

转载自blog.csdn.net/Webben/article/details/78720777