【数据库】-经典面试题吐血整理

大二的时候是学过mysql的,但是现在全忘记了,只记得好难~没办法向其他几门课一样系统整理,东拼西凑大致了解一下罢了。

不想学也得学 o(╥﹏╥)o

  • 数据库事务

    • 什么是数据库事务?

      • 数据库事务(Database Transaction) 是一系列的数据库操作,是数据库应用的基本逻辑单位,事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。要么全部执行,要么不执行。
      • 可以理解为有一堆数据库操作组合而成的原子操作
    • 事务有哪些性质?

      • ACID
      • 原子性(atomicity)一个事务是一个不可分割的工作单位,事务中包括的诸操作要么全部执行,要么不执行。
      • 一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
      • 隔离性(isolation) 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
      • 持久性(durability) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响
  • 范式

    • 什么是范式

      • 数据库的设计范式是数据库设计所需要满足的规范。
      • 只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库。
    • 范式越高越好吗

      • 范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦

      • 但是操作困难,因为需要联系多个表才能得到所需要数据,而且范式越高性能就会越差

      • 一般在项目中,用得最多的也就是第三范式

    • 三大范式

      • 第一范式:

        • 强调原子性,数据库的列不能再分

        • 比如说:地址列:中国湖南长沙,这是可以拆分成三个列的(国家,省份,城市),因此不满足第一范式

      • 第二范式:

        • 1.满足第一范式
        • 2.必须有主键
        • 3.其他非主键的列完全依赖主键,而不能只依赖主键的一部分
      • 第三范式:

        • 1.满足第二范式
        • 2.非主键的列必须直接依赖主键,而不能出现依赖传递的现象
        • 比如说非主键A列依赖非主键B列,非主键B列依赖主键C列

3/18更新中。。。

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/114981274