面试问题浓缩总结 面试问题浓缩总结
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • MySQL

    • 数据库基础
      • 数据库三大范式
        • 第一范式(属性不可再分)
        • 第二范式(每个非主属性完全依赖于主属性集)
        • 第三范式(非主属性不传递依赖于主属性)
      • 候选码、主码、超码、外码、主属性、非主属性
      • 不符合范式会出现什么异常
      • 数据类型
      • varchar与char的区别
      • FLOAT和DOUBLE的区别
      • 数据库三级模式和两级映像
        • 数据库两级映像
    • 引擎
    • 索引
    • 事务和锁
    • 视图,存储过程,函数,触发器
    • SQL语句及优化
    • 分布式和备份
    • 高频面试题
    • MySQL底层
  • Redis

  • MongoDB

  • 数据库
  • MySQL
小游
2021-03-20

数据库基础

# 数据库三大范式

# 第一范式(属性不可再分)

如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

# 第二范式(每个非主属性完全依赖于主属性集)

完全依赖:

A中的所有属性唯一决定B,属性少了就不能唯一决定,属性多了则有冗余(叫依赖不叫完全依赖)。举例:(学号,课程名)这个主属性集可以唯一决定成绩,但是对于学生姓名这个属性,(学号,课程名)这个属性集就是冗余的,所以学生姓名不完全依赖于(学号,课程名)这一属性集;

第二范式要求:

第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关。**也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。**比如将(学号,课程名,成绩)做成一张表;(学号,学生姓名)做成另一张表,避免大量的数据冗余;

# 第三范式(非主属性不传递依赖于主属性)

**传递依赖:**如果C依赖于B,B依赖于A,那么C传递依赖于A

3NF在2NF的基础上,消除了非主属性之间的依赖;比如一个表中,主属性有(学号),非主属性有(姓名,院系,院长名),可以看到院长名这个非主属性依赖于院系,传递依赖于学号。消除的办法是分解。 必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);

# 候选码、主码、超码、外码、主属性、非主属性

  1. 候选码的定义:如果关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;
  2. 主码的定义:如果一个关系有多个候选码,则选定其中一个为主码;
  3. 主属性定义:候选码的诸属性称为主属性;
  4. 非主属性定义:不包含在任何候选码中的属性称为非主属性;
  5. 实体完整性规则:如果属性(一个或者一组属性)A是基本关系R的主属性,则A不能取空值。
  6. 码是数据库中的基本概念,用于唯一表示实体属性,是整个实体集的性质,而不是单个实体
  7. 超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体
  8. 候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。

# 不符合范式会出现什么异常

  • 冗余数据:某些同样的数据多次出现(如学生姓名);
  • 修改异常:修改了一个记录中的信息,另一个记录中相同的信息却没有修改;
  • 删除异常:删除一个信息,那么也会丢失其它信息(删除一个课程,丢失了一个学生的信息);
  • 插入异常:无法插入(插入一个还没有课程信息的学生)

# 数据类型

image-20210308090755247

# varchar与char的区别

  • char表示定长字符串,长度是固定的;
  • 如果插入数据的长度小于char的固定长度时,则用空格填充;
  • 因为长度固定,所以存取速度要比varchar快很多,甚至能快50%,但正因为其长度固定,所以会占据多余的空间,是空间换时间的做法;
  • 对于char来说,最多能存放的字符个数为255,和编码无关
  • varchar表示可变长字符串,长度是可变的;
  • 插入的数据是多长,就按照多长来存储;
  • varchar在存取方面与char相反,它存取慢,因为长度不固定,但正因如此,不占据多余的空间,是时间换空间的做法;
  • 对于varchar来说,最多能存放的字符个数为65532
  • 从性能角度选char,节省磁盘角度选varchar

# FLOAT和DOUBLE的区别

  • FLOAT类型数据可以存储至多8位十进制数,并在内存中占4字节。
  • DOUBLE类型数据可以存储至多18位十进制数,并在内存中占8字节。

# 数据库三级模式和两级映像

数据库三级模式中,模式对应基本表,外模式对应视图(虚表),内模式用于存储文件

img

# 数据库两级映像

外模式/模式映像(保证数据库的逻辑独立性): (1)模式描述的是数据的全局逻辑结构;外模式描述的是数据的局部逻辑结构 (2)一个数据库可以有多个外模式;同一个应用只有一个外模式;一个外模式可以为多个应用使用 (3)外模式是模式的子集(模式与外模式:一对多);外模式与应用:一对多 模式/内模式映像:(保证数据库的物理独立性)(唯一的) (1)该映像定义了数据全局逻辑结构与存储结构之间的对应关系 (2)一个数据库只有一个内模式(也叫存储模式),也只有一个模式

一、DB相关基本概念——(3)数据库系统结构_csdn_yaohailong的博客-CSDN博客 (opens new window)

编辑 (opens new window)
上次更新: 2021/04/20, 22:11:56
引擎

引擎→

Theme by Vdoing | Copyright © 2021-2021 小游
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式