计算机保研专业课必备之数据库

数据库保研面试准备

  1. 数据库的分类

    层次模型、网状模型、关系模型、面向对象数据库

  2. 范式
    • 关系数据库中的关系满足不同程度要求的为不同的范式。
    • 第一范式(1NF):属性不可分
    • 第二范式(2NF):非主属性完全函数依赖于键码
    • 第三范式(3NF):非主属性不传递依赖于键码
    • BC范式(BCNF):所有属性不传递依赖于键码
  3. 数据库外模式与内模式
    • 数据库的外模式描述的是用户可见的局部数据的逻辑结构;
    • 数据库的内模式描述的是数据库的物理结构,是数据在数据库内部的组织方式。
  4. 事务

    事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

  5. 事务的特性
    • 原子性(Atomicity)
      事务被视为不可分割的最小单元,事务中的所有操作要么不做要么全做。
    • 一致性(Consistency)
      事务执行前后数据库从一个一致性状态变到另一个一致性状态。
    • 隔离性(Isolation)
      并发自行的各个事务之间不能相互干扰。
    • 持久性(Durability)
      一旦事务提交,则其所做的修改将会永远保存到数据库中。
  6. 视图

    视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易

  7. 数据库系统和文件系统相比有什么优点?
    • 整体数据结构化,可灵活的存取DB中某一个或某一组数据项、一个记录或一组数据记录,而文件系统只可存取记录

    • 数据的共享性高、冗余度低且易扩充

    • 数据独立性高:物理独立性(用户的应用程序和数据库中数据的物理存储相互独立)+逻辑独立性(用户的应用程序与数据库中数据的逻辑结构相互独立)

    • 数据安全性、完整性、并发控制和恢复能力均优于文件系统

  8. 何为完整性约束?

    完整性约束:为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则,包括实体完整性(有主键)、参照完整性(由外键)、用户定义完整性(根据实际情况定义)

  9. DBMS支持哪几种数据模型?
    • 层次模型(根结点无双亲结点,其他结点有且只有一个双亲结点)

    • 网状模型(允许结点没有或有多个双亲结点)

    • 关系模型(二维表)

  10. SQL组成部分

    数据定义语言,数据查询语言,数据操纵语言,数据控制语言

  11. 数据库的外键是什么?

    一张表中的非主键的字段指向了另一张表中的主键,就将该字段叫做外键。

  12. 关系型数据库的特点?

    二维表。数据集中控制、数据独立、数据共享、减少数据冗余、数据结构化、统一的数据保护功能

  13. 数据库的完整性和安全性

    (1)数据库的安全性:指的是保护数据库以免其受到恶意的破坏和非法存取。
    1)针对的对象是:未授权的用户和非法的操作。
    2)保护数据库安全性的办法有:存取的控制(设置权限,数据和用户均设置)、用户身份的鉴别、视图机制、数据加密。

    (2)数据库的完整性:数据的正确性+相容性。指的是要防止数据库中存在数据的语义不正确的数据,即确保数据的正确性。
    1)数据的正确性:符合现实世界语义、满足实际需求的数据。
    2)数据的相容性:指的是同一个对象在不同表中的含义是符合逻辑的。(参照完整性)
    3)数据库中三类数据完整性约束:包括实体完整性+参照完整性+用户定义的完整性。

  14. 索引
    • 索引是对数据库表中一或多个列的值进行排序的结构,是帮助高效获取数据的数据结构。

    • 数据库创建索引的好处
      通过创建唯一性的索引,可以保证数据库表中每一行数据的唯一性。
      可以大大加快数据的检索速度,这也使创建索引的最主要的原因。
      可以加速表和表之间的连接,特别是在实现数据的参考完整性方面。
      在使用分组和排序子句进行数据检索时,同样可以显著的减少查询中分组和排序的时间。
      通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
      增加索引的不利的方面
      创建索引和维护索引需要消耗时间,这种时间随着数量的增加而增加

    • 索引需要占物理空间,除了数据表占据数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要额空间就会更大。

    • 当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

    • 添加索引不一定可以增快查询速度。

  15. 异常情况(并发一致性问题)
    • 丢失数据
      两个事务读入统一数据并修改都对一个数据进行修改,一个先修改,另一个随后修改,第二个修改覆盖了第一个的修改。

    • 读脏数据
      T1对一个数据做了修改,T2读取这一个数据。若T1执行 ROLLBACK 操作,则 T2读取的结果和第一次的结果不一样。当一个事务读取另一个事务尚未提交的修改时,产生脏读。

    • 不可重复读(非重复读)

      • T1读取一个数据,T2对该数据做了修改。如果 T1再次读取这个数据,此时读取的结果和第一次读取的结果不同。
      • 同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集。
      • T1读取某个范围的数据,T2在这个范围内插入新的数据,T1再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。
    • 共享锁(S锁,读锁)
      用于只读操作(SELECT),锁定共享的资源。共享锁不会阻止其他用户读,但是阻止其他的用户写和修改。
    • 排他锁(X锁,也叫写锁)
      一次只能有一个独占锁用在一个资源上,并且阻止其他所有的锁包括共享锁。写是独占锁,可以有效的防止“脏读”。
  16. 解释一下两段锁协议

    两段锁协议:所有事务的执行都必须分为加锁和解锁两个阶段。

    加锁:在对任何数据进行读操作之前要申请并获得S锁(共享锁),在进行写操作之前要申请并获得X锁(排它锁)。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。

    解锁:当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作。通过ROLLBACK和COMMIT实现。

  17. 三种数据模型
    • 概念数据模型:现实世界到信息世界的抽象,**是用户与数据库设计人员之间进行交流的语言。如E-R图。
    • 逻辑数据模型:信息世界中的概念和联系在计算机世界中的表示方法。如层次模型、网状模型、关系模型、面向对象模型。
    • 物理数据模型:是数据在物理设备上的存放方法和表现形式的描述,以实现数据的高效存取。如索引,HASH文件等等。
  18. 三级模式结构
    • 模式
      也称逻辑模式,数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共视图。一个数据库只有一个模式。

    • 外模式
      也称子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。一个数据库可以有多个外模式,不同用户对看待数据的方式、对数据的保密要求方面存在差异,所以不同外模式的描述是不同的。

    • 内模式
      也称存储模式,一个数据库只有一个内模式。内模式是数据结构和存储方式的描述,是数据在数据库内部的组织方式。如,索引按照什么方式组织,是B+树索引还是hash索引。

  19. 两级映像
    • 外模式/模式映像
      外模式/模式映像表示了该外模式与模式之间的对应关系。当模式改变时,由数据库管理员对该映像做相应改变,进而无需改变外模式。应用程序是根据外模式写的,因此也不用变,这称为数据的逻辑独立性。

    • 模式/内模式映像
      模式/内模式映像定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变时,由数据库管理员对该映像做相应改变,而无需改变模式,进而也无需改变应用程序,这称为数据的物理独立性。

  20. ER模型

    实体关系图 (Entity-Relationship,E-R),有三个组成部分:实体、属性、联系。用来进行关系型数据库系统的概念设计。

  21. ER模型转换为关系模式
    • 1:1。遇到1:1 关系的话在两个实体任选一个添加另一个实体的主键即可。
    • 1:N。1:N 遇到 1:N 关系的话在N端添加另一端的主键。
    • N:M。遇到N:M我们需要将联系转换为实体,然后在该实体上加上另外两个实体的主键,作为联系实体的主键,然后再加上该联系自身带的属性即可。
  22. SQL
    • 增:

      Insert Into <表名>[(<属性列>[{,<属性列>}])]
      	Values(<>[{,<>}])
      
    • 删:

      Delete From <表名>
      	[Where <条件>]
      
    • 改:

      Update <表名>
      	Set <列名>=<表达式>[{, <列名>=<表达式>}]
      	[Where <条件>]
      
    • 查:

      Select [ALL|DISTINCT]<目标表达式>[{,<目标表达式>}]
      From <表名或视图名>[{,<表名或视图名>}]
      [Where <条件表达式>]
      [Group By <分组列> [{,<分组列>}][HAVING <条件表达式>]]
      [Order By <排序列> <排序方式>[{,<排序列> <排序方式>}]
      
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值