数据库系统原理期末复习(四)

📅 2026/6/30 23:07:39
数据库系统原理期末复习(四)
数据库期末复习关系代数与数据库安全性一、本章复习重点本份复习主要覆盖两部分关系代数 数据库安全性关系代数偏计算题和表达式书写。数据库安全性偏概念题、简答题和 SQL 授权语句。期末高频1. 选择、投影、并、差、笛卡尔积 2. θ连接、等值连接、自然连接 3. “至少/全部/所有”类查询 4. GRANT 授权 5. REVOKE 回收权限 6. DAC 与 MAC 区别 7. 强制存取控制规则 8. 视图、审计、加密第一部分关系代数二、什么是关系代数1. 定义关系代数是一种基于集合的关系数据库查询语言。它用一组基本运算来表达数据库查询。简单理解SQL 是我们平时写的查询语言关系代数是 SQL 背后的理论基础。2. 关系代数的特点关系代数有三个重要特点1. 输入是关系 2. 输出仍然是关系 3. 可以把多个操作组合起来表达复杂查询例如先选择 再连接 最后投影就可以完成复杂查询。3. 关系代数的核心思想关系代数的思维方式是一个集合 ↓ 施加一个操作 ↓ 得到一个新集合 ↓ 继续操作 ↓ 得到最终结果一句话关系代数 对表进行集合运算。三、关系代数基本操作总览关系代数常见操作包括操作符号含义并∪两个关系合并差−从一个关系中去掉另一个关系中的元组笛卡尔积×两个关系所有元组两两组合选择σ选行投影π选列更名ρ改关系名或属性名交∩两个关系共有元组θ连接⋈θ按条件连接两个关系等值连接⋈按相等条件连接自然连接⋈同名属性自动相等连接除÷处理“全部/所有”类查询四、并相容性1. 什么是并相容性有些集合操作要求两个关系结构相同。比如并 ∪ 差 − 交 ∩这些操作要求两个关系满足并相容性。2. 并相容条件两个关系 R 和 S 并相容当且仅当1. 属性个数相同 2. 对应属性的域相同例如Student(Sid, Sname, Age) Professor(Pid, Pname, Age)如果 Sid 和 Pid 类型相同Sname 和 Pname 类型相同Age 类型相同则可以并相容。3. 易错点并相容不要求属性名必须完全一样。 重点是属性个数和对应属性的域。五、并运算 ∪1. 定义并运算表示属于 R 或属于 S 的所有元组。记作R ∪ S2. 生活理解R 参加体育队的学生 S 参加文艺队的学生 R ∪ S 参加体育队或文艺队的学生3. 关键词题目中出现或者 至少参加其中一个 任意一个通常考虑并运算。六、差运算 −1. 定义差运算表示属于 R 但不属于 S 的元组。记作R − S2. 生活理解R 参加体育队的学生 S 参加文艺队的学生 R − S 参加体育队但没有参加文艺队的学生3. 关键词题目中出现但不 没有 不属于 除去通常考虑差运算。4. 易错点R − S 和 S − R 结果不同。 差运算有方向。七、交运算 ∩1. 定义交运算表示同时属于 R 和 S 的元组。记作R ∩ S2. 生活理解R 学过数据库的学生 S 学过操作系统的学生 R ∩ S 既学过数据库又学过操作系统的学生3. 关键词题目中出现既……又…… 同时 并且 都通常考虑交运算。4. 可用差表示交交可以用差表示R ∩ S R − (R − S)八、笛卡尔积 ×1. 定义笛卡尔积表示把两个关系的每个元组进行两两组合。记作R × S2. 结果规模如果R 有 n 个属性x 个元组 S 有 m 个属性y 个元组那么R × S 有 n m 个属性 R × S 有 x × y 个元组3. 作用笛卡尔积是多表查询的基础。但是直接笛卡尔积会产生大量无意义组合。所以实际查询通常会加连接条件。例如Student × SC再筛选Student.Sno SC.Sno九、选择运算 σ1. 定义选择运算是从关系中选出满足条件的行。记作σ条件(R)2. 通俗理解选择 选行类似 SQL 中的WHERE3. 例子查询男同学σSsex男(Student)查询年龄小于 20 的学生σSage20(Student)查询 3 系且年龄大于 20 的学生σSdept03 ∧ Sage20(Student)4. 条件运算符常见比较符 ≠ ≥ ≤常见逻辑符∧ 并且 ∨ 或者 ¬ 非5. 易错点选择是选行不是选列。σ 是横向筛选元组。十、投影运算 π1. 定义投影运算是从关系中选出指定的列。记作π属性列表(R)2. 通俗理解投影 选列类似 SQL 中的SELECT列名3. 例子查询所有学生姓名和年龄πSname,Sage(Student)查询 3 系学生的学号和姓名πSno,Sname(σSdept03(Student))4. 投影会去重关系代数基于集合。所以投影后如果出现重复元组应自动去重。5. 选择 vs 投影操作符号作用SQL 对应选择σ选行WHERE投影π选列SELECT记忆σ 选行 π 选列十一、更名运算 ρ1. 定义更名运算用于给关系或属性改名字。记作ρ新名(R)2. 什么时候用最常见场景一个表和自己连接时必须更名。例如查询同时学过 001 和 002 两门课的学生需要用 SC 和 SC1 自连接ρSC1(SC)十二、θ连接1. 定义θ连接表示从两个关系的笛卡尔积中选出满足连接条件的元组。记作R ⋈条件 S本质R ⋈条件 S σ条件(R × S)2. 例子查询学生选课信息Student ⋈Student.SnoSC.Sno SC3. θ 可以是什么θ 可以是 ≠ ≥ ≤4. 作用θ连接可以避免直接笛卡尔积产生大量无意义组合。十三、等值连接1. 定义等值连接是θ 为 的连接。例如Student ⋈Student.SnoSC.Sno SC2. 等值连接和 θ连接关系等值连接是 θ连接的特例。十四、自然连接1. 定义自然连接是按两个关系中同名属性自动进行等值连接并去掉重复属性列。记作R ⋈ S2. 自然连接特点1. 必须有同名属性 2. 同名属性值相等才连接 3. 结果中同名属性只保留一列3. 例子SC(Sno, Cno, Grade) Course(Cno, Cname, Credit)查询学生选课成绩和课程名πSno,Cname,Grade(SC ⋈ Course)因为两表都有Cno自然连接会自动按 Cno 相等连接。4. 自然连接易错点自然连接会自动使用所有同名属性。如果两个表中有多个同名属性但并不都应该作为连接条件就不能随便用自然连接。十五、连接相关对比操作含义是否需要条件是否去掉重复列笛卡尔积所有元组两两组合不需要不去θ连接按条件筛选组合需要不一定去等值连接按相等条件连接需要 不一定去自然连接同名属性自动相等连接自动去掉重复同名列十六、关系代数查询写法模板1. 单表查询题目查询计算机系学生姓名。表达式πSname(σSdeptCS(Student))思路先选出计算机系学生 再投影姓名2. 两表查询题目查询选修 001 课程的学生学号和姓名。表达式πSno,Sname(σCno001(Student ⋈ SC))如果不用自然连接πStudent.Sno,Sname( σStudent.SnoSC.Sno ∧ Cno001(Student × SC) )3. 三表查询题目查询学习课程名为“数据结构”的学生学号、姓名和成绩。表达式πSno,Sname,Grade( σCname数据结构(Student ⋈ SC ⋈ Course) )十七、“或”和“且”的常见区别1. 查询学过 001 或 002 的学生πSno(σCno001 ∨ Cno002(SC))2. 查询同时学过 001 和 002 的学生不能写成σCno001 ∧ Cno002(SC)因为同一行的 Cno 不可能既等于 001 又等于 002。正确写法一交运算πSno(σCno001(SC)) ∩ πSno(σCno002(SC))正确写法二自连接πSC.Sno( σSC.SnoSC1.Sno ∧ SC.Cno001 ∧ SC1.Cno002 (SC × ρSC1(SC)) )十八、“不选某课”的常见陷阱题目查询没有选修 002 课程的学生姓名。错误思路σCno≠002(SC)因为一个学生可能选了 001也选了 002。他在 001 的记录满足 Cno≠002但实际上他选过 002。正确思路所有学生 − 选过002的学生表达式πSno(Student) − πSno(σCno002(SC))如果要姓名πSname( Student ⋈ ( πSno(Student) − πSno(σCno002(SC)) ) )十九、除法运算 ÷1. 除法解决什么问题除法常用于查询“全部” 查询“所有” 查询“至少包含某集合全部元素”例如查询选修了全部课程的学生。 查询选修了张老师所教全部课程的学生。 查询购买了所有商品的客户。2. 除法的基本形式如果R(X, Y) S(Y)那么R ÷ S结果是满足对 S 中每一个 Y都存在 (X,Y) ∈ R 的 X。3. 例子SC(Sno, Cno) Course(Cno)查询选修了所有课程的学生πSno,Cno(SC) ÷ πCno(Course)4. 除法记忆R ÷ S 找出 R 中那些能匹配 S 全部内容的剩余属性。5. 看到哪些词想到除法全部 所有 每一个 至少包含全部二十、关系代数做题步骤遇到查询题按这个流程1. 确定需要哪些表 2. 判断是否需要连接 3. 先用选择 σ 筛选条件 4. 再用投影 π 输出需要的列 5. 遇到“或”用 ∪ 或 ∨ 6. 遇到“且同时满足两个集合”用 ∩ 或自连接 7. 遇到“没有/不”用差 − 8. 遇到“全部/所有”考虑除法 ÷第二部分数据库安全性二十一、数据库安全性概述1. 什么是数据库安全性数据库安全性是指保护数据库防止非法使用造成的数据泄露、更改或破坏。简单说不该看的人不能看。 不该改的人不能改。 出了问题能追踪。 重要数据要加密。2. 为什么数据库需要安全性数据库最大特点之一是数据共享但共享不能是无条件的。必须由 DBMS 统一控制合法用户 只能访问 被授权的数据 并执行 被允许的操作3. 数据库面临的不安全因素威胁说明非授权访问未授权用户非法访问数据库恶意修改和破坏篡改、删除重要数据敏感数据泄露客户信息、医疗档案、银行数据泄露身份仿冒窃取用户名和口令后冒充用户SQL 注入通过恶意 SQL 获取或破坏数据内部人员违规管理员或员工越权操作安全环境脆弱操作系统、网络、硬件存在漏洞二十二、数据库安全控制方法总览常见数据库安全控制方法用户标识和鉴别 存取控制 视图机制 审计 数据加密二十三、用户标识和鉴别1. 定义用户标识和鉴别是系统确认用户身份是否合法的过程。这是数据库安全的第一道防线。2. 用户标识用户标识通常包括用户名 用户标识号 UIDUID 在系统生命周期内唯一。3. 常见鉴别方式方式说明静态口令用户名 密码动态口令一次性验证码生物特征指纹、人脸、虹膜智能卡使用硬件卡片认证二十四、存取控制1. 什么是存取控制存取控制是DBMS 控制用户能访问哪些数据、能执行哪些操作的机制。2. 存取控制包括两部分1. 定义用户权限 2. 合法权限检查3. 流程用户发出 SQL 请求 ↓ DBMS 检查用户身份 ↓ 查数据字典中的权限规则 ↓ 判断是否允许执行 ↓ 允许或拒绝二十五、自主存取控制 DAC1. 定义DAC 是Discretionary Access Control 自主存取控制特点用户可以被授予不同对象上的不同权限。 拥有授权选项的用户还可以把权限转授给别人。2. DAC 的核心DAC 控制的是用户 对象 操作例如用户 U1 可以查询 Student 表。 用户 U2 可以修改 Course 表。 用户 U3 可以删除 SC 表记录。3. DAC 的 SQL 实现DAC 主要通过GRANTREVOKE实现。二十六、GRANT 授权1. 基本格式GRANT权限[,权限]...ON对象类型对象名TO用户[,用户]...[WITHGRANTOPTION];2. 含义把某个对象上的某些操作权限授予某些用户。3. 常见权限SELECT INSERT UPDATE DELETE REFERENCES ALL PRIVILEGES4. 示例查询权限GRANTSELECTONTABLEStudentTOU1;含义把查询 Student 表的权限授予 U1。授予全部权限GRANTALLPRIVILEGESONTABLEStudent,CourseTOU2,U3;授权给所有用户GRANTSELECTONTABLESCTOPUBLIC;对某一列授权GRANTUPDATE(Sno),SELECTONTABLEStudentTOU4;注意对属性列授权时必须写明列名。允许继续授权GRANTINSERTONTABLESCTOU5WITHGRANTOPTION;含义U5 不仅可以插入 SC 表还可以把 INSERT 权限授予别人。二十七、REVOKE 回收权限1. 基本格式REVOKE权限[,权限]...ON对象类型对象名FROM用户[,用户]...[CASCADE|RESTRICT];2. 示例回收列更新权限REVOKEUPDATE(Sno)ONTABLEStudentFROMU4;回收 PUBLIC 权限REVOKESELECTONTABLESCFROMPUBLIC;级联回收REVOKEINSERTONTABLESCFROMU5CASCADE;如果 U5 曾经把权限授给 U6U6 又授给 U7则 CASCADE 会级联回收从 U5 传播出去的权限。3. CASCADE 与 RESTRICT选项含义CASCADE级联回收包括由该用户传播出去的权限RESTRICT如果存在依赖授权则拒绝回收二十八、WITH GRANT OPTION1. 作用允许被授权用户继续把权限授予别人。2. 易错点没有 WITH GRANT OPTION只能自己用不能转授权。例如GRANTINSERTONTABLESCTOU5WITHGRANTOPTION;U5 可以继续授权。GRANTINSERTONTABLESCTOU7;U7 不能继续授权。二十九、角色 Role1. 什么是角色角色是一组权限的集合。简单理解角色 权限包2. 为什么需要角色如果很多用户权限一样一个个授权很麻烦。可以先创建角色把权限授给角色再把角色授给用户。3. 角色操作创建角色CREATEROLE R1;给角色授权GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;把角色授给用户GRANTR1TO王平,张明,赵玲;回收角色REVOKER1FROM王平;4. 角色优点简化权限管理 便于批量授权 适合职责相同的一组用户 支持最小权限原则三十、强制存取控制 MAC1. 定义MAC 是Mandatory Access Control 强制存取控制它比 DAC 更严格。MAC 的核心是主体和客体都有安全级别系统根据安全级别强制决定是否允许访问。2. 主体和客体概念含义例子主体主动访问的一方用户、进程客体被访问的对象表、视图、文件、记录3. 敏感度标记安全级别从高到低绝密 TS 机密 S 可信 C 公开 P关系TS ≥ S ≥ C ≥ P主体的级别叫许可证级别客体的级别叫密级三十一、MAC 存取规则1. 读规则主体可以读取客体当且仅当主体许可证级别 ≥ 客体密级简单说高等级可以读低等级。 低等级不能读高等级。口诀不上读也就是不能向上读。2. 写规则主体可以写客体当且仅当主体许可证级别 ≤ 客体密级简单说低等级可以写高等级。 高等级不能写低等级。口诀不下写防止高密级信息泄露到低密级对象。3. 记忆口诀不上读不下写。也可以记读级别要够高。 写不能往低处写。4. 例子用户安全级别是机密 S对象 A 密级公开 P可以读因为S ≥ P但不能写低密级对象因为会泄露高密级信息。对象 B 密级绝密 TS不能读因为S TS但可以写入更高密级对象。三十二、DAC vs MAC对比项DACMAC中文自主存取控制强制存取控制控制依据用户权限安全级别权限是否可转授可以若有授权选项不由用户决定数据本身是否有密级通常没有有敏感度标记安全级别C2 常见B1 常见适合场景普通商业系统军事、机密系统SQL 实现GRANT / REVOKE系统强制策略三十三、DAC MAC 检查流程一般是SQL 请求 ↓ 身份鉴别 ↓ DAC 检查 ↓ MAC 检查 ↓ 允许访问只有 DAC 和 MAC 都通过用户才能访问数据。三十四、视图机制1. 视图如何保护数据视图可以把敏感数据隐藏起来只暴露部分数据给用户。例如原表 Student 有学号 姓名 性别 年龄 系别 身份证号 手机号可以建立视图只显示学号 姓名 系别2. 示例建立计算机系学生视图CREATEVIEWCS_StudentASSELECT*FROMStudentWHERESdeptCS;授权查询视图GRANTSELECTONCS_StudentTO王平;3. 视图的安全作用1. 隐藏敏感列 2. 隐藏不允许访问的行 3. 简化权限管理 4. 间接实现细粒度访问控制三十五、审计 Audit1. 什么是审计审计是把用户对数据库的重要操作记录到审计日志中。审计日志可以记录谁 在什么时候 对什么对象 执行了什么操作 是否成功2. 审计作用追踪非法访问 发现异常操作 事后追责 防止抵赖 辅助安全分析3. 审计对象常见审计事件类型说明服务器事件数据库服务器启动、关闭等系统权限事件使用系统权限的操作语句事件DDL、DML、DCL模式对象事件对表、视图等对象的操作4. AUDIT 和 NOAUDIT开启审计AUDITALTER,UPDATEONSC;表示审计对 SC 表的结构修改和数据修改。取消审计NOAUDITALTER,UPDATEONSC;5. 审计易错点审计会消耗时间和空间。 所以不是所有系统都必须全量审计。 安全要求高的系统更需要审计。三十六、数据加密1. 什么是数据加密数据加密是把明文通过算法转换成密文防止未授权者直接读取。明文 → 加密算法 → 密文2. 数据加密保护什么主要保护存储中的数据 传输中的数据三十七、存储加密1. 透明存储加密透明存储加密特点1. 数据写入磁盘时自动加密 2. 读取时自动解密 3. 对应用程序透明 4. 性能较好常见名称TDE Transparent Data Encryption2. 非透明存储加密非透明存储加密通常需要应用或用户显式调用加密函数。特点灵活 但应用改造成本高三十八、传输加密1. 传输加密目的防止数据在网络传输过程中被窃听、篡改或伪造。常见技术SSL TLS HTTPS2. 链路加密链路加密在链路层加密。 报头和报文都加密。3. 端到端加密端到端加密发送端加密。 接收端解密。 通常只加密报文不加密报头。4. SSL/TLS 大致流程1. 创建可信连接 2. 确认通信双方身份 3. 协商加密算法和密钥 4. 加密传输数据 5. 关闭可信连接三十九、openGauss 安全能力1. openGauss 安全机制openGauss 提供多种安全能力认证 访问控制 审计 数据加密 数据脱敏 行级访问控制 角色权限管理 三权分立2. RBACRBAC 是Role-Based Access Control 基于角色的访问控制核心思想权限授给角色 角色授给用户 用户通过角色获得权限关系用户 ↔ 角色 ↔ 权限3. 行级访问控制 RLSRLS 是Row Level Security 行级访问控制作用控制用户能看到表中的哪些行。特点不同用户执行同一条 SQL看到的结果可能不同。例如ALTERTABLEtablenameENABLEROWLEVELSECURITY;CREATEROWLEVELSECURITY POLICY tablename_rlsONtablenameUSING(roleCURRENT_USER);4. 三权分立三权分立通常包括系统管理员 安全管理员 审计管理员目的避免超级管理员权力过大。 实现职责分离。四十、数据库安全常见攻击1. SQL 注入SQL 注入是攻击者把恶意 SQL 拼接到应用程序原本的 SQL 中从而执行非授权操作。防御参数化查询 输入校验 最小权限 ORM 防注入 审计监控2. XSSXSS 是Web 应用把用户输入当成脚本执行导致浏览器执行恶意代码。3. CSRFCSRF 是攻击者利用用户已登录身份伪造请求执行非授权操作。四十一、TCSEC / TDI 安全标准1. TCSEC 安全级别从低到高D C1 C2 B1 B2 B3 A12. 各级别含义级别名称特点D最小保护几乎没有专门安全机制C1自主安全保护初级 DACC2受控存取保护更细的 DAC、审计、资源隔离B1标记安全保护MAC、敏感度标记B2结构化保护形式化安全策略模型B3安全域更强访问监控和审计A1验证设计形式化设计和验证3. 高频记忆C2DAC 审计 B1MAC 标记安全四十二、CC 标准1. CC 是什么CC 是 Common Criteria。它把信息安全要求分为安全功能要求 安全保证要求2. EAL 评估保证级EAL含义近似对应EAL1功能测试低EAL2结构测试C1EAL3系统测试和检查C2EAL4系统设计、测试和复查B1EAL5半形式化设计和测试B2EAL6半形式化验证B3EAL7形式化验证A1四十三、数据库安全高频简答题模板1. 简述数据库安全性答数据库安全性是指保护数据库防止非法使用造成的数据泄露、更改或破坏。由于数据库具有数据共享性因此必须由 DBMS 对用户身份、访问权限、操作行为和敏感数据进行统一控制。常见安全措施包括用户身份鉴别、存取控制、视图、审计和数据加密等。2. 简述 DAC 和 MAC 的区别答DAC 是自主存取控制主要根据用户对数据库对象拥有的权限来决定是否允许访问权限可以通过 GRANT 和 REVOKE 授予或回收具有授权传播特性。MAC 是强制存取控制系统为主体和客体分配安全级别根据许可证级别和密级强制判断访问是否合法用户不能自主改变。MAC 安全级别更高适合机密性要求较强的系统。3. 简述 GRANT 和 REVOKE答GRANT 用于授予用户或角色某个数据库对象上的操作权限例如 SELECT、INSERT、UPDATE 和 DELETE。若带 WITH GRANT OPTION被授权用户还可以继续转授权。REVOKE 用于回收已经授予的权限。若使用 CASCADE可以级联回收由该用户继续传播出去的权限。4. 简述视图的安全作用答视图可以隐藏用户无权访问的数据只暴露允许访问的行或列。通过给用户授予视图权限而不是基表权限可以实现一定程度的细粒度访问控制从而保护敏感数据。5. 简述审计的作用答审计通过审计日志记录用户对数据库的重要操作包括操作用户、时间、对象、操作类型和执行结果。审计可以用于发现非法访问、追踪异常行为、事后追责和防止抵赖。但审计会消耗系统时间和空间因此通常在安全要求较高的场景中启用。6. 简述数据加密答数据加密是将明文通过加密算法转换成密文以防止未授权用户直接读取数据。数据库加密包括存储加密和传输加密。存储加密保护磁盘上的数据传输加密保护网络传输过程中的数据常见技术包括 TDE、SSL 和 TLS。四十四、关系代数高频题型总结1. 查询满足条件的行σ条件(R)2. 查询指定列π列名(R)3. 查询满足条件后的指定列π列名(σ条件(R))4. 两表连接查询π目标列(σ条件(R ⋈ S))或π目标列(σ连接条件 ∧ 查询条件(R × S))5. 查询“同时满足”用交A ∩ B或自连接。6. 查询“不满足”用差全集 − 不符合要求的集合7. 查询“全部/所有”用除法R ÷ S四十五、考前速记1. 关系代数σ选行 π选列 ∪或者 ∩既……又…… −但不 ×两两组合 ⋈连接 ÷全部/所有 ρ更名2. 连接θ连接 笛卡尔积 条件筛选 等值连接 θ 是 自然连接 同名属性自动相等 去重复列3. 查询关键词或者并 并且交 / 选择条件 ∧ 但不差 没有差 全部除法 所有除法 同时选两门课交或自连接4. 数据库安全鉴别确认你是谁 授权决定你能干什么 视图隐藏不该看的数据 审计记录你干了什么 加密看到了也读不懂5. DAC 与 MACDAC用户权限控制GRANT/REVOKE MAC安全级别控制不上读不下写6. GRANT / REVOKEGRANTSELECTONTABLEStudentTOU1;REVOKESELECTONTABLEStudentFROMU1;7. TCSECC2受控存取保护DAC 更细 审计 B1标记安全保护MAC四十六、本章一句话总结关系代数的核心是用集合操作表达数据库查询重点掌握“选行、选列、连接、差、交、除”。数据库安全性的核心是通过身份鉴别、权限控制、视图、审计和加密保证合法用户只能访问合法数据并且操作可追踪、数据不泄露。