数据库原理提纲

期中考试复习心得体会

  1. 概念是要的,但是不是记定义什么的,而是记名字、分类(比如说逻辑数据独立性这个词差点没写出来、子模式也没想出来,数据模型三要素,关系的基本性质(我服了这个也没记住====》原来数据库也是文科。。。【但是那个什么概念模型和结构模型和也考了定义?

  2. 大题很重要!幸好中午把关系代数和SQL的大题猛猛学了点

  3. 所以其实不应该把重点放在梳理课本上面的东西?就是那些定义找找别人的笔记copy一下就好了

  4. 这次题型是选择2*10 填空2*10 简答6*5 ,剩下的都是计算,但是我怎么记得不止30分,按照分数的就占比一半一半?

  5. 颜老师的考试提纲可以信👍,比lh好多了

关于复习提纲:

  1. “熟记”部分,一定要熟记

  2. “查询习题讲解”课件中的题型及方法

  3. 掌握蓝色部分的应用题型和解题方法(对应章节的课件中有)

第一章 引论

1. 四个概念:什么是数据? 什么是数据库? 什么是数据库管理系统(DBMS)?什么是数据库系统(DBS)?

数据就是信息的载体,可以是任何形式的,比如数字、文字、图片、声音等等。举个例子,当你在社交媒体上发布一张照片,这张照片就是一种数据。数据库是一个里面按照一定的规则存放了很多数据的数据集合。它包含了相关的数据及其描述,是数据管理的重要基础。数据库管理系统(DBMS)是一套管理数据库的软件系统,它提供了数据定义、数据操作、数据维护和数据控制的功能。常见的DBMS有MySQL、SQL Server等。数据库系统(DBS)包括了所有与数据库有关的东西,除了数据库本身和管理它的软件(DBMS),还包括硬件设备(比如服务器)、操作系统、数据库管理员和使用数据库的应用程序。可以把它看成是一个完整的生态系统,所有部分一起工作来处理和管理数据。\

2. 熟记数据库系统的组成。

数据库,数据库管理系统,支持数据库运行的软、硬件环境,用户

  • 硬件:用于存储和运行数据库系统的物理设备。

  • 软件:包括操作系统、DBMS、应用程序等。

  • 数据:数据库中存储的各种数据。

  • 人员:包括数据库管理员(DBA)、最终用户、应用程序开发人员等。

  • 程序:各种用于操作和管理数据库的数据处理程序。

\

3. 理解DBA是对数据库进行集中控制和管理的最重要人员。

数据库管理员(DBA,Database Administrator)是负责数据库系统管理和维护的重要人员。他们的主要职责包括:

  • 安装和升级数据库服务器和应用工具

  • 分配数据库的存储并规划未来的存储需求

  • 管理用户访问和数据安全

  • 确保数据库的性能、可用性和安全性

  • 备份和恢复数据库

\

4. 实例和模式的对比(内容/状态 vs 结构,变化 vs 稳定)

  • 内容/状态 vs 结构:实例是数据库在某一时刻的具体数据内容,即数据库的当前状态。模式是数据库的结构和约束,是数据库的逻辑设计,是相对稳定的。

  • 变化 vs 稳定:实例是不断变化的,每次对数据库的操作都会引起实例的变化。模式则是相对稳定的,只在数据库设计或结构发生重大改变时才会变动。

\

5. 三级模式的含义是什么?一个数据库有几个物理模式,逻辑模式和子模式?三级模式间的两极映射,以及是由谁(DMBS)完成这种映射功能的?两级映射的作用(好处)是带来以下两种数据独立性——

  • 物理模式(内模式):描述数据在计算机里的实际存储方式。一个数据库只有一个物理模式。

  • 逻辑模式(模式):描述数据库的总体设计,描述了数据库中的数据以及数据之间的关系。一个数据库只有一个逻辑模式。

  • 子模式(外模式):是数据库用户可见的部分,每个用户只看到和自己相关的部分数据。一个数据库可以有多个子模式。

三级模式间的两级映射:由DBMS负责完成。

  • 外模式/模式映射:定义子模式到模式的映射,比如学生看到的成绩单和实际数据库表格之间的对应关系。

  • 模式/内模式映射:定义模式到物理模式的映射,比如一张学生表格在硬盘上的具体存储位置和形式。

两级映射的作用(好处):带来以下两种数据独立性:

6. 熟记两种数据独立性:什么是逻辑数据独立性?什么是物理数据独立性?用户或者应用程序面向的到底是哪一级数据库模式?

逻辑数据独立性:是指当数据库的逻辑结构发生变化时,应用程序不需要做相应的改变。这是通过外模式和模式之间的映射来实现的。【这就像是房间里的家具位置变了,客人还是进门就能看到沙发。】物理数据独立性:是指当数据库的物理存储结构发生变化时,应用程序不需要做相应的改变。这是通过模式和内模式之间的映射来实现的。【这就像是你把保险柜换了个地方,但你拿文件的方式不变。】用户或者应用程序面向的数据库模式:用户和应用程序主要面向外模式,即子模式。

7. 概念数据模型用于数据库设计,是对客观世界的第一层抽象。常见例子是E-R模型。

E—R模型:需求分析(用户需求)、概念设计(E—R模型)、逻辑设计(逻辑模式(关系模型))、物理设计(数据库模式)。

  1. (逻辑)数据模型中,了解层次、网状和关系模型,特别是它们(与名字相关的)数据结构。

层次模型:用树状结构来组织数据;(结构简单、清晰,但缺少灵活性、只能1:n)网状模型:用有向图来表示实体和实体之间的联系;(能解决现实中的复杂问题、但结构复杂)关系模型:二维表(关系型数据库)

第二章 关系模型介绍(含第六章关系代数部分)

1. 数据模型的三要素?关系模型的三要素?

数据模型的三要素:数据结构、数据操作、数据完整性;关系模型的三要素:单一数据结构——关系、数据操作——关系操作、数据完整性——关系完整性。

2. 关系的组成:什么是属性?什么是元组?什么是分量?

  • 属性:表格的列。每个属性代表数据的一个特性,比如学生表中的“学号”、“姓名”都是属性。

  • 元组:表格的行。每一行代表一个完整的数据记录,比如学生表中的一行记录一个学生的信息。

  • 分量:元组中的一个具体值。比如在某个学生的元组中,“学号”列的具体值是某个学生的学号。

  • 度:属性的数目;

  • 基数:元组的数目;

  • 域:属性可能取值的集合。

\

3. 熟记关系有哪些基本性质?

  • 无重复元组:表格中每一行都是唯一的,没有重复。

  • 无序性:表格中的行和列的顺序是无关紧要的,换句话说,行和列的顺序可以改变而不会影响数据的逻辑结构。

  • 分量不可再分:每个分量必须是原子的,不可再分。比如,一个分量不能同时包含多个值。

  • 列是同质的。列中的分量类型必须相同,因为它们来自同一个域;

  • 不同的列可来自同一个域,但属性名不能相同;

\

4. 关系有哪四种键?数量(是否有多个)?什么是外部键?外部键的属性名可以和所对应的主键不同。外部键可以指向同一个关系的主键。例如:学生(学号,姓名,班长学号...)。外部键从E-R图的什么概念转化而来?

  • 超键:包含一个或多个属性的集合,这些属性可以唯一标识一个元组。超键可能包含多余的属性。

  • 候选键:唯一标识表中元组的一个或多个属性组合。一个表可以有多个候选键。

  • 主键:从候选键中选出的一个,用来唯一标识表中的每一行。一个表只有一个主键。

  • 外键:表中的一个属性,它引用了另一个表的主键,用来建立两个表之间的联系。外键的属性名可以和它引用的主键不同。

外部键的属性名可以和所对应的主键不同。比如学生表中的“班长学号”可以是外键,引用班长的“学号”。外部键可以指向同一个关系的主键。比如学生表中的“班长学号”指向同一个学生表中的“学号”。外部键从E-R图的什么概念转化而来?外部键从E-R图中的“关系”概念转化而来,用来表示实体之间的联系。

5. 关系模式和关系实例的对比。

关系模式:是关系(表格)的结构定义,包括表名、列名和列的数据类型等。它描述了表的框架和格式,是静态的。关系实例:是关系在某一时刻的具体数据内容。它是表格中的具体数据,是动态的,会随着数据的增删改而变化。

6. 过程化和非过程化语言的区分和理解——看课件。

过程化语言:需要用户明确指定操作步骤和执行顺序。用户告诉系统“怎么做”。例如,关系代数是一种过程化语言。非过程化语言:用户只需指定“做什么”,不需关心具体操作步骤。系统会自动找出实现的方法。SQL和关系演算都是非过程化语言。

7. 关系操作分为查询和更新操作。表示关系操作的语言:关系代数,关系演算(又分为元组关系演算和域关系演算)。关系代数是过程化的,关系演算是非过程化的。后面讲到的SQL是非过程化的。

表示关系操作的语言:关系代数:是一种过程化语言,用运算符对关系进行操作,表示查询过程。关系演算:是一种非过程化语言,用谓词逻辑来表达查询条件

8. 掌握关系代数的各种运算(包括符号)。其中最基本的运算(不可替代)是哪些?

9. 查询优化不要求。【这可是面试重点烙铁!怎么能不要求!】

10. 应用题型:用关系代数表达查询问题(查询习题课件)

第三章 SQL(含课本第四章部分)

1. SQL的全名(中英文)。SQL是非过程化的语言。熟记SQL的特点

SQL(Structured Query Language)统一化、非过程化、面向集合的操作方式(高效性)和提供多种方式使用(可移植性)

2. 熟记SQL的四种功能。这些功能分别由哪些语句(动词)实现?

\

3. SQL对数据库三级模式的规定:每级模式由什么组成?

外模式:由用户视图组成,是用户能看到和操作的部分。逻辑模式:由数据库的逻辑结构组成,是所有数据的全局视图。内模式:由数据的物理存储结构组成,是数据在物理设备上的存储方式。

4. 理解SQL中的系统数据类型,char/varchar/numeric等。

char(n):长度固定为n的字符串;Varchar(n):可变长度的字符串,最大长度为n;Numeric(p,q):小数点左边p位,右边q位的定点数;Real:浮点数;Float(n):精度至少为n位的浮点数;Interval:两个date或time类型数据之间的差。

5. 掌握SQL的各个数据定义语句(特别是新建表,建视图,修改表,删除表的语句)。

// 新建表
CREATE TABLE 表名 (
    列名1 数据类型1,
    列名2 数据类型2,
    ...
);
create table S(
  SNO VARCHAR (4),
  SNAME PERSON-NAME not null,
  AGE SMALLINT default 22,
  SEX VARCHAR (1),
  primary key (SNO),
  check(AGE<200 and AGE>0)
)
// 修改表
ALTER TABLE 表名
ADD 列名 数据类型
alter table S (add DEPT VARCHAR(20) not null)
alter table SC(modifY RESULT SMALLINT)
// 删除表 包括删除数据、结构、视图
DROP TABLE 表名
// 建视图
CREATE VIEW 视图名 AS
SELECT 查询语句

6. 掌握SQL的Select数据查询语句。掌握Like运算中的通配符和转义符。

SELECT 列名1, 列名2, ...
FROM 表名
WHERE 条件
ORDER BY 列名

like比较运算中使用escape关键词来定义转义字符。“%”代表零个或者多个字符“_”代表一个且只能是一个字符

7. 掌握SQL的各个数据修改语句: Insert, Update, Delete。

// 插入数据
INSERT INTO 表名 (列名1, 列名2, ...)
VALUES (值1, 值2, ...)
// 更新
UPDATE 表名
SET 列名1 = 值1, 列名2 = 值2, ...
WHERE 条件
// 删除 删除的是数据不是结构
DELETE FROM 表名 WHERE 条件

\

8. 空值的意义;掌握空值的运算规则(包括聚集函数忽略空值等),例如给出一个包含空值的式子,能计算最终结果。在关系代数和SQL中如何(根据以上规则)处理空值。

空值(NULL)表示未知或不存在的值。运算规则:

  • 聚合函数会忽略空值。例:SUM、AVG、COUNT等。

  • 表达式中含有空值的运算结果通常为空值。例:5 + NULL结果为NULL、NULL > 5 的结果是 NULL、TRUE AND NULL 的结果是 NULL、FALSE OR NULL 的结果是 NULL。

// 在关系代数和SQL中处理空值
SELECT AVG(列名) FROM 表名 WHERE 列名 IS NOT NULL

9. 理解视图的本质:命名的查询语句,只有这个才是真正存储在数据库里的;表象:虚拟表,与真正的表基本表相比有相同也有不同;动态变化)。

10. 熟记理解视图的优点。

  • 简化查询:将复杂的查询封装成简单的视图。

  • 数据安全:限制用户访问特定的数据。

  • 逻辑独立性:数据结构变化时,视图可以保持不变,减少对应用程序的影响。

\

11. 掌握定义视图的语句。理解对视图的查询以及对视图的更新在后台是怎样进行的(视图的查询:展开视图——替换视图为它所对应的查询。视图的更新:转化为对基本表的更新,这种转化可能因为缺少主键等原因失败,从而无法更新)。

// 定义视图
CREATE VIEW 视图名 AS
SELECT 查询语句
CREATE VIEW HighScores AS
SELECT ID, Score FROM Scores WHERE Score > 85
// 查询视图
SELECT * FROM HighScores
SELECT ID, Score FROM Scores WHERE Score > 85
// 更新视图
UPDATE HighScores SET Score = 95 WHERE ID = 3
UPDATE Scores SET Score = 95 WHERE ID = 3 AND Score > 85

12. 什么样的视图可以成功修改?什么样的视图不可以?

可以成功修改的视图:

  • 视图包含基本表的主键或唯一键,可以唯一标识要更新的行。

  • 视图的定义中没有复杂的聚合函数、子查询或连接。

不可以成功修改的视图:

  • 视图中不包含基本表的主键或唯一键,导致无法唯一标识要更新的行。

  • 视图的定义中包含聚合函数、子查询或连接,导致更新操作无法转化为对基本表的更新。

  • 视图定义中包含计算列或派生列,这些列无法直接更新到基本表。

\

13. 嵌入式SQL不要求。

14. 应用题型:用SQL表达数据查询(Select)和数据修改(Insert, Update, Delete)问题。用SQL建表(Create Table,包括主码、外部码、检查约束等),建视图(Create View)等数据定义操作。

\

第四章 关系数据库模式设计

  1. 熟记关系模式设计不当可能产生的四种问题:数据冗余和三种异常。

    1. 数据冗余:指同一数据被存储多次,导致存储空间浪费和数据一致性问题。

    2. 插入异常:指在插入数据时,由于某些数据依赖关系的存在,无法插入某些数据。

    3. 删除异常:指在删除数据时,意外地删除了有用的信息。

    4. 更新异常:指在更新数据时,由于数据冗余,导致需要更新多处,容易出现数据不一致的问题。

\

  1. 理解函数依赖X→Y的含义。掌握判定函数依赖的方法。

    1. 函数依赖X→Y:表示在一个关系中,如果对于任意两个元组,只要它们在X上的值相同,它们在Y上的值也相同。X称为决定因素,Y称为被决定因素。

    2. 判定方法:通过分析关系的实际数据,检查是否对于任意两个元组,如果X相同则Y也相同,来判定是否存在函数依赖。

\

  1. 用函数依赖判断一个属性集是否超码,或者是否候选码的方法。

    1. 三对特殊类型的函数依赖

      • 平凡/非平凡函数依赖:

        • 平凡:如果Y是X的子集,则X→Y是平凡函数依赖。

        • 非平凡:如果Y不是X的子集,则X→Y是非平凡函数依赖。

      • 部分/完全函数依赖:

        • 部分:如果存在一个真子集Z (Z ⊂ X) 使得Z→Y成立,则X→Y是部分函数依赖。

        • 完全:如果对于X的任何真子集Z (Z ⊂ X),Z→Y不成立,则X→Y是完全函数依赖。

      • 传递/非传递函数依赖:

        • 传递:如果X→Y和Y→Z成立且Y不包含于X和Z,则X→Z是传递函数依赖。

        • 非传递:如果不存在上述条件,则X→Z是非传递函数依赖。

    2. 超码:如果一个属性集能够唯一标识一个元组,则称为超码。

    3. 候选码:如果一个属性集是超码且没有冗余属性(即任何真子集都不是超码),则称为候选码。

    4. 判定方法:通过检查属性集的函数依赖关系,确定它是否能唯一标识元组,以及是否有冗余属性。

\

  1. 掌握计算属性集闭包的算法。以及由此判定一个函数依赖是否成立的方法。

    1. 属性集闭包:指给定属性集X,计算所有通过函数依赖可以推导出的属性集称为X的闭包,记为X⁺。

    2. 算法

      • 初始化闭包X⁺为X。

      • 循环应用函数依赖:如果X⁺包含函数依赖的左侧,则将函数依赖的右侧加入X⁺。

      • 直到X⁺不再增加。

    3. 判定方法:如果给定的函数依赖Y→Z,且Y的闭包包含Z,则函数依赖成立

\

  1. 最小函数依赖集不要求。4.3这一节不要求。

  2. 掌握1NF、2NF、3NF、BCNF的定义/要求,并能依此进行判定。

    1. 1NF(第一范式):每个字段的值都是原子值,即不可再分。

    2. 2NF(第二范式):在1NF的基础上,消除部分函数依赖,即每个非主属性完全依赖于候选码。

    3. 3NF(第三范式):在2NF的基础上,消除传递函数依赖,即每个非主属性非传递依赖于候选码。

    4. BCNF(Boyce-Codd范式):在3NF的基础上,消除任何形式的冗余,即每个决定因素必须是候选码。

\

  1. 掌握规范化到1NF,3NF,BCNF的相关方法。关系模式应该至少规范化到3NF。规范化到3NF和规范化到BCNF相比,后者得到的关系模式属于更高级别,但是可能会丢失函数依赖。

    1. 规范化到1NF:确保所有字段的值都是原子值。

    2. 规范化到3NF:确保消除部分和传递函数依赖。

    3. 规范化到BCNF:确保消除所有冗余,使得每个决定因素都是候选码。

\

  1. 多值依赖不要求。

  2. 应用题型:给出关系和函数依赖

    1. 找出候选码,并证明。

    2. 判断某个函数依赖是否成立,给出证明。

    3. 判断关系所属的最高范式,给出证明。

    4. 将关系规范化到3NF,或者BCNF

    5. 判断一个分解是否无损依赖,给出证明

\

第五章 数据库设计

  1. 理解E-R模型的三要素:实体、属性和联系。以及在E-R图中的表示。

  2. 三种特殊类型的属性,并能够判断。

  3. 能判断二元联系的类型:一对一,一对多,多对多。以及在E-R图中的表示。

  4. 能将E-R图转化为关系模型。注意:多值属性的处理(如果有n个多值属性,n个分开来处理);1对1,1对多,多对1,多对多,三元以上联系各自的转化方式——不要张冠李戴。

  5. 熟记数据库设计的基本过程,包括在各个阶段分别要做的工作?

  6. 应用题型:

    1. 给出用户需求,画E-R图(概念设计)。

    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. 断言不作要求

  9. 熟记以下全部触发器的概念。触发器有哪些作用?触发器/ECA规则构成的三个方面,包括英文单词。哪些事件会激活(INSERT,UPDATE,DELETE操作)。

\

第七章 数据库事务管理。

  1. 深刻理解事务的概念。熟记事务的ACID性质(包括英文单词、解释、保障机制)。

  2. 掌握事务控制的多个SQL语句。两种结束方式(提交或回滚)的含义及区别。不能提交的事务结局只能是回滚。

  3. 事务调度分串行调度和并发调度,并发调度的效率高,但也有问题:破坏数据一致性,产生错误。

  4. 熟记并发引起的三类数据不一致问题,它们是如何发生的(过程?)。产生不一致问题的根本原因是事务在并发执行(调度)时,没有保证隔离性。

  5. 并发执行(调度)的正确性准则:可串行化——效果等价于一个串行调度。

  6. 封锁的基本类型:排他锁(写锁、X锁)、共享锁(读锁、S锁)。各个锁的含义(例如排他锁是读+写,共享是读),相容/排斥关系?

  7. 意向锁不要求。更新锁不要求。

  8. 有哪几种封锁协议?规则是什么?它们的作用(各自解决了哪些数据不一致性问题)?两段封锁协议是可串行化调度的充分非必要条件。

  9. 数据库恢复技术的基本原理:冗余。建立冗余的两种方法:数据备份和登记日志文件

  10. 静态备份 vs 动态备份(有否一致性;是否允许用户运行事务来操作数据库)。

  11. 日志文件的定义:是用来记录事务对数据库进行更新操作的文件

  12. 日志文件的基本内容(事务开始一条;事务结束一条;事务若干次更新若干条)。在登记更新操作的日志记录时,更新前后的旧值与新值都要保存到日志记录中。

  13. 什么是运行记录优先(先写日志)原则?

  14. 熟记以下全部不同类型的数据库故障,包括它们的定义,故障的起因(例如死锁引起事务故障,停电引起系统故障,硬盘坏道引起介质故障等等...),影响范围(事务本身?DBMS系统?内存中的数据?磁盘上的数据?)、恢复策略(方法过程),及由谁完成(系统自动 or 用户干预?)

  15. 检查点不要求

最后更新于