设计规范

DB规范

一. 目的

 规范化和标准化 MySQL 开发设计。 

指导研发人员合理使用 MySQL ,发挥 MySQL 最优性能。 

二、名词

 
  

术语和缩略语

描述

主键( PK )

Primary Key ,自带唯一和非空约束的索引键, 一个表中只有一个主关键字,主关键字又称为主键。

外键 ( FK )

Foreign Key,建立于表与表之间的联系,方便程序的编写。

索引

Index ,索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

覆盖索引

Covering Index , InnoDB 支持覆盖索引(或称索引覆盖),即从辅助索引中可以得到查询的数据,而不需要查询聚簇索引中的记录。

聚簇索引(聚集索引)

Clustered Index , 聚簇索引并不仅是一种单独的索引类型,而且是一种数据存储方式。 InnoDB 的聚簇索引实际上在同一个结构中保存了 B+Tree 索引和数据行。

InnoDB 的聚簇索引即主键索引。

二级索引(辅助索引)

Secondary Index , 非聚簇索引, InnoDB 的二级索引索引节点存储索引值,叶子节点保存的不是指向行的物理位置指针,而是相应行的主键值,即二级索引存储索引值和主键值。

 
 

三、规范 

正向: 

1.数据库库名、表名、字段名由小写字母、数字组成,以_连接,最长32字符, 

命名避免使用mysql保留字,mysql保留字见下: 

https://dev.mysql.com/doc/refman/5.7/en/keywords.html 

2.默认字符集 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci。 

3.mysql 数据库存储引擎强制使用InnoDB。 

4.单个表的字段数控制在 20个以下,最好不超过50个。单个表不超过20个char 或varchar 字段

   单表不超过50个纯int字段 

5.非唯一索引必须按照“idx_字段名称_字段名称[_字段名]”进行命名, 

唯一索引必须按照“uniq_字段名称_字段名称[_字段名]”进行命名。 

6.表中字段一律not null,用default值。 

7.一般情况使用自增列或者全局递增的 ID (无分库分表则用自增列,否则用全局递增 ID ) 作为主键。 

8.记录系统事件发生时间,如gmt_create,gmt_modify,使用TIMESTAMP类型, 

高并发如支付的事件记录到毫秒,可采用 timestamp(3)。

 
 

反向: 

9.一般禁止使用自定义函数、触发器以及外键, 

有特别需要通过DBA、架构师评审通过后在设计文档说明。 

10.禁止在数据库中使用存储图片、文件,视频等,文件存储在文件服务里, 

数据库只存对应url. 

11.禁止使用三表以及三表以上 JOIN 连接查询。 

12.为发挥索引的价值,禁止在索引列上进行数学运算、函数运算(会使索引失效),禁止在

索引列上进行类型转换。

 
 

分布式: 

13.分表 预计未来一年内,单表数据量 >1000 万行或单表存储容量 >10G ,考虑分表; 

分表的字段上必须有索引,或者是组合索引的首列; 

分表方式有取模分表,时间分表等。

原文地址:https://www.cnblogs.com/beilong/p/14665813.html