数据库系统概论期末复习(西北大学)

第一题:Explain the glossaries(20 points)

一、绪论

  1. 数据(data):描述事物的符号记录称为数据
  2. 数据库(DataBase,DB):长期存储在计算机内、有组织、可共享的大量数据集合
  3. 数据库特征:数据按照一定的数据模型组织、描述和存储,较小冗余度,较高数据独立性,易扩展性,可为各种用户共享
  4. 数据库三个基本特点:永久存储、有组织、可共享
  5. 数据库管理系统(DataBase Management System,DBMS):是位于用户和操作系统之间的一层数据管理软件,和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统
  6. 数据库系统(DataBase System,DBS):数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统
  7. 数据库管理员(DataBase Administrator,DBA):负责全面管理和控制数据库系统
  8. 物理独立性:是指用户的应用程序与数据库中数据的物理存储是相互独立的
  9. 逻辑独立性:是指用户的应用程序与数据库的逻辑结构是相互独立的
  10. 数据模型(data model):是一种模型,是对现实世界数据特征的抽象,是用来描述数据、组织数据和对数据进行操作的。通常由数据结构、数据操作和数据完整性约束条件三部分组成
  11. 概念模型(conceptual model):按用户的观点来对数据和信息建模,主要用于数据库设计
  12. 逻辑模型:按计算机系统的观点对数据建模,主要用于数据库管理系统的实现
  13. 物理模型:是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的
  14. 实体(entity):客观存在并可相互区别的事物
  15. 属性(attribute):客体所具有的某一特征称为属性
  16. 码(key):唯一标识实体的属性集称为码
  17. 实体型(entity type):用实体名及其属性名集合来抽象和刻画同类实体
  18. 实体-联系方法(Entity-Relationship approach):用E-R图来描述现实世界的概念模型,E-R方法也称为E-R模型
  19. 数据结构:描述数据库的组成对象以及对象之间的联系
  20. 数据操作:是指对数据库中的各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则
  21. 数据完整性约束条件:是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,从而保证数据正确、有效、相容
  22. 关系模型:是一种重要的数据模型,采用关系模式作为数据的组织方式
  23. 域(domin):是一组具有相同数据类型的值的集合
  24. 关系模式:是对关系的描述,是关系的结构
  25. 关系完整性约束条件包括三类:实体完整性、参照完整性、用户定义完整性
  26. 型(type):是指某一类数据的结构和属性说明
  27. 值(value):是型的一个具体赋值
  28. 模式(schema):逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
  29. 外模式(external schema):子模式(subschema)或用户模式,是数据用户能够看见和使用的局部数据逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关数据的逻辑表示
  30. 内模式(internal schema):存储模式(storage schema),一个数据库只有一个内模式,是数据物理结构和存储方式的描述,是数据内部的组织方式
  31. 外模式/模式映像:当模式改变时,有数据库管理员对各个外模式/模式的映像作出相应改变,可以使外模式保持不变。应用程序是依据数据外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
  32. 模式/内模式映像:当数据库存储结构改变时,由数据库管理员对模式/内模式映像作相应的改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据和程序的物理独立性,简称数据的物理独立性

二、关系数据库

  1. 笛卡尔积(cartesian product):所有域的所有取值的一个集合,且不能重复,构建了问题的解空间或解集合
  2. 关系(relation):域的笛卡尔乘积的子集
  3. 候选码(candidate key):某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码
  4. 主码(primary key):若一个关系有多个候选码,则选定其中一个为主码
  5. 主属性(prime attribute):候选码的属性称为主属性
  6. 非主属性(non-prime attribute)/非码属性(non-key attribute):不包含在任何候选码中的属性
  7. 全码(all-key):关系模式的所有属性就是这个关系模式的候选码
  8. 关系的三种类型:基本关系、查询表、视图表
  9. 关系模式(relation schema):关系的描述称为关系模式,R(U,D,DOM,F),其中R为关系名,U为属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合
  10. 关系数据库:关系数据库的型也称为关系数据库模式,是对关系数据库的描述;关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库
  11. 关系操作包括:查询、插入、删除、修改
  12. 查询操作:分为选择、投影、连接、除、并、差、交、笛卡尔积,其中选择、投影、并、差、笛卡尔积是五种基本操作
  13. 结构化查询语言(Structured Query Language,SQL):是关系数据库的标准语言,是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言
  14. 实体完整性(entity integrity):若A是基本关系R的主属性,则A不能取空值
  15. 参照完整性(referential interity):若属性(组)F是基本关系R的外码,它与基本关系S的主码K对应,则对于R中每个元组在F上的值必须是S中某元组主码值或空值
  16. 用户定义完整性(user-defined intergrity):针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求
  17. 关系代数:是一种抽象的查询语言,它用对关系的运算来表达查询
  18. 自然连接:是一种特殊的等值连接,要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复列去掉
  19. 悬浮元组(dangling tuple):连接时,某些元组不存在公共属性上值相等的元组,从而造成这些元组在操作时被舍弃,被舍弃的元组称为悬浮元组
  20. 外连接(outer join):把悬浮元组也保存在结果关系中,而在其他属性上填空值
  21. 左外连接(left outer join或left join):只保留左边关系R中的悬浮元组
  22. 右外连接(right outer join或right join):只保留右边关系R中的悬浮元组

三、关系数据库标准语言SQL

  1. 嵌套查询(nested query):将一个查询快嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询
  2. 相关子查询(correlated subquery):如果子查询的查询条件依赖于父查询,这类子查询称为相关子查询
  3. 行列子集视图:从单个基本表导出,并且只是去掉了基本表的某些行和某些列,但是保留了主码
  4. 分组视图:带有聚集函数和group by子句的查询来定义视图
  5. 视图消解(view resolution):从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后再执行修正了的查询

四、数据安全性

  1. 数据安全性:是指保护数据库以防止不合法使用所造成的数据泄露、更改和破坏
  2. 自主存取控制(Discretionary Access Control,DAC):定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
  3. 强制存取控制(Mandatory Access Control,MAC):每一个数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
  4. 审计(audit):把用户对数据库的所有操作自动记录下来放入审计日志中,审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等
  5. 数据加密:基本思想是根据一定算法将原始数据-明文变换为不可直接识别的格式-密文,从而使得不知道解密算法的人无法获知数据的内容,数据加密主要包括存储加密和传输加密

五、数据库完整性

  1. 数据库完整性:是指数据的正确性(correctness)和相容性(compat-ability)
  2. 触发器(trigger):是用户定义在关系表上的一类由事件驱动的自动执行的特殊过程,又叫做事件-条件-动作(event-condition-action)规则

六、关系数据理论

  1. 数据依赖:一个关系内部属性与属性之间的一种约束关系,这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系
  2. 函数依赖(Functional Dependency):设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或者Y函数依赖于X,记作X—>Y,X称为决定属性组或决定因素(determinant)
  3. 非平凡依赖:Y不包含在X中
  4. 平凡依赖:Y包含在X中
  5. 完全函数依赖:在R(U),X—>Y,且对于X的任何一个真子集都不决定Y,X是候选码(candidate)(F)
  6. 部分函数依赖(partial functional dependency):不完全函数依赖(P),X是超码(Surpkey)(P)
  7. 传递函数依赖(transitive functional dependency):在这里插入图片描述
  8. 规范化(normalization):一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合(一事一地模式设计原则,概念的单一化)
  9. 范式:关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式
    在这里插入图片描述

七、数据库设计

  1. 数据库设计(database design):是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求
  2. 数据字典:关于数据库中数据的描述,即元数据,而不是数据本身
  3. 数据项:不可再分的数据单元
  4. 数据结构:反映了数据之间的组合关系
  5. 数据流:数据结构在系统内传输的路径
  6. 数据存储:是数据结构停留或保存的地方,也是数据流的来源和去向之一
  7. 概念结构设计:将需求分析得到的用户需求抽象为信息结构的过程
  8. 逻辑结构设计:把概念结构设计阶段设计好的基本E-R图转换为选用数据关系系统产品所支持的数据模型相符合的逻辑结构
  9. 物理结构设计:数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统

八、数据库编程

  1. 嵌入式SQL(Embedded SQL,ESQL):将SQL嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制逻辑流程
  2. SQL通信区:SQL语句执行后,系统要反馈给应用程序若干信息,主要包括描述系统当前工作状态和运行环境的各种数据
  3. 主变量:SQL语句中使用的主语言程序变量简称为主变量
  4. 游标:是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字
  5. 过程化SQL(Procedural Language/SQL,PL/SQL):过程化SQL是对SQL的扩展,使其增加了过程化语句功能,基本结构是块
  6. 存储过程:是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中
  7. ODBC:为解决连接不同关系数据库管理系统的方法、技术和软件,使数据库系统”开放“,能够实现”数据库互连“,由微软公司推出的接口标准

九、关系查询处理和查询优化

  1. 查询处理(query processing):分为四个阶段,查询分析、查询检查、查询优化、查询执行
  2. 查询优化(query optimization):选择一个高效执行的查询处理策略,分为代数优化(逻辑优化)和非代数优化(物理优化)

十、数据库恢复技术

  1. 事务(transaction):是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
  2. 事务的四个特性/ACID特性(ACID properties):原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持续性(Durability)
  3. 系统故障/软故障(soft crash):是指造成系统停止运转的任何事件,使得系统要重新启动
  4. 介质故障/硬故障(hard crash):外存故障,这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务
  5. 建立冗余数据的两种技术:数据转储、登记日志文件(logging)
  6. 数据转储:数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程,这些备用数据称为后备副本(backup)或后援副本
  7. 静态转储:系统中无运行事务时进行转储操作,即转储操作开始的时刻数据库处于一致性状态,而转储期间不允许或不存在对数据库的任何存取、修改活动
  8. 动态转储:转储期间允许对数据库进行存取或修改,即转储的用户事务可以并发执行
  9. 海量转储:每次转储全部数据库
  10. 增量转储:每次只转储上一次转储后更新过的数据
  11. 日志文件:是用来记录事务对数据库更新操作的文件
  12. 检查点(checkpoint)记录:该时刻所有正在执行的事务清单,这些事务最近一个日志记录的地址

十一、并发控制

  1. 交叉并发方式(interleaved concurrency):单处理机系统中,事务的并行执行实际上是这些并行事务的并行操作轮流交叉运行
  2. 同时并发方式(simultaneous concurrency):多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行
  3. 丢失修改(lost update):两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失
  4. 不可重复读(non-repeatable read):事务T1读取数据后,事务T2执行了更新操作,使T1无法再现前一次读取结果
  5. 读“脏”数据(dirty read):事务T1修改某一数据将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时被T1修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据
  6. 并发控制的主要技术:封锁、时间戳、乐观控制法、多版本并发控制
  7. 封锁(locking):在这里插入图片描述在这里插入图片描述
  8. 可串行化(serializable)调度:多个事务的并发执行时正确的,当且仅当结果与按某一次序串行执行这些事务时的结果相同
  9. 两段锁(TwoPhase Locking,2PL):事务分为两个阶段,第一阶段获得封锁,也称为扩展阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁;第二个阶段释放封锁,也称为收缩阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。是可串行化调度的充分条件
  10. 封锁粒度(granularity):封锁对象的大小,可以是逻辑单元,也可以是物理单元
  11. 多粒度封锁(multiple granularity locking):如果在一个系统中同时支持多种封锁粒度供不同的事务选择是比较理想的
  12. 显式封锁:应事务的要求直接加到数据对象上的锁
  13. 隐式封锁:该数据对象没有被独立加锁,是由于上级节点加锁而使该数据对象上加锁
  14. 意向锁(intention lock):在这里插入图片描述在这里插入图片描述

第二题:SQL(20 points)

包括基本sql、安全性、完整性三个方面

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

第三题:Database programming(20 points)

1.嵌入式

请添加图片描述
请添加图片描述

2.储存过程

  • 不带参

在这里插入图片描述

  • 带参

在这里插入图片描述

3.触发器

在这里插入图片描述

4.事务编程(写伪代码即可)

请添加图片描述
在这里插入图片描述

  • 不是时序表

在这里插入图片描述

5.datepart

DATEPART 是 SQL Server 中的一个函数,用于从指定日期中提取特定的日期部分,比如年份、月份、日或时间。这个函数对于处理日期和时间数据非常有用,特别是当你需要基于日期的某个具体部分进行过滤、比较或计算时。

语法

DATEPART 函数的基本语法如下:

DATEPART(datepart, date)
  • datepart 是你想从日期中提取的部分,如年(year)、月(month)、日(day)、小时(hour)等。
  • date 是日期表达式,从中提取值。
使用的日期部分

这里列出了一些常用的日期部分参数:

  • yearyyyyyy:年份
  • quarterqqq:季度
  • monthmmm:月份
  • dayofyeardyy:一年中的第几天
  • dayddd:日
  • weekwkww:一年中的第几周
  • weekdaydw:星期几,1是周天
  • hour:小时
  • minute:分钟
  • second:秒
  • millisecond:毫秒
示例

下面是一些 DATEPART 函数的使用示例:

  1. 提取年份

    SELECT DATEPART(year, '2023-06-08') AS YearPart;
    

    结果将是 2023

  2. 查找当前日期是星期几

    SELECT DATEPART(weekday, GETDATE()) AS WeekDay;
    

    这将返回当前日期是星期几,结果是一个数字,1 表示星期天,2 表示星期一,依此类推。

  3. 过滤特定月份的数据

    SELECT *
    FROM Orders
    WHERE DATEPART(month, OrderDate) = 6;
    

    这个查询将返回所有在六月份创建的订单。

6.inserted和deleted

在SQL Server中,inserteddeleted 是两个特殊的表,通常在触发器(triggers)中使用。它们用于存储由DML操作(如INSERT、UPDATE、DELETE)引起的数据更改。这里是如何使用这两个表的详细说明:

inserted:
  • 使用场景:在INSERT或UPDATE操作后,inserted 表包含新插入或更新后的行。
  • 示例:假设有一个触发器,目的是在更新员工的薪水后自动记录这次变更。这个触发器可能会使用inserted 表来获取更新后的薪水信息。
CREATE TRIGGER RecordSalaryChange
ON Employees
AFTER UPDATE
AS
BEGIN
    INSERT INTO SalaryAudit(EmployeeID, OldSalary, NewSalary, ChangeDate)
    SELECT i.ID, d.Salary, i.Salary, GETDATE()
    FROM inserted i
    JOIN deleted d ON i.ID = d.ID
    WHERE i.Salary != d.Salary
END
deleted:
  • 使用场景:在DELETE或UPDATE操作中,deleted 表包含被删除或更新前的行。
  • 示例:如果你想在删除员工记录前自动保存这些即将被删除的数据到一个历史表中,可以使用deleted 表。
CREATE TRIGGER BackupDeletedEmployees
ON Employees
BEFORE DELETE
AS
BEGIN
    INSERT INTO EmployeesBackup
    SELECT * FROM deleted
END
结合使用

在处理UPDATE操作时,inserteddeleted 表常常一起使用,其中inserted 表存储新的行数据,deleted 表存储原有的行数据。这允许触发器对更新前后的数据进行比较和处理。

注意点
  • 这些表只在触发器的上下文中存在。
  • 它们的结构与被操作的表(如Employees)完全相同。
  • 应谨慎使用触发器,因为它们可能影响数据库性能和复杂性。

第四题:Relational Database Design(15 points)

常见问题:
(1)Design an E-R diagram
(2)Design a set of relational schemas, and a list of constraints, including primarykey and foreignkey constraints
(3)Explain what normal form each relational schema satisfies, and why?

例题:在这里插入图片描述

  • 答案:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 答案有误:农户里不应该有场地编号
  • 做题流程:
    在这里插入图片描述

第五题:Query Optimization(10 points)

常见问题:
(1)Give a relational algebra expression using Cartesian product equivalent to the query
(2)Draw a syntax tree for the above relational algebra expression and give a procedure for query optimization
(3)Give the optimized relational algebra expression

  • 例题:
    在这里插入图片描述
  • 答案:
    在这里插入图片描述
  • 答案有误:最后要优化成连接形式

第六题:Database Recovery(10 points)

  • 例题:
    请添加图片描述
    请添加图片描述
  • 答案:
    在这里插入图片描述

第七题:Concurrency Control(5 points)

常见问题:
Add lock and unlock instructions to transactions Ti

  • 例题1:
    在这里插入图片描述
  • 答案1:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 例题2:
    在这里插入图片描述
  • 答案2:
    在这里插入图片描述
  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值