当前位置: 首页 > news >正文

软考 中级软件设计师 考点知识点笔记总结 day14 关系代数 数据库完整性约束

文章目录

        • 6.5 关系代数
          • 6.5.1 关系代数—七种基本运算
        • 6.6 数据库完整性约束
        • 6.7 关系型数据库SQL简介


6.5 关系代数

候选码(键):若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码。

主码(键):若一个关系有多个候选码,则选定其中一个为主码。

主属性:包含在任何候选码中的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性。

外码(键):如果公共属性在一个关系中是主属性,那么这个公共属性被称为另一个关系的外码。由此可见,外码表示了两个关系之间的

相关联系。

全码:若关系模式的所有属性组都是这个关系模式的候选码,则称为全码。

学生 S 关系模式,属性为学号、姓名、系、年龄和性别
教师 T 关系模式,属性为教师号、姓名、年龄和性别
课程 C 关系模式,属性为课程号、课程名和先修课程号
学生选课 SC 关系模式,属性为学号、课程号和成绩

6.5.1 关系代数—七种基本运算

七种基本运算:

  • 笛卡尔积
  • 投影
  • 选择
  • 联接

示例关系表:

  • 关系S1

    SnoSnameSdept
    No0001MaryIS
    No0003CandyIS
    No0004JamIS
  • 关系S2

    SnoSnameSdept
    No0001MaryIS
    No0008KatterIS
    No0021TomIS

运算示例:

  • 并(S1 ∪ S2)

    SnoSnameSdept
    No0001MaryIS
    No0003CandyIS
    No0004JamIS
    No0008KatterIS
    No0021TomIS
  • 交(S1 ∩ S2)

    SnoSnameSdept
    No0001MaryIS
  • 差(S1 - S2)

    SnoSnameSdept
    No0003CandyIS
    No0004JamIS
  • 笛卡尔积(S1 × S2)

    Sno (S1)Sname (S1)Sdept (S1)Sno (S2)Sname (S2)Sdept (S2)
    No0001MaryISNo0001MaryIS
    No0001MaryISNo0008KatterIS
    No0001MaryISNo0021TomIS
    No0003CandyISNo0001MaryIS
    No0003CandyISNo0008KatterIS
    No0003CandyISNo0021TomIS
    No0004JamISNo0001MaryIS
    No0004JamISNo0008KatterIS
    No0004JamISNo0021TomIS
  • 投影(π)

    SnoSname
    No0001Mary
    No0003Candy
    No0004Jam
  • 选择(σ)

    SnoSnameSdept
    No0003CandyIS
  • 联接(Join):当θ为“=”时称为等值连接。

    • 等值连接:从关系R和S的笛卡尔积中选取属性间满足一定条件的元组,记作 R⋈X=YS={t∣t∈R×S∧t[X]=t[Y]}RX=Y**S={ttR×St[X]=t[Y]}
  • 自然连接:是一种比较特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中把重复属性列去掉。

图表说明:

  • S1 和 S2 的等值连接

    SnoSnameSdeptAge
    No0001MaryIS23
  1. 并(Union, ∪):假设我们有两个关系(表格)S1和S2,并且它们有相同的结构(即相同的列名和类型)。并运算是将这两个关系中的所有记录合并在一起,但重复的记录只保留一份。

  2. 交(Intersection, ∩):同样是针对两个具有相同结构的关系S1和S2,交运算会返回同时出现在S1和S2中的记录。

  3. 差(Difference, -):对于两个结构相同的关系S1和S2,差运算会返回那些在S1中存在但在S2中不存在的记录。

  4. 笛卡尔积(Cartesian Product, ×):这是一个非常基础的运算,它不关心两个关系是否有相同的结构。笛卡尔积会生成一个新的关系,其中包含来自第一个关系的每个记录与第二个关系的每个记录的所有可能组合。

  5. 投影(Projection, π):这个操作允许你从一个关系中选择特定的列(属性),从而创建一个新关系。换句话说,就是选择出你感兴趣的列的数据。

  6. 选择(Selection, σ):这个操作允许你根据某些条件筛选出满足这些条件的记录。例如,你可以选择年龄大于30岁的所有人。

  7. 联接(Join):它是关系代数中非常重要的操作。联接操作是基于共同字段(通常是主键或外键)将两个关系结合起来。最常见的类型是等值联接,它将两个关系中在特定字段上有相同值的记录联接起来。

    Q 给定关系 R(A, B, C, D) 和关系 S(A, C, E, F),对其进行自然连接运算 R ? S 后的属性列为 (54)。C
    与 σ R.B > S.E(R ? S) 等价的关系代数表达式为 (55)。B

    选择题:
    (54):
    A. 4 B. 5 C. 6 D. 8

    (55):
    A. σ₂>₇(R × S)
    B. π₁₂₃₄₅₆₇₈(σ₁=₅∧₂>₇∧₃=₆(R × S))
    C. σ₂>₇(R × S)
    D. π₁₂₃₄₅₆₇₈(σ₁=₅∧₂>₇∧₃=₆(R × S))

    对于自然连接运算 R ? S 后的属性列数,给定关系 R(A, B, C, D) 和关系 S(A, C, E, F),自然连接会在公共属性 A 和 C 上进行等值比较,并去除重复的公共属性。因此,结果中的属性列为 R 的所有属性(A, B, C, D)加上 S 中非公共属性(E, F),即总共 6 列。

    所以正确答案是 (54) C. 6。

    与 σ R.B > S.E(R ? S) 等价的关系代数表达式,首先需要对两个关系 R 和 S 进行笛卡尔积(×),然后在公共属性上进行等值条件过滤(这里是 A 和 C),最后应用选择条件 R.B > S.E。正确的顺序应该是先做笛卡尔积,再通过等值条件筛选,最后应用选择条件。这对应于选项中完整的表达式为 π₁₂₃₄₅₆₇₈(σ₁=₅∧₃=₆∧₂>₇(R × S))。

    但是,注意到这里的表示方法有些混淆,因为标准的关系代数表示法通常不会用这种形式。不过,基于描述,最接近的匹配是选项 B. π₁₂₃₄₅₆₇₈(σ₁=₅∧₂>₇∧₃=₆(R × S)),尽管这里可能有一个小错误——2>7 应该指 R.B > S.E,而 1=5 和 3=6 分别代表 A 和 C 属性上的等值条件。

    因此,最佳答案可能是 (55) B. π₁₂₃₄₅₆₇₈(σ₁=₅∧₂>₇∧₃=₆(R × S))。

    Q 下列查询 B = “大数据” 且 F = “开发平台”,结果集属性列为 A、B、C、F 的关系代数表达式中,查询效率最高的是 (56)。D

    A π 1,2,3,8 (σ 2=大数据∧1=5∧3=6∧8=开发平台(R×S))

    B π1,2,3,8(σ1=5∧3=6∧8=开发平台(σ2=大数据(R×S)))

    C π1,2,3,8(σ2=大数据∧1=5∧3=6(R×σ4=开发平台(S)))

    D π1,2,3,8(σ1=5∧3=6(σ2=大数据(Rσ4=开发平台(S)))

    解释:

    • π: 投影操作,选择指定的列。
    • σ: 选择操作,根据条件筛选记录。
    • ×: 笛卡尔积操作,将两个关系的所有可能组合生成一个新的关系。

    分析:

    • A: 先进行笛卡尔积,然后应用所有条件。
    • B: 先应用部分条件,再进行笛卡尔积,最后应用剩余条件。
    • C: 先进行笛卡尔积,然后应用部分条件。
    • D: 先分别对两个关系应用条件,再进行笛卡尔积。

    最佳答案:

    通常情况下,先进行选择操作(σ)可以减少数据量,从而提高后续操作的效率。因此,选项 D 可能是查询效率最高的表达式,因为它首先对每个关系单独应用条件,然后再进行笛卡尔积。

    关系代数表达式查询优化的原则如下:

    1. 提早执行选取运算
      • 对于有选择运算的表达式,应优化成尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量以及从外存读块的次数。
    2. 合并乘积与其后的选择运算为连接运算
      • 将投影运算与其后的其他运算同时进行,以避免重复扫描关系。
    3. 将投影运算与其后的其他运算同时进行
      • 以避免重复扫描关系。
    4. 将投影运算和其前后的二目运算结合起来
      • 因为没有必要为去掉某些字段再扫描一遍关系。
    5. 在执行连接前对关系适当地预处理
      • 就能快速地找到要连接的元组。
    6. 存储公共子表达式
      • 对于有公共子表达式的计算结果应存于外存(中间结果),这样,当从外存读出它的时间比计算的时间少时,就可节约操作时间。
6.6 数据库完整性约束

数据库的完整性约束

完整性规则

  • 实体完整性:规定基本关系R的主属性A不能取空值。

  • 参照完整性

    :若F是基本关系R的外码,它与基本关系S的主码相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

    • 或者取空值(F的每个属性值均为空值),
    • 或者等于S中某个元组的主码值。
  • 用户定义完整性:就是针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。

    关系代数—关系的三种类型

    下面介绍关系的三种类型:

    基本关系(通常又称为基本表、基表):是实际存在的表,它是实际存储数据的逻辑表示。

    查询表:查询结果对应的表。

    视图表:是由基本表或其他视图表导出的表。由于它本身不独立存储在数据库中,数据库中只存放它的定义,所以常称为虚表。

    关系代数—关系的三种类型

    数据库系统通常采用三级模式结构:外模式、模式和内模式。这三级模式分别对应数据库的 (B)

    A. 基本表、存储文件和视图

    B. 视图、基本表和存储文件

    C. 基本表、视图和存储文件

    D. 视图、存储文件和基本表

    正确答案是 B,即“视图、基本表和存储文件”。

6.7 关系型数据库SQL简介

SQL是在关系数据库中最普遍使用的语言,它不仅包含数据查询功能,还包括插入、删除、更新和数据定义功能。

  • SQL具有综合统一、高度非过程化、面向集合的操作方式,两种使用方式,语言简洁且易学易用等特点。
  • SQL支持关系数据库的三级模式结构:视图对应外模式、基本表对应模式、存储文件对应内模式。
  1. SQL数据定义:

  2. 创建表

  3. 修改和删除表

  4. 创建和删除索引

  5. 创建和删除视图

  6. SQL数据查询:

  7. select查询

  8. 简单查询

  9. 连接查询

  10. 子查询和聚集函数

  11. SQL数据更新:

  12. 插入

  13. 删除

  14. 修改

相关文章:

  • 【xlog日志文件】怎么删除里面包含某些字符串的行(使用excel)
  • idea2024.1双击快捷方式打不开
  • 【Docker-16】Docker Volume存储卷
  • 【Java面试笔记:基础】2.Exception和Error有什么区别?
  • 海外版高端Apple科技汽车共享投资理财系统
  • qt 配置 mysql 驱动问题:Cannot load library qsqlmysql;QMYSQL driver not loaded
  • 分布式光纤测温技术让森林火灾预警快人一步
  • iFable,AI角色扮演互动平台,自动生成沉浸式故事游戏
  • AI之pdf解析:Tesseract、PaddleOCR、RapidPaddle(可能为 RapidOCR)和 plumberpdf 的对比分析及使用建议
  • 2025年首届人形机器人半程马拉松比赛(附机器人照片)
  • 【大模型】Browser-Use AI驱动的浏览器自动化工具
  • Kotlin安卓算法总结
  • Kotlin基础(①)
  • 速通FlinkCDC3.0
  • MongoDB数据库的安装到入门使用详细讲解
  • HTTP 和 HTTPS 有什么区别?
  • 负载均衡与实时调度—LSF
  • 解决Mac 安装 PyICU 依赖失败
  • Centos9 安装 nginx 及配置
  • 【React】搜索时高亮被搜索选中的文案
  • 中国戏剧奖梅花奖终评启动在即,17场演出公益票将发售
  • 在因关税战爆火的敦煌网上,美国人爱买什么中国商品
  • 广发基金刘格崧一季报:首次买入广东宏大、分众传媒,减仓亿纬锂能
  • 同济研究生开发AI二维码走红拿下大奖,新一代00开发者掀起AI创业潮
  • 一中国公民在日本滑雪场意外死亡,我领馆发布提醒
  • “万人大院”重组,上海交大校长丁奎岭:人才培养事关生存发展,再难也要改