T31训练营笔记(2)MySQL设计规约

1.建表规约

1.1 表、字段命名

(1)必须使用小写字母或数字
(2)禁止出现数字开头
(3)禁止两个下划线中间只出现数字
(4)不使用复数名词
(5)禁用保留字
(6)是与否概念的字段,必须使用 is_xxx 的方式命名

1.2 数据类型

(1)小数类型为decimal
(2)货币数据使用最小货币单位,数据类型为bigint
(3)字符串长度几乎相等使用char
(4)varchar长度不要超过5000

1.3 表必备三字段

id、create_time、update_time

2.索引规约

2.1 索引的特性

持久性、有序性

2.2 索引的分类

(1)存储形式:聚簇索引、非聚簇索引
(2)数据约束:主键索引、唯一索引、非唯一索引
(3)索引列的数量:单列索引、组合索引
(4)覆盖索引不是创建的索引

2.3 索引的数据结构

(1)二叉查找树:在极端情况下接近于链表的结构,效率低下
(2)平衡二叉查找树:每次插入数据需要做平衡操作,层级太多,IO次数太多
(3)btree:每个节点固定大小,每个节点存储数据,导致每一层存储的数量较少,在表字段较多的情况下可能出现层级变多
(4)b+tree:只有叶子节点存储数据,非叶子节点只存储索引字段值,减少层级,提高查询效率

2.4 索引命名

主键索引:pk_字段名
唯一索引:uk_字段名
普通索引:idx_字段名

2.5 创建索引

(1)有唯一特性的字段必须建成唯一索引
(2)在 varchar 字段上建立索引时,必须指定索引长度
(3)建组合索引的时候,区分度最高的在最左边。

3.SQL与ORM映射规约

3.1 SQL规约

(1)注意字段类型、利用覆盖索引、利用有序性、禁模糊
(2)超过三个表禁止join
(3)使用count(*)
(4)count(distinct col)计算该列除NULL之外的不重复行数
(5)使用ISNULL()判断是否为NULL值

3.2 ORM映射规约

(1)在表查询中,一律不要使用*作为查询的字段列表
(2)POJO类的布尔属性不能加is,而数据库字段必须加“is_”
(3)查询返回结果都需要使 用ResultMap映射
(4)不要使用${}
(5)不要使用MyBatis自带的queryForList方法
(6)不允许直接使用HashMap与Hashtable接收结果集
(7)更新数据表记录时,必须同时更新update_time
(8)不要写一个大而全的数据更新接口

4.数据库设计实战

4.1 数据库设计三大范式

(1)每列属性不可拆分
(2)表中的每列都和主键相关
(3)每列都和主键列直接相关,而不是间接相关

你可能感兴趣的:(T31训练营,mysql,数据库)