Introduction to database

本文最后更新于:3 个月前

Chapter1 数据库系统概论

  • 什么是数据:计算机能够处理的信息

  • DBS = DB + DBMS + 计算机系统

  • 数据库的三级模式&两级映像

    • Internal Scheme:物理模式。描述数据的物理结构/存储方式。 由DBMS提供,每个数据库只有一种,通常不需要客户来关心如何实现。
    • Scheme:逻辑模式。所有用户的公共数据视图,描述数据的逻辑结构。
      • 这里需要了解DBMS中的三种语言:DDDefinitionL, DMManipulationL, DCControlL
      • 其中DML 控制增删查改, DCL负责数据完整性和安全性
      • DDL描述逻辑模式,定义数据的各类label
      • 全体数据的逻辑结构,一个数据库只有一个模式。
    • External Scheme:是模式的子集或者某种变形,依用户/应用的要求而定。
      • 每个数据库可以有很多个外模式
    • 两级映像 实现了三种模式的转换,保证数据库系统的逻辑独立和物理独立性
      • 以外模式/模式映像为例,简单来说,当模式改变时,只需要改变映像即可, 而不需要改变外模式, 从而保证了数据的逻辑独立性。
      • 同理,如果内模式改变(比如用了更先进的数据结构),只需要修改模式/内模式映像,就可以让模式适应新的内模式。
  • 模型

    • UML Unified Modeling Language: 分为功能模型,对象模型和动态模型。
      • UML定义一个 面向对象的软件密集型系统的方法
    • 数据模型 = 数据结构 + 数据操作 + 数据完整性约束
      • 关系模型 是关系数据库采用的模型,很多其他模型是用图解来说明的,而关系模型则是使用 二维表格来表达实体和它们间的关系,也是我们接下来主要研究的模型,其应用是最广泛的。
    • 概念模型的几大概念: 概念模型用来描述概念和它们之间的关系
      • 属性 => 实体的某一特性; 域 => 属性的取值范围;码(key) => 可以唯一标识一个实体的属性
      • E-R图表示概念模型 其中矩形为实体,椭圆为属性,菱形为联系,用无向边+菱形联系起两个实体,并在无向边上标识 1:1 或是1:n 或是m:n。 在每个实体的码下面划一条横线

Chapter2 关系运算理论

  • 不同域之间的笛卡尔积
    • 比如D1 {计算机系,日语系}; D2 {1班,2班}; D3 {张三,李四,王五}
    • 三者相互组合,形如 (计算机系,1班,张三) 被我们看作一个元组(在实际的表格里,这就是一行), 3个域的笛卡尔积能形成 2 * 2 * 3共 12个元组,整个笛卡尔积则是 3(3个域) * 12(12个元组) 的表格。 应当注意的是,实际上的关系,则是取整个笛卡尔积中有效的部分
  • 关系的性质
    • 一行为一个元组,一列称为一个属性
    • 「唯一标识一个元组」 :
      • Candidate Key 候选码 : 可以唯一标识一个元组的属性 (比如 学号属性可以唯一标识出学生)
      • All Key 如果说所有的属性才可以唯一的标识一个元组(极端情况),那么这些属性组 合起来称为全码
      • Primary Key 主码:和全码的意义差不多相反,如果有很多个属性都可以唯一的标识一个元组(也就是有多个候选码),那么选定其中的一个属性作为主码。
      • 外码: 如果F是R中的一个属性,但不是R的码, 但在另外一种关系中确是其码
    • 在关系数据库中,行(列)的次序是可以任意更换的, 并且每个分量都是不可分的数据项
    • 关系完整性 「实体完整性、用户定义完整性、参照完整性」
      • 实际上就是对关系的某种约束
      • 实体完整性=> 不可以出现主键相同或者空值
      • 用户完整性=> 我们自己给关系设置约束,比如学生成绩在0~100之间
      • 参照完整性=> 两个表互为参照的话,对一个表的修改要反映到另一张表里,你也不能在主表之外的值里取值
  • 关系的五种基本操作 「选择 投影 并 差 笛卡尔积」

Chapter3 结构化查询语言SQL(关系数据库标准语言)

其特性包括以下几条

  • 综合统一 「定义、操纵、查询、控制」 一种语言就可以完成数据库生命周期中的全部活动
  • 高度非过程化 用户指出要做什么,但不必指出如何做.
  • 面向集合操作
    • 非关系数据模型是面向记录的操作方式, 而SQL语言可以一次操作很多个元组
  • 同一种语法结构提供两种使用方式 SQL是一种嵌入式语言, 可以嵌入其他高级语言中用

几个概念:

  • 设计关系数据库时, 遵从不同规范要求以设计出合理的数据库, 这些要求被称为范式, 范式越高,数据库的冗余越小, 但可能提升计算的复杂度因此范式并不是越高越好 后续的范式必须先满足前面的范式. 去除冗余数据的过程, 就可称为规范化

  • 三个范式 : 属性唯一, 记录唯一, 表唯一
    • 1NF: 确保每一列的原子性
    • 2NF: 非键字段必须依赖于键字段, 相当于每个表只描述了一件事, 任何属性都最多只能和主键相关
    • 3NF: 非主键之间也要消除依赖. 比如说学号和姓名 想满足3NF时 只能保留一个 (任何属性之间要无关)
  • 完整性约束

    • 完整性 = 正确性 + 相容性(同一对象在不同关系表中的数据是符合逻辑的)
  • 索引查询是不是一定提高查询性能 ?

    • 通常来说 利用索引更快, 不过索引需要额外的空间,并且进行修改后 也有额外的维护成本
  • 什么是事物: 用户定义的一系列数据库操作, 它们要不全做, 要么全不做 有原子性

  • 封锁协议(用来维护数据完整性)

    • 一级封锁 : 先🔒 后修改
    • 二级封锁: 读时也🔒, 这样可以避免 读脏数据或者丢失修改
    • 三级封锁: 读也不可并行, 不能重复读
    • 两段锁协议: 任何数据进行读/写前, 先获得锁, 在释放一个锁后, 事务不再申请和获得任何其他锁

数据库面试大纲

第一章 数据库系统概述 1、四个概念:什么是数据? 什么是数据库? 什么是数据库管理系统(DBMS)?什么是数据库系统(DBS)? 2、熟记数据库系统的组成。 3、理解DBA是对数据库进行集中控制和管理的最重要人员。 4、实例和模式的对比(内容/状态 vs 结构,变化 vs 稳定) 5、三级模式:物理模式(又称内模式、存储模式),逻辑模式(又称模式),和子模式(又称外模式)的含义是什么?一个数据库有几个物理模式,逻辑模式和子模式? 三级模式间的两极映射,以及是由谁(DMBS)完成这种映射功能的?两级映射的作用(好处)是带来以下两种数据独立性—— 6、两种数据独立性:什么是逻辑数据独立性?什么是物理数据独立性?用户或者应用程序面向的到底是哪一级数据库模式? 7、概念数据模型用于数据库设计,是对客观世界的第一层抽象。常见例子是E-R模型。

第二章 关系模型与关系运算 1、数据模型的三要素?关系模型的三要素? 2、关系的组成:什么是属性?什么是元组?什么是分量? 度和基数。 3、理解关系有哪些性质? 4、理解关系的四种键及定义?数量(上限下限)?外部键的属性名可以和所对应的主键不同。外部键可以指向同一个关系的主键。例如:学生(学号,姓名,班长学号...)。外部键从E-R图的什么概念转化而来? 5、关系模式和关系实例的对比。 6、过程化和非过程化语言的区分和理解——看课件。 7、关系操作分为查询和更新操作。表示关系操作用某种查询语言:关系代数,关系演算(又分为元组关系演算和域关系演算)。关系代数是过程化的,关系演算是非过程化的。后面讲到的SQL是非过程化的。 8、掌握关系代数的各种运算(包括符号)。其中最基本的运算(不可替代)是哪些? 9、应用题型:用关系代数表达查询问题

第三章 关系数据库语言SQL 1、SQL的全名(中英文)。SQL是非过程化的语言。理解SQL的特点(基本功能特征)。 2、熟记SQL的四种功能。这些功能分别由哪些语句(动词)实现? 3、SQL对数据库三级模式的规定:每级模式由什么组成? 4、理解SQL中的系统数据类型,char/varchar/numeric等。 5、掌握SQL的各个数据定义语句(特别是新建表,建视图,修改表,删除表的语句)。 6、掌握SQL的Select数据查询语句。 7、掌握SQL的各个数据修改语句: Insert, Update, Delete。 8、空值的意义;掌握空值的运算规则(包括聚集函数忽略空值等),例如给出一个包含空值的式子,能计算最终结果。 9、理解视图的本质:命名的查询语句,只有这个才是真正存储在数据库里的;表象:虚拟表,与真正的表基本表相比有相同也有不同;动态变化)。 10、熟记视图的优点。 11、掌握定义视图的语句。理解对视图的查询以及对视图的更新系统在后台是怎样执行的(视图的查询:展开视图——替换视图为它所对应的查询。视图的修改:转化为对基本表的修改,这种转化可能因为缺少主键等原因失败,从而无法修改)。 12、嵌入式SQL不要求。 13、应用题型:用SQL表达数据查询(Select)和数据修改(Insert, Update, Delete)问题。用SQL建表(Create Table),建视图(Create View)等数据定义操作。

第四章 关系数据库模式设计 1、熟记关系模式设计不当可能产生的四种问题:数据冗余和三种异常。 2、理解函数依赖的概念。三对特殊类型的函数依赖:平凡/非平凡,部分/完全,传递/非传递。根据定义去理解和判定它们。 3、用函数依赖判断一个属性集是否超键,或者是否候选键的方法。 4、掌握计算属性集闭包的算法。以及由此判定一个函数依赖是否成立的方法。 5、掌握1NF、2NF、3NF、BCNF。并能够进行判定。 6、掌握规范化到1NF,3NF,BCNF的相关方法。关系模式应该至少规范化到3NF。规范化到3NF和规范化到BCNF相比,后者得到的关系模式属于更高级别,但是可能会丢失函数依赖。 7、应用题型:给出关系和函数依赖 a)寻找全部(可能不只一个)候选键,并给出判定证明。 b)判断某个函数依赖是否成立? c)判断关系所属的最高范式,并给出证明。 d)将关系规范化到3NF,或者BCNF e)判定一个分解(比如规范化后的结果)是否无损连接分解。

第五章 数据库设计 1、理解E-R模型的三要素:实体、属性和联系。以及在E-R图中的表示。 2、能判断二元联系的类型:一对一,一对多,多对多。以及在E-R图中的表示。 3、能将E-R图转化为关系模型。注意:多值属性的处理;1对1,1对多,多对1,多对多,三元以上联系各自的转化方式——不要张冠李戴。 4、熟记数据库设计的基本过程,包括在各个阶段分别要做的工作? 5、应用题型1:画E-R图(概念设计)。 6、应用题型2:将E-R图转化为关系模型(逻辑设计)。

第六章 数据库安全性与完整性 1、安全性是防止非法用户进入数据库,以及合法用户进入数据库后做了(未授权的)非法操作。完整性是防止非法数据进入数据库,即使是合法用户使用合法操作产生的。 2、掌握用SQL授予权限和回收、禁止权限的语句(grant, revoke, deny)。with grant option子句的作用。 3、理解常见权限的含义。(例如 insert on table S, update on view A等) 4、理解完整性的含义:正确、有效、相容。完整性约束(规则)是数据为保证完整性所必须满足的条件。 5、熟记关系模型中的三类完整性规则。各有什么要求?理解哪些(修改)操作会破坏这些规则? 6、掌握用SQL定义主键约束、外键约束、非空(not null)约束、唯一(unique)约束、域约束、检查(check)约束的语句?以及这些约束的含义、作用。 7、在定义外部键约束时,有哪几种参照动作?代表什么意义? 8、触发器是一种ECA规则,构成:Event事件,Condition条件,Action动作。触发器的事件主要有三类:INSERT,UPDATE,DELETE。

第七章 数据库事务管理。 1、深刻理解事务的概念。熟记事务的ACID性质(包括英文单词、解释、实现机制)。 2、掌握事务控制的多个SQL语句。两种结束方式(提交或回滚)的含义及区别。 3、熟记并发引起的三类数据不一致问题,它们是如何发生的(过程?)。产生不一致问题的根本原因是事务在并发执行(调度)时,没有保证隔离性。 4、并发执行(调度)的正确性准则:可串行化——效果等价于一个串行调度。 5、并发控制的任务:保证事务的并发执行(调度)是(尽量)正确的,避免不一致问题的产生。常见的一种实现方法是封锁。 6、封锁的基本类型:排他锁(写锁、X锁)、共享锁(读锁、S锁)。它们的相容关系? 7、有哪几种封锁协议?规则是什么?可分别解决哪些数据不一致性问题?两段封锁协议是可串行化调度的充分非必要条件。 8、数据库恢复技术的基本原理:冗余。建立冗余的两种方法:数据备份和登记日志文件。 9、静态备份 vs 动态备份(有否一致性;数据库是否可用,即是否允许用户运行事务来操作数据库)。完全备份 vs 增量备份(优缺点对比)。 10、日志文件:是用来记录事务对数据库进行修改操作的文件 11、日志文件的基本内容(事务开始一条;事务结束一条;事务若干次更新若干条)。在登记修改操作的日志记录时,修改前后的旧值与新值都要保存到日志记录中。 12、什么是运行记录优先(先写日志)原则? 13、熟记不同类型的数据库故障,包括它们的定义,故障的起因(例如死锁引起事务故障,停电引起系统故障,硬盘坏道引起介质故障等等...),影响范围(事务本身?DBMS系统?内存中的数据?磁盘上的数据?)、恢复策略(方法过程),每种故障类型的恢复过程,及由谁完成(系统自动 or 用户干预?) 14、理解检查点机制的原理(写检查点做了什么工作?按相对检查点的位置,把事务分成几类,哪些需要REDO/UNDO,哪些不需要?)。检查点的作用(在恢复系统故障时,大大缩短需要扫描的日志文件的范围,这个范围是从哪里到哪里...) 15、熟记引入检查点后,系统故障的恢复过程,并与之前没有检查点时的恢复过程作对比