21 常用的时间类型
实战时间类型的特点
22 字符串类型的特点
23 如何为数据选择合适的的数据类型
23.1 优先选择符合存储数据需求的最小数据类型
INET_ATON( '255.255.255.255' ) = 4294967295
INET_ NTOA(4294967295) ='255.255.255.255'
23.2 谨慎使用ENUM,TEXT字符串类型
23.2.1 ENUM 的迁移
数据迁移的时候,它几乎不可能被其他数据库所支持,如果 ENUM 里面是字符串,对于其他数据库来说就更郁闷了,还不能设为tinyint等类型的字段
23.2.2 ENUM 的索引
纯数字类型的不建议用枚举类型,这是因为在 ENUM 内部维护有一个隐形的索引,也是按数字排列的,容易混淆;添加枚举值也是一个问题,如果添加在最后还好,如果添加在中间什么位置的话,原来的隐藏索引将不再起作用
23.2.3 ENUM 字段 的NULL 值
ENUM 字段默认是可以插入 NULL 值的,这个就比较尴尬了,而且没有办法优化
23.2.4 插入的值
如果插入的值比ENUM设定的值大,会默认保存成接近的那个值;插入的值不能包含函数,不能传递参数
所以如果插入的值是数字型的,建议用tinyint,如果插入的值是字符型的,建议用char。如果真想用 ENUM 也是可以得,前提是要了解到 ENUM 的弊端,就可以有效规避这些问题
23.4 同财务相关的数值型数据,必需使用decimal类型。
24 为项目表们选择合适的数据类型
24.1 课程表
24.2 章节表
24.3 小节表
24.4 课程分类表
24.5 课程难度表
24.5 课程方向表
24.6 用户表
24.7 问答评论表
24.8 笔记表
24.9 用户选课表
30 如何为表和列选择合适的名字
- 所有数据库对像名称必须使用小写字母可选用下划线分割
- 所有数据库对像名称定义禁止使用MySQL保留关建字
- 数据库对像的命名要能做到见名识义,并且最好不要超过32个字
- 临时库表必须以tmp为前缀并以日期为后缀
- 用于备份的库,表必须以bak为前缀并以日期为后缀
- 所有存储相同数据的列名和列类型必须一致。
31 总结
工程师的必备技能
1、前奏:【业务分析】欲善其事,必三思而行;
2、高潮:【逻辑设计】范式化VS反范式化;
3、结束:【物理设计】存储引擎&数据类型&命名规约。
内容综述
- 数据库的逻辑设计规范
- MySQL的常用存储引擎及其选择方法
- MySQL的常用数据类型及其选择方法
- 如何为表选择适合的存储类型
- 如何为表起一个好名
参考
数据库设计 MySQL慎用 ENUM 字段