您的位置:首页 > 数据库

数据表物理设计精彩讲解

2018-02-05 15:59 204 查看

物理设计

定义数据库、表及字段的命名规范

1、命名遵守可读性

2、表意性原则

3、长名原则

选择合适的存储引擎



通常情况下,请选用innodb做为存储引擎。

innodb主键需要考虑:

(1)主键应尽可能的小—提升索引效率

(2)主键应该是顺序增长得—增加数据的插入效率,减少随机IO生成。

(3)innodb的主键和业务主键可以不同

表中的字段选择合适的数据类型

当一个列可以选择多种数据类型时,应该优先数字类型,其次是日期或二进制类型,最后是字符类型。对于相同级别的数据类型,应该优先选择占用空间小的数据类型

——–>如何选择正确的整数类型



值得提下,有的程序员设置为Int为2宽度,以为是只占2宽度,其实是没有任何意义的,还是占有4个字节

——–>如何选择正确的实数类型



若是财务则需要非常精确的类型decimal,其他考虑使用float和double类型

如何选择VARCHAR和CHAR类型

1、varchar用于存储变长字符串,只占用必须的存储空间

2、列的最大长度小于255则占用一个额外字节用于记录字符串长度

3、列的最大长度大于255则要占用两个额外字节用于记录字符串长度

varchar长度的选择

1、使用最小的符合需求的长度

2、尽量避免在正式环境下修改长度,因为会引起锁表,对业务影响会很大。

varchar适用场景

1、字符列的最大长度比平均长度大很多

2、字符串列很少被更新

3、使用了多字节字符存储字符串

CHAR特点

1、CHAR类型是定长

2、字符串存储在CHAR类型的列中会删除末尾的空格

3、CHAR类型最大宽度为255

CHAR场景

存储的长度近似(MD5、身份证)

适合短字符串(男\女–char(1)比vchar好,在UTF8为例,char需要3个字节,而vchar则需要4个字节)

经常更新的字符串(减少存储碎片)

如何选择存储日期数据

mysql5.7以后会有如下两个类型:date类型和time类型; 存储用户生日时,只需要存储日期部分选择date。

使用date类型优点据

1、占用字节数比使用字符串、datetime、int存储要少,使用date类型只需要3个字节

2、使用date类型还可以利用日期时间函数进行日期之间的计算

time用于存储时间数据,格式为HH:MM:SS

存储日期时间数据主要事项

1、千万不要使用字符串类型来存储日期时间

日期时间类型通常比字符串占用的空间小,日期时间类型在进行查找过滤时可以利用日期来进行对比

日期时间类型还有丰富的处理函数,可以方便进行日期计算。

2、使用int存储日期时间不如使用Timestamp类型(时间戳存储),Timestamp比int资源占用更少。

Datatime类型

两部分组成 日期和时间,该类型与时区无关,占用8个字节存储。

Timestamp

存储的是时间戳,以YYYY-MM-DD HH:MM:SS显示 占用4个字节,Timestamp依赖指定的时区,在行的数据修改时可以自动修改timestamp的值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库设计