数据库知识汇总

数据库架构

如何设计一个关系型数据库?
在这里插入图片描述

范式理论

在这里插入图片描述
部分函数依赖:
在这里插入图片描述
传递函数依赖:
在这里插入图片描述

第一范式

非第一范式:

一个元素一列对应多个属性

姓名兴趣爱好
李四篮球 象棋

存在的问题:数据混乱

第一范式:

一个元素一列只有一个属性

姓名兴趣爱好
李四篮球
李四象棋

第二范式

第一范式:

每个人只能有一种兴趣,假设不存在姓名和年龄相同的人
存在部分依赖:

姓名年龄兴趣爱好兴趣类型
李四19篮球球类
李四18象棋棋类

由部分依赖导致的问题:

  1. 冗余数据:兴趣类型依赖兴趣爱好,兴趣类型冗余
  2. 插入异常:如果一种兴趣爱好比如足球,暂时没有人喜欢,就不能将“足球 球类"关系插入表中
  3. 删除异常:如果一种兴趣爱好比如篮球,李四不再喜欢,将会把"篮球 球类"的对应关系也删除
  4. 修改异常:如果修改一种兴趣爱好的类型,比如“篮球 球类”修改为"篮球 户外球类",需要修改所有的兴趣爱好为篮球的行

第二范式:

姓名年龄兴趣爱好
李四19篮球
李四18象棋
兴趣爱好兴趣类型
篮球球类
象棋棋类

第三范式

第二范式

非主属性传递依赖
每个人只能有一种兴趣

姓名兴趣爱好兴趣类型
张三篮球球类
李四足球球类
王五象棋棋类

姓名->兴趣 -> 类型

由于传递依赖产生问题:

  1. 冗余数据:兴趣类型依赖兴趣爱好,兴趣类型冗余
  2. 插入异常:如果一种兴趣爱好比如足球,暂时没有人喜欢,就不能将“足球 球类"关系插入表中
  3. 删除异常:如果一种兴趣爱好比如篮球,李四不再喜欢,将会把"篮球 球类"的对应关系也删除
  4. 修改异常:如果修改一种兴趣爱好的类型,比如“篮球 球类”修改为"篮球 户外球类",需要修改所有的兴趣爱好为篮球的行

第三范式

姓名兴趣爱好
张三篮球
李四足球
王五象棋
兴趣爱好兴趣类型
篮球球类
足球球类
象棋棋类

BCNF范式

https://baike.baidu.com/item/bcnf/9446795?fr=aladdin#4

第三范式

每名教练只能教一种兴趣爱好

姓名兴趣爱好教练
张三篮球王五
张三足球周七
李四足球赵六

姓名+兴趣爱好->教练
姓名+教练->兴趣爱好
教练->兴趣爱好

上面满足第三范式,但是依旧存在下面的问题:

  1. 冗余数据:兴趣类型依赖教练,教练和兴趣爱好信息冗余
  2. 插入异常:如果一种兴趣爱好和教练比如‘象棋 许银川’,暂时还没有人喜欢,就不能将“象棋 许银川"关系插入表中
  3. 删除异常:如果一种兴趣爱好比如篮球,张三不再喜欢,将会把"篮球 王五"的对应关系也删除
  4. 修改异常:如果修改一个教练教的兴趣爱好,比如“篮球 王五”修改为"羽毛球 王五",需要修改所有王五的兴趣爱好为羽毛球

BCNF范式

姓名教练
张三王五
张三周七
李四赵六
兴趣爱好教练
篮球王五
足球周七
足球赵六

sql语句

https://www.cnblogs.com/diffrent/p/8854995.html

索引

为什么要使用索引

https://blog.csdn.net/lichundongv5/article/details/79611994

什么样的信息能成为索引

区分度较高

索引的数据结构

B+树
https://blog.csdn.net/qq_35008624/article/details/81947773

稀疏索引和密集索引

https://blog.csdn.net/dgutliangxuan/article/details/87895680

如何调优sql

  1. 查询慢查询sql日志 show variables like ‘slow_query_log_file’
  2. explain sql 重点关注:type,extra
  3. 尽量让sql走索引,避免走全表

在这里插入图片描述

MyISAM和Innodb关于锁方面的区别

在这里插入图片描述
在这里插入图片描述

数据库事务的四大特性

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

事务隔离级别及各级别下的并发访问问题

更新丢失

在这里插入图片描述

脏读 read uncommitted

多次读取同一数据,数据不一致 read committed

幻读 read repeatable

串行 serial

在这里插入图片描述

Innodb可重复读隔离级别下如何避免幻读

当前读和快照读

在这里插入图片描述

RC、RR级别下的Innodb的非阻塞读如何实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值