软考 中级软件设计师 考点知识点笔记总结 day14 关系代数 数据库完整性约束
文章目录
- 6.5 关系代数
- 6.5.1 关系代数—七种基本运算
- 6.6 数据库完整性约束
- 6.7 关系型数据库SQL简介
6.5 关系代数
候选码(键):若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码。
主码(键):若一个关系有多个候选码,则选定其中一个为主码。
主属性:包含在任何候选码中的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性。
外码(键):如果公共属性在一个关系中是主属性,那么这个公共属性被称为另一个关系的外码。由此可见,外码表示了两个关系之间的
相关联系。
全码:若关系模式的所有属性组都是这个关系模式的候选码,则称为全码。
学生 S 关系模式,属性为学号、姓名、系、年龄和性别
教师 T 关系模式,属性为教师号、姓名、年龄和性别
课程 C 关系模式,属性为课程号、课程名和先修课程号
学生选课 SC 关系模式,属性为学号、课程号和成绩
6.5.1 关系代数—七种基本运算
七种基本运算:
- 并
- 交
- 差
- 笛卡尔积
- 投影
- 选择
- 联接
示例关系表:
-
关系S1
Sno Sname Sdept No0001 Mary IS No0003 Candy IS No0004 Jam IS -
关系S2
Sno Sname Sdept No0001 Mary IS No0008 Katter IS No0021 Tom IS
运算示例:
-
并(S1 ∪ S2)
Sno Sname Sdept No0001 Mary IS No0003 Candy IS No0004 Jam IS No0008 Katter IS No0021 Tom IS -
交(S1 ∩ S2)
Sno Sname Sdept No0001 Mary IS -
差(S1 - S2)
Sno Sname Sdept No0003 Candy IS No0004 Jam IS -
笛卡尔积(S1 × S2)
Sno (S1) Sname (S1) Sdept (S1) Sno (S2) Sname (S2) Sdept (S2) No0001 Mary IS No0001 Mary IS No0001 Mary IS No0008 Katter IS No0001 Mary IS No0021 Tom IS No0003 Candy IS No0001 Mary IS No0003 Candy IS No0008 Katter IS No0003 Candy IS No0021 Tom IS No0004 Jam IS No0001 Mary IS No0004 Jam IS No0008 Katter IS No0004 Jam IS No0021 Tom IS -
投影(π)
Sno Sname No0001 Mary No0003 Candy No0004 Jam -
选择(σ)
Sno Sname Sdept No0003 Candy IS -
联接(Join):当θ为“=”时称为等值连接。
- 等值连接:从关系R和S的笛卡尔积中选取属性间满足一定条件的元组,记作 R⋈X=YS={t∣t∈R×S∧t[X]=t[Y]}R⋈X=Y**S={t∣t∈R×S∧t[X]=t[Y]}
-
自然连接:是一种比较特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中把重复属性列去掉。
图表说明:
-
S1 和 S2 的等值连接
Sno Sname Sdept Age No0001 Mary IS 23
-
并(Union, ∪):假设我们有两个关系(表格)S1和S2,并且它们有相同的结构(即相同的列名和类型)。并运算是将这两个关系中的所有记录合并在一起,但重复的记录只保留一份。
-
交(Intersection, ∩):同样是针对两个具有相同结构的关系S1和S2,交运算会返回同时出现在S1和S2中的记录。
-
差(Difference, -):对于两个结构相同的关系S1和S2,差运算会返回那些在S1中存在但在S2中不存在的记录。
-
笛卡尔积(Cartesian Product, ×):这是一个非常基础的运算,它不关心两个关系是否有相同的结构。笛卡尔积会生成一个新的关系,其中包含来自第一个关系的每个记录与第二个关系的每个记录的所有可能组合。
-
投影(Projection, π):这个操作允许你从一个关系中选择特定的列(属性),从而创建一个新关系。换句话说,就是选择出你感兴趣的列的数据。
-
选择(Selection, σ):这个操作允许你根据某些条件筛选出满足这些条件的记录。例如,你可以选择年龄大于30岁的所有人。
-
联接(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 可能是查询效率最高的表达式,因为它首先对每个关系单独应用条件,然后再进行笛卡尔积。
关系代数表达式查询优化的原则如下:
- 提早执行选取运算:
- 对于有选择运算的表达式,应优化成尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量以及从外存读块的次数。
- 合并乘积与其后的选择运算为连接运算:
- 将投影运算与其后的其他运算同时进行,以避免重复扫描关系。
- 将投影运算与其后的其他运算同时进行:
- 以避免重复扫描关系。
- 将投影运算和其前后的二目运算结合起来:
- 因为没有必要为去掉某些字段再扫描一遍关系。
- 在执行连接前对关系适当地预处理:
- 就能快速地找到要连接的元组。
- 存储公共子表达式:
- 对于有公共子表达式的计算结果应存于外存(中间结果),这样,当从外存读出它的时间比计算的时间少时,就可节约操作时间。
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支持关系数据库的三级模式结构:视图对应外模式、基本表对应模式、存储文件对应内模式。
-
SQL数据定义:
-
创建表
-
修改和删除表
-
创建和删除索引
-
创建和删除视图
-
SQL数据查询:
-
select查询
-
简单查询
-
连接查询
-
子查询和聚集函数
-
SQL数据更新:
-
插入
-
删除
-
修改