第二天MySQL 设计规范

162 阅读2分钟

MySQL 设计规范

一. 建表规范

解决对于数据库取名的难题,给字段选择合适类型和长度信息。

1. 表字段命名

名称必须小写字母或者数字及下划线

不能以数字为字段开头

不可使用复数名词

禁用保留字

表达是否概念字段,需使用“is_xx”的写法

2. 数据类型选择

小数类型使用“decimal”

货币数据使用最小货币单位,数据类型使用“bigint”。

如果一个字段的内容是固定的长度,要使用char。原因是会节约两个字符的空间,但是如果长度不一样不要使用char,这样长度小的字段取出来的数据会被自动填充,要使用trim才行。

varchar的长度最好不要超过5000。如果超过了,推荐使用text,longtext,blob等,而且这里有个细节,如果一个字段的长度够长,推荐使用另外一个表存储这些信息,可以提高查询的效率

3. 表的设计

表必须具备三个字段:id,create_time,update_time。

二. 索引规范

1. 索引分类

a)    按索引特性

持久性

有序性

b)    按存储形式

聚簇索引

非聚簇索引

c)     按索引数量

单列索引

组合索引

d)    innoDB索引相关

可以创建

l  主键索引

l  唯一索引

l  普通索引

不可创建

l  覆盖索引

2. 索引数据结构

a)    演变路线

二叉查找树->平衡二叉树->btree->b+tree

3. 索引命名

主键索引:pk_字段名,uk_字段名,idx_字段名

4. 建索引规范

在varchar字段上面建立索引,必须指定其长度

建立组合索引时,区分度最高的要在组合索引为的左边。比如idx_name_age (name,age)

三. SQL 和ORM映射规约

1. SQL 优化

注意字段类型。防止因为类型不同造成隐式转换,导致索引的失效。

利用覆盖索引来进行查询,避免回表。

尽量少用左模糊和全模糊匹配。如果实在要用,可以考虑走搜索引擎。

2. ORM 映射规约

在表查询中,一律不要用*作为查询的字段列表

查询的返回结果要用ResultMap映射,不能使用HashMap和HashTable作为结果集。