面试MySQL所需要知道的:数据库设计优化

谈到数据库优化,往往联想到SQL语句的优化,但SQL语句优化并不是数据库优化的全部。

数据库的优化有多种方式
数据库优化
这是不同层面的优化,有硬件级别的优化、系统的合理配置优化(比如连接数、占用内存等)、数据库表结构的优化以及SQL和索引的优化。

硬件和系统配置的优化暂且不谈,先来看看数据库结构的优化。

数据库命名

数据库的命名和编码

数据库命名必须要有规范,命名通常需要和项目名称一致,可以显而易见的知道该数据库属于哪个项目。

数据库的编码要选用合适的字符集,对于使用UTF-8字符集时通常使用utf8mb4而不是utf8。因为UTF-8时每个字符最多四个字节,而MySQL中的utf8每个字符只能存储三个字节。

数据库的所有命名必须使用小写字母,因为MySQL数据库对名称的大小写铭感,且单词之间使用下划线分割。

禁止使用MySQL中的保留关键字。

表的命名

最好在表名中添加数据库命名前缀,比如user表在多个数据库中使用,加上数据库命名的前缀,能清晰知道该表属于哪个数据库。且表的命名最好清晰易懂,能够通过表名知道表中存储的什么数。

合理使用前缀和后缀。临时的表必须用tmp为前缀并用日期为后缀,对于备份的库,表名必须使用bak为前缀,日期为后缀。这样能够知道在对表进行清理时可以更清晰。

表名不要使用复数形式,表名只是表示实体类型,而不是实体数量。

字段名

对于存储相同数据的列,必须统一列的名称和数据类型,为了关联查询时能用上索引。

逻辑设计

范式化设计

数据库设计有多个范式,通常需要满足三大范式:

  • 第一范式:表中所有字段都是不可再分
学生表
班级 姓名 课程
语文 数学 英语

比如这样的复合表就是不允许的

  • 第二范式:表中必须存在主键,且非主键必须完全依赖于全部主键。

如果表中只有一个列作为主键,那么该表就符合第二范式。
否则需要考虑非主键是否满足第二范式的要求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值