数据库设计:名词提炼法;名词考虑表或字段,动词考虑关系。
- 表结构
- 字段类型、是否允许为null、是否有默认值
- 索引设计
- 数据库引擎的选择
1.关系型数据,长期存储
2.主键
- 唯一标识、行号、不会重复
- 不能以业务数据作为主键
- 自增id,
3.纵向字段转成横向数据
- 用户选择的频道可以是多个,如果用户表存储多个频道数据,容易造成空间浪费
- 把纵向的字段转成横向的数据
- 节约空间存储
4.json数据
- mysql5.7版本后,json数据支持,类似于python字典,LONGTEXT
- 数据相对固定,变化较小,建议使用json;
- 如果是mysql5.7版本之前的,建议选择另创建一张表;
5.范式
- 三范式
- 1.字段不重复、原子性、不可以分割
- 2.满足第1范式的基础上,必须要有主键依赖
- 3.满足第1、2范式的基础上,非主字段之间没有依赖关系
6.反范式
-
利用空间换时间
-
利用表的字段来存储冗余数据,可以节省查询时间。
实名认证
活体认证、至少存储1张图片
7.字段类型
- tinyint/bigint/int
- int(10),int(20),int(50),tinyint(20)
- 字段数据类型的大小,是由括号外的类型决定,括号里面表示显示的宽度。
8.字符串
-
char,mobile,查询效率较高,容易浪费空间。
-
varchar,mobile,查询效率较低,存储节约空间。
9.索引
- 特殊的数据结构,作用是优化查询效率;主键、外键等;
- 哪些字段适合建立索引:
- 字段数据比较复杂,容易在查询语句中出现where后面的
- 字段数据比较简单,
- 索引越多,增删改效率越低;
- 外键:确保数据的完整性,没有外键,不影响数据的查询;
10.引擎
不同的引擎决定数据的存储结构,和查询语句执行的方式。
- MyISAM:不支持事务,插入和查询效率相对较高;安全性相对不高;
- InnoDB:mysql默认的引擎,支持事务,查询效率相对较低;安全性较高;
- 一个项目的数据库,不同表可以指定不同的数据库引擎。、
来源:https://blog.csdn.net/weixin_44782176/article/details/100935278