数据库期末复习(三)

发布时间:2026/7/9 2:05:28

数据库期末复习(三) 数据库期末复习三DBMS的主要作用DBMS是用户/应用程序与物理数据之间的“中间软件层”它负责安全、高效、统一地管理数据并向上层屏蔽底层存储的复杂性。具体来说它的核心作用可以总结为以下四大职能1. 数据定义与构建搭架子负责执行DDL数据定义语言建立我们之前讲的三级模式结构外模式、概念模式、内模式并定义数据的完整性约束如主键、外键规则。2. 数据操纵与访问做服务负责执行DML数据操作语言为用户和应用程序提供增、删、改、查CRUD接口。它会把我们写的高层SQL语句翻译成底层文件能理解的读写指令。3. 数据的控制与管理保安全安全性检查用户权限防止非法访问对应外模式的视图隔离。完整性保证数据符合规则比如年龄不能是负数。并发控制处理多用户同时访问避免数据错乱通过事务和锁机制。故障恢复在系统崩溃后利用日志将数据恢复到一致状态。4. 实现数据独立性核心价值维护两级映射外/概念映射、概念/内映射。这正是我们上一题的核心当DBA改变存储方式建索引时应用程序不用改物理独立性。当表结构微调加字段时用户视图可以不变逻辑独立性。关系模型关系模型是数据库领域的基础概念。它由IBM研究员E.F.Codd在1970年提出是逻辑数据模型的一种。目前主流的关系数据库如MySQL、Oracle、SQL Server都基于此模型。下面从数据结构、数据操作和完整性约束三个方面来说明关系模型这也对应了数据模型的三要素。1. 数据结构二维表关系模型的数据结构简单统一就是二维表格。用户看到的数据和表之间的关系都以这种逻辑上的二维表形式呈现。相关术语对照如下关系Relation对应一张二维表。元组Tuple对应表中的一行一条记录。属性Attribute对应表中的一列一个字段。域Domain属性的取值范围比如性别的域是{男女}。分量Component元组中的一个属性值即表格中的一个具体单元格。关系必须满足的特性每个分量必须是不可分的数据项满足第一范式。表中不允许出现重复的行元组唯一。行与列的顺序可以任意交换不影响逻辑含义。2. 关系的键码为了唯一标识表中的行关系模型引入了键Key的概念超键Super Key能唯一标识一个元组的属性或属性组合可能包含多余属性。候选键Candidate Key能唯一标识元组且不含多余属性的属性组合。一个关系可能有多个候选键。主键Primary Key从候选键中选定一个作为该表的唯一标识。主键值不能重复也不能为空。外键Foreign Key一个表中的属性如果它是另一个表的主键则称为外键。外键用于建立表与表之间的联系。3. 数据操作关系代数与关系演算关系模型的数据操作是日面向集合的操作对象和结果都是关系二维表。用户不需要指定数据的物理存取路径DBMS会负责优化。关系代数以集合运算为基础包含传统的集合运算并、交、差、笛卡尔积和专门的关系运算选择、投影、连接、除。关系演算以谓词逻辑为基础用户只需描述“要什么”不需要描述“怎么取”。SQL语言SQL是关系数据库的标准语言它综合了关系代数和关系演算的特点是用户操作关系数据库的实际工具。4. 完整性约束关系模型定义了三类完整性规则由DBMS自动维护实体完整性主键的属性值必须唯一且不能取空值。参照完整性外键的值要么为空要么必须等于被参照表的主键值。用户定义完整性根据业务需求自定义的约束例如年龄范围0-150、性别只能为男或女等。5. 关系模型的优缺点优点数据结构简单用户容易理解。数据独立性高用户无需关心物理存储细节。有坚实的数学理论基础集合论和逻辑学便于优化和规范化。缺点处理复杂对象或嵌套结构时表达能力有限例如处理树形结构或图结构时操作不够直观。对于大规模高并发场景严格的ACID事务约束可能会限制性能扩展这也是NoSQL数据库出现的原因之一。关系代数关系代数是一种过程化查询语言。它通过一组运算以一个或多个关系二维表作为输入并输出一个新的关系作为结果。核心特征是封闭性运算的结果仍然是关系因此可以嵌套组合形成复杂查询表达式。关系代数定义了8种基本运算可以分成集合运算和专门关系运算两类。1. 集合运算基于行这类运算来源于数学集合论要求参与运算的两个关系必须并兼容它们具有相同的属性个数且对应属性的数据类型相同。运算符号作用示例求结果并∪返回属于R或属于S的所有元组去重选修了数学课或英语课的学生集合交∩返回同时属于R和S的元组既选修了数学课又选修了英语课的学生集合差-返回属于R但不属于S的元组只选修了数学课但没选修英语课的学生集合笛卡尔积×将R的每一行与S的每一行进行组合生成一个更大的关系学生表 × 课程表 每个学生与每门课程的排列组合无实际意义常配合选择使用2. 专门关系运算基于行列操作这类运算直接针对二维表的行和列进行操作是查询中最核心的部分。运算符号希腊字母作用类比SQL选择σSigma按条件筛选行。从关系中选择满足给定条件的元组。WHERE条件子句投影πPi按列筛选。从关系中选择指定的若干属性并去除重复行。SELECT列名连接⨝Join将两个关系根据条件组合成一个新关系。这是笛卡尔积 选择条件的组合。JOIN ... ON ...除÷Division适合处理“查询全部/所有”的问题。例如查询选修了所有必修课程的学生。通常用NOT EXISTS实现3. 连接运算的进一步细分连接是关系代数中最常用也最重要的运算按条件不同分为θ连接Theta Join最通用的连接在笛卡尔积基础上应用一个比较条件如R.A S.B。等值连接Equi Joinθ连接的特例连接条件只能是相等如R.id S.id。自然连接Natural Join等值连接的特例。它自动寻找两个关系中同名的属性自动做等值连接并去掉重复的同名列。这是实际中最常用的连接方式。外连接Outer Join在自然连接基础上保留未匹配成功的行左外、右外、全外。4. 重命名运算符号ρRho作用给关系或属性起临时别名。常用于自连接一个表与自身连接或嵌套查询中。5. 关系代数与 SQL 的关系关系代数是SQL语言的理论基础。SQL的SELECT语句本质上就是关系代数表达式的具体实现。对应关系SELECT ... FROM ... WHERE ... GROUP BY ...的底层解析最终会被数据库优化器转换成关系代数操作树进行优化。过程化特征关系代数指明了运算的顺序先做什么、后做什么。与之相对的是关系演算它只描述“要什么”而不描述“怎么做”SQL更接近关系演算但执行时被转换成关系代数。6. 示例说明方便理解假设有两个表学生学号姓名和选课学号课程。查询查找选修了“数据库”课程的学生的姓名。关系代数表达式π_姓名( σ_课程数据库( 学生 ⨝ 选课 ) )运算步骤学生 ⨝ 选课做自然连接得到“学号-姓名-课程”的完整信息。σ_课程‘数据库’选择出课程为“数据库”的行。π_姓名只投影出“姓名”这一列。

相关新闻