【数据库原理及应用】——关系操作、关系完整性、关系代数(学习笔记)

【软考】关系代数篇(基础操作、关系公式、各种连接) 关系代数是数据库管理系统中的一种数学工具,用于描述和操作关系数据库中的数据。基本运算:关系代数定义了一些基本的运算,如选择、投影、连接、并、差等,用于从一个或多个关系中获取所需的数据。关系操作:这些基本运算可以组合使用,形成更复杂的关系操作,如自然连接、交集、并集、除法等,用于实现更复杂的数据查询和操作。完备性:关系代数是完备的,即可以通过组合基本运算来实现所有可能的数据库操作。形式化:关系代数提供了一种形式化的方式来描述数据库操作,使得数据库系统的设计和实现更加规范和易于理解。理论基础。 阅读详情

📖 前言:随着时间的变化,现实世界也在不停地发生变化,因此,各种操作也在不停的更新数据库中的数据,但是这种更新要受到现实世界中许多已有事实的限定和制约,例如,学生选修的课程开设了才能选修,即选课关系中课程号来自于课程关系。这些约束为现实世界的真实需要,任何关系在任何时刻都必须满足这些语义约束。为了方便用户,关系模型为这些限定和制约提供了丰富有效的完整性约束机制。
关系操作是关系数据模型的第二个重要的要素,但关系模型并未在关系数据库管理系统语言中给出具体的语法要求,即不同的关系数据库管理系统可以定义和开发不同的语言来实现这些操作。
关系代数是一种抽象的查询语言,是关系数据库操纵语言的一种传统表达方式,它是由关系的运算来表达查询的。它是处理关系数据库的重要数学基础之一,许多著名的关系数据库语言(如 SQL 等)都是基于关系代数开发的。

在这里插入图片描述

🕒 0. 思维导图

请添加图片描述

🕒 1. 关系的完整性

假设有学生选课数据库:
学生(学号,姓名,性别,专业号,年龄,班长)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
专业(专业号,专业名,申办时间)

🕘 1.1 关系的三类完整性约束

  • 如何保证一个数据(实体)是可识别的?
    实体完整性
  • 如何由一个数据找到另一个数据?
    参照完整性
  • 如何保证一个数据的取值合理?
    用户定义的完整性

含义:

  • 实体完整性和参照完整性:
    关系模型必须满足的完整性约束条件;
    称为关系的两个不变性,应该由关系系统自动支持;
  • 用户定义的完整性:
    应用领域需要遵循的约束条件,体现了具体领域中的语义约束 ;

🕘 1.2 实体完整性(Entity Integrity)

  • 若属性A是基本关系R的主属性,则属性A具有唯一性且不能取空值
  • 例:学生(学号,姓名,性别,专业号,年龄,班长), 其中:
    学号:唯一;不能取空值

🕤 1.2.1 实体完整性规则的说明

  1. 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
  2. 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
  3. 关系模型中以主码作为唯一性标识。
  4. 主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性

🕘 1.3 参照完整性

🕤 1.3.1 关系间的引用

  • 在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。

在这里插入图片描述

  • 学生关系引用了专业关系的主码“专业号”
  • 学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业
  • 关系中有该专业的记录、

🕤 1.3.2 参照完整性规则的说明

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

  • 或者取空值(F的每个属性值均为空值)
  • 或者等于S中某个元组的主码值

在这里插入图片描述

例3:课程COURSE(课程号,课程名,先行课,学分)
“先行课”属性值可以取两类值:
(1)空值,表示该课程没有先行课
(2)非空值,该值必须是本关系表中确实存在的课程号

  • 外码不一定要与相应的主码同名

🕘 1.4 用户定义的完整性

  • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
  • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能

例:

  • 学生成绩需取值[0,100]或[0,150]
  • 姓名不能取空值
  • 未成年人的定义为不超过18岁
  • 人的身高不能超过3米

🕒 2. 关系操作

🕘 2.1 基本关系操作

  • 常用的关系操作
    • 查询:选择(select)、投影(project)、连接(join)、除(divide)、并(union)、交(intersection)、差(except)
    • 数据更新:插入、删除、修改
    • 查询是关系操作中最主要的部分
    • 选择、投影、并、差、笛卡尔基是5种基本操作
  • 关系操作的特点
    • 集合操作方式:操作的对象和结果都是集合,一次一集合的方式

🕘 2.2 数据操纵功能

🕤 2.2.1 数据查询(可分解为三种基本操作)

  1. 一个关系内属性的指定(列的选择);
  2. 一个关系内元组的指定(行的选择);
  3. 两个或多个关系的合并

数据执行的算法如下:
①. 如果查询来自一个关系R,则直接执行②;如果查询来自两个或者多个关系,则首先执行 3.(如果是多于两个的关系,可能要多次执行 3.),直至将两个或多个关系合并成一个关系R;
②. 从关系R中检索出满足条件 1. 2. 的数据。

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

🕤 2.2.2 数据插入

插入操作

🕤 2.2.3 数据删除

先选择后删除

🕤 2.2.4 数据修改

先删除后插入

🕘 2.3 关系数据库语言的分类

  • 关系代数语言
    用对关系的运算来表达查询要求;
    代表:ISBL;
  • 关系演算语言:用谓词来表达查询要求;
    • 元组关系演算语言
      谓词变元的基本对象是元组变量;
      代表:APLHA, QUEL;
    • 域关系演算语言
      谓词变元的基本对象是域变量;
      代表:QBE;
  • 具有关系代数和关系演算双重特点的语言;
    代表:SQL(Structured Query Language) ;

🕒 3. 关系代数

关系代数运算的三个要素
运算对象:关系
运算结果:关系
运 算 符:四类

  1. 集合运算符
    将关系看成元组的集合
    运算是从关系的“水平”方向即行的角度来进行
  2. 专门的关系运算符
    不仅涉及行而且涉及列
  3. 比较运算符
    辅助专门的关系运算符进行操作
  4. 逻辑运算符
    辅助专门的关系运算符进行操作

在这里插入图片描述

🕘 3.1 传统的集合运算

🕤 符号引入

  1. R , t ∈ R , t [ A i ] R,t∈R,t[A_i] R,t∈R,t[Ai​]
    设关系模式为 R ( A 1 , A 2 , … , A n ) R(A_1,A_2,…,A_n) R(A1​,A2​,…,An​)
    它的一个关系设为 R R R
    t ∈ R t∈R t∈R表示 t t t是 R R R的一个元组
    t [ A i ] t[A_i] t[Ai​]则表示元组t中相应于属性 A i A_i Ai​的一个分量

  2. A A A, t [ A ] t[A] t[A], A ˉ \bar{A} Aˉ
    若 A = { A i 1 , A i 2 , … , A i k } A=\left\{\begin{array}{llll}A_{i 1}, & A_{i 2}, & \ldots, & A_{i k}\end{array}\right\} A={Ai1​,​Ai2​,​…,​Aik​​}其中 A i 1 , A i 2 , . . . , A i k A_{i1} , A_{i2} , ... ,A_{ik} Ai1​,Ai2​,...,Aik​ 是 A 1 , A 2 , . . . , A n A_{1} , A_{2} , ... ,A_{n} A1​,A2​,...,An​中的一部分,则A称为属性列或属性组。
    A ˉ \bar{A} Aˉ则表示{ A 1 , A 2 , . . . , A n A_{1} , A_{2} , ... ,A_{n} A1​,A2​,...,An​}中去掉 A i 1 , A i 2 , . . . , A i k A_{i1} , A_{i2} , ... ,A_{ik} Ai1​,Ai2​,...,Aik​后剩余的属性组。
    t [ A ] = ( t [ A i 1 ] , t [ A i 2 ] , … , t [ A i k ] ) t[A]=\left(t\left[A_{i 1}\right], \quad t\left[A_{i 2}\right], \ldots, t\left[A_{i k}\right]\right) t[A]=(t[Ai1​],t[Ai2​],…,t[Aik​])表示元组 t t t在属性列 A A A上诸分量的集合。

  3. ⌢ \frown ⌢
    t r t s t_r t_s tr​ts​
    R为n目关系, S为m目关系。
    t r ∈ R , t s ∈ S t_{\mathrm{r}} \in R, t_{\mathrm{s}} \in S tr​∈R,ts​∈S,
    ⌢ \frown ⌢
    t r t s t_r t_s tr​ts​称为元组的连接或者连串。
    ⌢ \frown ⌢
    t r t s t_r t_s tr​ts​是一个 n+m 列的元组, 前 n 个分量为 R 中的
    一个 n 元组, 后 m 个分量为 S 中的一个 m 元组。

  4. 象集(images set) Z x Z_x Zx​
    给定一个关系 R ( X , Z ) R(X,Z) R(X,Z), X X X和 Z Z Z为属性组
    当 t [ X ] = x t[X]=x t[X]=x时,x在R中的象集为: Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_{\mathrm{x}}=\{t[Z] \mid t \in R, \quad t[X]=x\} Zx​={t[Z]∣t∈R,t[X]=x}
    它表示 R R R中属性组 X X X上值为 x x x的诸元组在 Z Z Z上分量的集合

例子:
R
x 1 Z 1 x 1 Z 2 x 1 Z 3 x 2 Z 2 x 2 Z 3 x 3 Z 1 x 3 Z 3 \begin{array}{|l|l|} \hline x_{1} & Z_{1} \\ \hline x_{1} & Z_{2} \\ \hline x_{1} & Z_{3} \\ \hline x_{2} & Z_{2} \\ \hline x_{2} & Z_{3} \\ \hline x_{3} & Z_{1} \\ \hline x_{3} & Z_{3} \\ \hline \end{array} x1​x1​x1​x2​x2​x3​x3​​Z1​Z2​Z3​Z2​Z3​Z1​Z3​​​

  • x 1 x_1 x1​在R中的象集
    z x 1 z_{x1} zx1​={Z1,Z2,Z3}
  • x 2 x_2 x2​在R中的象集
    z x 2 z_{x2} zx2​={Z2,Z3}
  • x 3 x_3 x3​在R中的象集
    z x 3 z_{x3} zx3​={Z1,Z3}

并交差运算有什么条件?任意两个集合都可以做这三类集合运算吗?

答: R R R和 S S S(相容的)

  • 具有相同的目 n n n(即两个关系都有 n n n个属性)
  • 相应的属性取自同一个域

假定给定的两个关系R和S,分别表示学生参加学校社团的轩辕棋社和体育选修课匹克球的学生信息,如图所示
在这里插入图片描述

🕤 3.1.1 并(Union)

仍为 n n n目关系,由属于 R R R或属于 S S S的元组组成
R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R \cup S = \{t \mid t \in R \vee t \in S\} R∪S={t∣t∈R∨t∈S}
其中 t t t为元组变量

🕤 3.1.2 差(difference)

仍为 n n n目关系,由属于 R R R而不属于 S S S的所有元组组成
R − S = { t ∣ t ∈ R ∧ t ∉ S } R-S=\{t \mid t \in R \wedge t \notin S\} R−S={t∣t∈R∧t∈/S}

🕤 3.1.3 交(intersection)

仍为 n n n目关系,由既属于 R R R又属于 S S S的元组组成
R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R \cap S=\{t \mid t \in R \wedge t \in S\} R∩S={t∣t∈R∧t∈S}
R ∩ S = R − ( R − S ) R \cap S=R-(R-S) R∩S=R−(R−S)

在这里插入图片描述

🕤 3.1.4 笛卡尔积(cartesian product)

严格地讲应该是广义的笛卡尔积(Extended Cartesian Product)
R: r目关系,k1个元组
S: s目关系,k2个元组
R×S

  • 列:(r+s)列元组的集合
    元组的前r列是关系R的一个元组
    后s列是关系S的一个元组
  • 行: k 1 × k 2 k_1×k_2 k1​×k2​个元组
  • ⌢ \hspace{1.6cm} \frown ⌢
    R × S = { t r t s ∣ t r ∈ R ∧ t s ∈ S } R \times S=\left\{t_{\mathrm{r}} t_{\mathrm{s}} \mid t_{\mathrm{r}} \in R \wedge t_{\mathrm{s}} \in S\right\} R×S={tr​ts​∣tr​∈R∧ts​∈S}

在这里插入图片描述

RXS的笛卡尔积是十二个元组的表
 姓名   系   性别   姓名   系   性别   俊杰   行政管理   男   沐宸   视觉传达   男   俊杰   行政管理   男   若汐   园林   女   俊杰   行政管理   男   育锐   网络工程   男   俊杰   行政管理   男   俊杰   行政管理   男   育锐   网络工程   男   沐宸   视觉传达   男   育锐   网络工程   男   若汐   园林   女   育锐   网络工程   男   育锐   网络工程   男   育锐   网络工程   男   俊杰   行政管理   男   子涵   英语   女   沐宸   视觉传达   男   子涵   英语   女   若汐   园林   女   子涵   英语   女   育锐   网络工程   男   子涵   英语   女   俊杰  行政管理  男  \begin{array}{|c|c|c|c|c|c|} \hline \text { 姓名 } & \text { 系 } & \text { 性别 } & \text { 姓名 } & \text { 系 } & \text { 性别 } \\ \hline \text { 俊杰 } & \text { 行政管理 } & \text { 男 } & \text { 沐宸 } & \text { 视觉传达 } & \text { 男 } \\ \hline \text { 俊杰 } & \text { 行政管理 } & \text { 男 } & \text { 若汐 } & \text { 园林 } & \text { 女 } \\ \hline \text { 俊杰 } & \text { 行政管理 } & \text { 男 } & \text { 育锐 } & \text { 网络工程 } & \text { 男 } \\ \hline \text { 俊杰 } & \text { 行政管理 } & \text { 男 } & \text { 俊杰 } & \text { 行政管理 } & \text { 男 } \\ \hline \text { 育锐 } & \text { 网络工程 } & \text { 男 } & \text { 沐宸 } & \text { 视觉传达 } & \text { 男 } \\ \hline \text { 育锐 } & \text { 网络工程 } & \text { 男 } & \text { 若汐 } & \text { 园林 } & \text { 女 } \\ \hline \text { 育锐 } & \text { 网络工程 } & \text { 男 } & \text { 育锐 } & \text { 网络工程 } & \text { 男 } \\ \hline \text { 育锐 } & \text { 网络工程 } & \text { 男 } & \text { 俊杰 } & \text { 行政管理 } & \text { 男 } \\ \hline \text { 子涵 } & \text { 英语 } & \text { 女 } & \text { 沐宸 } & \text { 视觉传达 } & \text { 男 } \\ \hline \text { 子涵 } & \text { 英语 } & \text { 女 } & \text { 若汐 } & \text { 园林 } & \text { 女 } \\ \hline \text { 子涵 } & \text { 英语 } & \text { 女 } & \text { 育锐 } & \text { 网络工程 } & \text { 男 } \\ \hline \text { 子涵 } & \text { 英语 } & \text { 女 } & \text { 俊杰 } & \mathrm{ 行政管理} & \text { 男 } \\ \hline \end{array}  姓名  俊杰  俊杰  俊杰  俊杰  育锐  育锐  育锐  育锐  子涵  子涵  子涵  子涵 ​ 系  行政管理  行政管理  行政管理  行政管理  网络工程  网络工程  网络工程  网络工程  英语  英语  英语  英语 ​ 性别  男  男  男  男  男  男  男  男  女  女  女  女 ​ 姓名  沐宸  若汐  育锐  俊杰  沐宸  若汐  育锐  俊杰  沐宸  若汐  育锐  俊杰 ​ 系  视觉传达  园林  网络工程  行政管理  视觉传达  园林  网络工程  行政管理  视觉传达  园林  网络工程 行政管理​ 性别  男  女  男  男  男  女  男  男  男  女  男  男 ​​

在这里插入图片描述

广义的笛卡尔积运算可用于两个关系的连接操作

🕘 3.2 专门的关系运算

假设有教学管理信息系统数据库,该数据库包括有学生关系Student、课程关系Course和选课关系SC。

STUDENT表
 Sno   Sname   Ssex   Sage   Smajor   Shometown  20160101  徐成波   男  20  计算机科学与技术   广东广州  20160102  黄晓君   女  18  计算机科学与技术   湖南衡阳  20160103  林宇珊   女  19  计算机科学与技术   河南新乡  20160104  张茜   女  18  计算机科学与技术   广东中山  20160201  黄晓君   男  21  软件工程   河北保定  20160202  陈金燕   女  19  软件工程   江苏徐州  20160203  张顺峰   男  22  软件工程   河南洛阳  20160204  洪铭勇   男  20  软件工程   河北邯郸  20160301  朱伟东   男  19  网络工程   山东青岛  20160302  叶剑峰   男  20  网络工程   陕西西安  20160303  林宇珊   女  21  网络工程   湖北襄阳  20160304  吴妍娴   女  20  网络工程   浙江诸暨  \begin{array}{c|c|c|c|c|c} \hline \text { Sno } & \text { Sname } & \text { Ssex } & \text { Sage } & \text { Smajor } & \text { Shometown } \\ \hline \mathbf{2 0 1 6 0 1 0 1} & \text { 徐成波 } & \text { 男 } & \mathbf{2 0} & \text { 计算机科学与技术 } & \text { 广东广州 } \\ \hline \mathbf{2 0 1 6 0 1 0 2} & \text { 黄晓君 } & \text { 女 } & \mathbf{1 8} & \text { 计算机科学与技术 } & \text { 湖南衡阳 } \\ \hline \mathbf{2 0 1 6 0 1 0 3} & \text { 林宇珊 } & \text { 女 } & \mathbf{1 9} & \text { 计算机科学与技术 } & \text { 河南新乡 } \\ \hline \mathbf{2 0 1 6 0 1 0 4} & \text { 张茜 } & \text { 女 } & \mathbf{1 8} & \text { 计算机科学与技术 } & \text { 广东中山 } \\ \hline \mathbf{2 0 1 6 0 2 0 1} & \text { 黄晓君 } & \text { 男 } & \mathbf{2 1} & \text { 软件工程 } & \text { 河北保定 } \\ \hline \mathbf{2 0 1 6 0 2 0 2} & \text { 陈金燕 } & \text { 女 } & \mathbf{1 9} & \text { 软件工程 } & \text { 江苏徐州 } \\ \hline \mathbf{2 0 1 6 0 2 0 3} & \text { 张顺峰 } & \text { 男 } & \mathbf{2 2} & \text { 软件工程 } & \text { 河南洛阳 } \\ \hline \mathbf{2 0 1 6 0 2 0 4} & \text { 洪铭勇 } & \text { 男 } & \mathbf{2 0} & \text { 软件工程 } & \text { 河北邯郸 } \\ \hline \mathbf{2 0 1 6 0 3 0 1} & \text { 朱伟东 } & \text { 男 } & \mathbf{1 9} & \text { 网络工程 } & \text { 山东青岛 } \\ \hline \mathbf{2 0 1 6 0 3 0 2} & \text { 叶剑峰 } & \text { 男 } & \mathbf{2 0} & \text { 网络工程 } & \text { 陕西西安 } \\ \hline \mathbf{2 0 1 6 0 3 0 3} & \text { 林宇珊 } & \text { 女 } & \mathbf{2 1} & \text { 网络工程 } & \text { 湖北襄阳 } \\ \hline \mathbf{2 0 1 6 0 3 0 4} & \text { 吴妍娴 } & \text { 女 } & \mathbf{2 0} & \text { 网络工程 } & \text { 浙江诸暨 } \\ \hline \end{array}  Sno 201601012016010220160103201601042016020120160202201602032016020420160301201603022016030320160304​ Sname  徐成波  黄晓君  林宇珊  张茜  黄晓君  陈金燕  张顺峰  洪铭勇  朱伟东  叶剑峰  林宇珊  吴妍娴 ​ Ssex  男  女  女  女  男  女  男  男  男  男  女  女 ​ Sage 201819182119222019202120​ Smajor  计算机科学与技术  计算机科学与技术  计算机科学与技术  计算机科学与技术  软件工程  软件工程  软件工程  软件工程  网络工程  网络工程  网络工程  网络工程 ​ Shometown  广东广州  湖南衡阳  河南新乡  广东中山  河北保定  江苏徐州  河南洛阳  河北邯郸  山东青岛  陕西西安  湖北襄阳  浙江诸暨 ​​

COURSE表
 Cno   Cname   Cpno   Ccredit  1001  高等数学  9.0 1002  C语言程序设计  3.5 1003  数据结构  1002 4.0 1004  操作系统  1003 4.0 1005  数据库原理及应用  1003 3.5 1006  信息管理系统  1005 3.0 1007  面向对象与程序设计  1002 3.5 1008  数据挖掘  1006 3.0 \begin{array}{c|l|c|c} \hline \text { Cno } & {\text { Cname }} & \text { Cpno } & \text { Ccredit } \\ \hline 1001 & \text { 高等数学 } & & 9.0 \\ \hline 1002 & \text { C语言程序设计 } & & 3.5 \\ \hline 1003 & \text { 数据结构 } & 1002 & 4.0 \\ \hline 1004 & \text { 操作系统 } & 1003 & 4.0 \\ \hline 1005 & \text { 数据库原理及应用 } & 1003 & 3.5 \\ \hline 1006 & \text { 信息管理系统 } & 1005 & 3.0 \\ \hline 1007 & \text { 面向对象与程序设计 } & 1002 & 3.5 \\ \hline 1008 & \text { 数据挖掘 } & 1006 & 3.0 \\ \hline \end{array}  Cno 10011002100310041005100610071008​ Cname  高等数学  C语言程序设计  数据结构  操作系统  数据库原理及应用  信息管理系统  面向对象与程序设计  数据挖掘 ​ Cpno 100210031003100510021006​ Ccredit 9.03.54.04.03.53.03.53.0​​

SC表
 Sno   Cno   Grade  20160101 1001 92 20160101 1002 98 20160101 1003 88 20160101 1004 98 20160101 1005 76 20160101 1006 89 20160101 1007 86 20160101 1008 90 20160102 1005 80 20160201 1005 90 20160203 1003 89 20160204 1005 96 20160303 1001 88 20160303 1002 86 20160303 1003 68 20160303 1004 98 20160303 1005 84 20160303 1006 73 \begin{array}{c|c|c} \hline \text { Sno } & \text { Cno } & \text { Grade } \\ \hline 20160101 & 1001 & 92 \\ \hline 20160101 & 1002 & 98 \\ \hline 20160101 & 1003 & 88 \\ \hline 20160101 & 1004 & 98 \\ \hline 20160101 & 1005 & 76 \\ \hline 20160101 & 1006 & 89 \\ \hline 20160101 & 1007 & 86 \\ \hline 20160101 & 1008 & 90 \\ \hline 20160102 & 1005 & 80 \\ \hline 20160201 & 1005 & 90 \\ \hline 20160203 & 1003 & 89 \\ \hline 20160204 & 1005 & 96 \\ \hline 20160303 & 1001 & 88 \\ \hline 20160303 & 1002 & 86 \\ \hline 20160303 & 1003 & 68 \\ \hline 20160303 & 1004 & 98 \\ \hline 20160303 & 1005 & 84 \\ \hline 20160303 & 1006 & 73 \\ \hline \end{array}  Sno 201601012016010120160101201601012016010120160101201601012016010120160102201602012016020320160204201603032016030320160303201603032016030320160303​ Cno 100110021003100410051006100710081005100510031005100110021003100410051006​ Grade 929888987689869080908996888668988473​​

🕤 3.2.1 选择(selection)

  1. 选择又称为限制(Restriction)
  2. 选择运算符的含义
  • 在关系 R R R中选择满足给定条件的诸元组
  • σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ′ true ⁡ ′ } \sigma_{\mathrm{F}}(R)=\left\{t \mid t \in R \wedge F(t)={ }^{\prime} \operatorname{true}^{\prime}\right\} σF​(R)={t∣t∈R∧F(t)=′true′}
  • F:选择条件,是一个逻辑表达式
    基本形式为: X 1 θ Y 1 X_1θY_1 X1​θY1​
    θ表示比较运算符,它可以是>,≥,<,≤,=或 ≠。
  1. 选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运
    在这里插入图片描述

例题:
从student关系中查询女同学的情况,和年龄在19岁及其以下的软件工程专业的学生

  1. σ Ssex  =  “女”  (  Student  ) \sigma_{\text {Ssex } = \text { “女” }}(\text { Student }) σSsex = “女” ​( Student )或 σ 3  =  “女”  (  Student  ) \sigma_{\text {3 } = \text { “女” }}(\text { Student }) σ3 = “女” ​( Student )
     Sno   Sname   Ssex   Sage   Smajor   Shometown  20160102  黄晓君   女  18  计算机科学与技术   湖南衡阳  20160103  林宇珊   女  19  计算机科学与技术   河南新乡  20160104  张茜   女  18  计算机科学与技术   广东中山  20160202  陈金燕   女  19  软件工程   江苏徐州  20160303  林宇珊   女  21  网络工程   湖北襄阳  20160304  吴妍娴   女  20  网络工程   浙江诸暨  \begin{array}{|c|c|c|c|c|c|} \hline \text { Sno } & \text { Sname } & \text { Ssex } & \text { Sage } & \text { Smajor } & \text { Shometown } \\ \hline \mathbf{2 0 1 6 0 1 0 2} & \text { 黄晓君 } & \text { 女 } & \mathbf{1 8} & \text { 计算机科学与技术 } & \text { 湖南衡阳 } \\ \hline \mathbf{2 0 1 6 0 1 0 3} & \text { 林宇珊 } & \text { 女 } & \mathbf{1 9} & \text { 计算机科学与技术 } & \text { 河南新乡 } \\ \hline \mathbf{2 0 1 6 0 1 0 4} & \text { 张茜 } & \text { 女 } & \mathbf{1 8} & \text { 计算机科学与技术 } & \text { 广东中山 } \\ \hline \mathbf{2 0 1 6 0 2 0 2} & \text { 陈金燕 } & \text { 女 } & \mathbf{1 9} & \text { 软件工程 } & \text { 江苏徐州 } \\ \hline \mathbf{2 0 1 6 0 3 0 3} & \text { 林宇珊 } & \text { 女 } & \mathbf{2 1} & \text { 网络工程 } & \text { 湖北襄阳 } \\ \hline \mathbf{2 0 1 6 0 3 0 4} & \text { 吴妍娴 } & \text { 女 } & \mathbf{2 0} & \text { 网络工程 } & \text { 浙江诸暨 } \\ \hline \end{array}  Sno 201601022016010320160104201602022016030320160304​ Sname  黄晓君  林宇珊  张茜  陈金燕  林宇珊  吴妍娴 ​ Ssex  女  女  女  女  女  女 ​ Sage 181918192120​ Smajor  计算机科学与技术  计算机科学与技术  计算机科学与技术  软件工程  网络工程  网络工程 ​ Shometown  湖南衡阳  河南新乡  广东中山  江苏徐州  湖北襄阳  浙江诸暨 ​​
  2. σ Sage  < = 19 ∧  Smajor  =  ’软件工程’  (  Student  ) \sigma_{\text {Sage }<=19 \wedge \text { Smajor }=\text { '软件工程' }}(\text { Student }) σSage <=19∧ Smajor = ’软件工程’ ​( Student )
     Sno   Sname   Ssex   Sage   Smajor   Shometown  20160202  陈金燕   女  19  软件工程   江苏徐州  \begin{array}{|c|c|c|c|c|c|} \hline \text { Sno } & \text { Sname } & \text { Ssex } & \text { Sage } & \text { Smajor } & \text { Shometown } \\ \hline 20160202 & \text { 陈金燕 } & \text { 女 } & 19 & \text { 软件工程 } & \text { 江苏徐州 } \\ \hline \end{array}  Sno 20160202​ Sname  陈金燕 ​ Ssex  女 ​ Sage 19​ Smajor  软件工程 ​ Shometown  江苏徐州 ​​

🕤 3.2.2 投影(project)

  1. 含义:从R中选择出若干属性列组成新的关系
    π A ( R ) = { t [ A ] ∣ t ∈ R } \pi_{A}(R)=\{t[A] \mid t \in R\} πA​(R)={t[A]∣t∈R}
    A:R中的属性列

  2. 投影操作主要是从列的角度进行运算
    在这里插入图片描述

但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

例:查询全部课程的课程名和学分

Π Cname, Ccredit  (  Course) 或  Π 2 , 4 (  Course  ) \Pi_{\text {Cname, Ccredit }}\left(\text { Course) 或 } \mathrm{\Pi}_{2,4}(\text { Course })\right. ΠCname, Ccredit ​( Course) 或 Π2,4​( Course )

 Cname   Ccredit   高等数学  9.0  C语言程序设计  3.5  数据结构  4.0  操作系统  4.0  数据库原理及应用  3.5  信息管理系统  3.0  面向对象与程序设计  3.5  数据挖掘  3.0 \begin{array}{|c|c|} \hline \text {\text { Cname }} & \text { Ccredit } \\ \hline \text { 高等数学 } & 9.0 \\ \hline \text { C语言程序设计 } & 3.5 \\ \hline \text { 数据结构 } & 4.0 \\ \hline \text { 操作系统 } & 4.0 \\ \hline \text { 数据库原理及应用 } & 3.5 \\ \hline \text { 信息管理系统 } & 3.0 \\ \hline \text { 面向对象与程序设计 } & 3.5 \\ \hline \text { 数据挖掘 } & 3.0 \\ \hline \end{array}  Cname  高等数学  C语言程序设计  数据结构  操作系统  数据库原理及应用  信息管理系统  面向对象与程序设计  数据挖掘 ​ Ccredit 9.03.54.04.03.53.03.53.0​​

🕤 3.2.3 连接(join)

连接也称为θ连接,
从两个关系的笛卡尔积中选取属性间满足一定条件的元组(A和B:分别为R和S上度(列)数相等且可比的属性组,θ是比较运算符)
在这里插入图片描述

即:找出R×S中满足R中属性组A的值与S中的属性组B的值满足比较关系θ的那些元组。

  1. 等值连接: 当θ取“=”时为等值连接
    在这里插入图片描述
    等值连接的具体计算过程如下:
    ①计算R×S;
    ②找出R×S中满足R中属性组A的值与S中的属性组B的值相等的那些元组。
    在这里插入图片描述

  2. 自然连接
    在这里插入图片描述

两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉
自然连接的计算过程如下:
① 计算R×S;
② 设R和S的公共属性是B,则找出R×S中满足R中属性B的值与S中的属性B的值相等的那些元组;
③ 去掉重复的属性列,如可去掉S中的B列保留R中B列。
在这里插入图片描述

笛卡尔积:16个元组(姓名,住址,姓名,工作单位,工资)
连接:三个元组

  1. 一般的连接操作是从行的角度进行运算。
    在这里插入图片描述

自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

例题:关系R和关系S如下所示
在这里插入图片描述

在这里插入图片描述

等值连接和自然连接的比较

  • 自然连接一定是等值连接,但等值连接不一定是自然连接;
  • 等值连接要求有值相等的属性列,但不一定具有相同的属性名,而自然连接要求相等属性值的属性名必须相同;
  • 等值连接不做投影运算,而自然连接要把重复的属性列去掉。

例题:查询学生选修课程的信息,包括学生的学号、姓名、性别、课程名、学分和成绩。
答案: Π Sno, Sname, Ssex, Cname, Ccredi, Grade  ( Student ⋈ S C ⋈ C o u r s e ) \Pi_{\text {Sno, Sname, Ssex, Cname, Ccredi, Grade }}\left(\text {Student} \bowtie \mathbf{SC} \bowtie \mathbf{Course}\right) ΠSno, Sname, Ssex, Cname, Ccredi, Grade ​(Student⋈SC⋈Course)

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

🕞 3.2.3.1 (左/右)外连接

在这里插入图片描述
外连接

  • 在作自然连接时,如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(outer join)。
     姓名   住址   工作单位   工资   俊杰   北京朝阳   清华附小  11500  子涵   上海   新东方  9500  育锐   广州   仲恺农大  8500  沐宸   西安   NULL   NULL   奕辰   NULL   小米公司   15000  \begin{array}{|c|c|c|c|} \hline \text { 姓名 } & \text { 住址 } & \text { 工作单位 } & \text { 工资 } \\ \hline \text { 俊杰 } & \text { 北京朝阳 } & \text { 清华附小 } & 11500 \\ \text { 子涵 } & \text { 上海 } & \text { 新东方 } & 9500 \\ \text { 育锐 } & \text { 广州 } & \text { 仲恺农大 } & 8500 \\ \text { 沐宸 } & \text { 西安 } & \text { NULL } & \text { NULL } \\ \text { 奕辰 } & \text { NULL } & \text { 小米公司 } & \text { 15000 } \\ \hline \end{array}  姓名  俊杰  子涵  育锐  沐宸  奕辰 ​ 住址  北京朝阳  上海  广州  西安  NULL ​ 工作单位  清华附小  新东方  仲恺农大  NULL  小米公司 ​ 工资 1150095008500 NULL  15000 ​​

左外连接

  • 如果只把左边关系R中要舍弃的元组保留就叫做左外连接(left outer join或left join)
     姓名   住址   工作单位   工资   俊杰   北京朝阳   清华附小  11500  子涵   上海   新东方  9500  育锐   广州   仲恺农大  8500  沐宸   西安   NULL   NULL  \begin{array}{|c|c|c|c|} \hline \text { 姓名 } & \text { 住址 } & \text { 工作单位 } & \text { 工资 } \\ \hline \text { 俊杰 } & \text { 北京朝阳 } & \text { 清华附小 } & 11500 \\ \text { 子涵 } & \text { 上海 } & \text { 新东方 } & 9500 \\ \text { 育锐 } & \text { 广州 } & \text { 仲恺农大 } & 8500 \\ \text { 沐宸 } & \text { 西安 } & \text { NULL } & \text { NULL } \\ \hline \end{array}  姓名  俊杰  子涵  育锐  沐宸 ​ 住址  北京朝阳  上海  广州  西安 ​ 工作单位  清华附小  新东方  仲恺农大  NULL ​ 工资 1150095008500 NULL ​​

右外连接

  • 如果只把右边关系S中要舍弃的元组保留就叫做右外连接(right outer join或right join)。
     姓名   住址   工作单位   工资   俊杰   北京朝阳   清华附小  11500  子涵   上海   新东方  9500  育锐   广州   仲恺农大  8500  奕辰   NULL   小米公司   15000  \begin{array}{|c|c|c|c|} \hline \text { 姓名 } & \text { 住址 } & \text { 工作单位 } & \text { 工资 } \\ \hline \text { 俊杰 } & \text { 北京朝阳 } & \text { 清华附小 } & 11500 \\ \text { 子涵 } & \text { 上海 } & \text { 新东方 } & 9500 \\ \text { 育锐 } & \text { 广州 } & \text { 仲恺农大 } & 8500 \\ \text { 奕辰 } & \text { NULL } & \text { 小米公司 } & \text { 15000 } \\ \hline \end{array}  姓名  俊杰  子涵  育锐  奕辰 ​ 住址  北京朝阳  上海  广州  NULL ​ 工作单位  清华附小  新东方  仲恺农大  小米公司 ​ 工资 1150095008500 15000 ​​

🕤 3.2.4 除(division)

给定关系 R ( X , Y ) R (X,Y) R(X,Y)和 S ( Y , Z ) S (Y,Z) S(Y,Z),其中 X , Y , Z X,Y,Z X,Y,Z为属性组。
R R R中的 Y Y Y与 S S S中的 Y Y Y可以有不同的属性名,但必须出自相同的域集。
R R R与 S S S的除运算得到一个新的关系 P ( X ) P(X) P(X),为:
R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ Π Y ( S ) ⊆ Y x } R \div S=\left\{t_{\mathrm{r}}[X] \mid t_{\mathrm{r}} \in R \wedge \Pi_{\mathrm{Y}}(S) \subseteq Y_{x}\right\} R÷S={tr​[X]∣tr​∈R∧ΠY​(S)⊆Yx​}
Y x Y_x Yx​: x x x在 R R R中的象集, x = t r [ X ] x = t_r[X] x=tr​[X]
含义: P P P是R中满足下列条件的元组在 X 属性列上的投影:
元组在X上分量值x的象集Yx包含S在Y上投影的集合。
除操作是同时从行和列角度进行运算

在这里插入图片描述

例1:试找出修读了全部课程的学生的学号。
对这个问题可用除法解决,即S_C÷C
分析过程:对于关系S_C,Sno可以取三个值{S1,S2,S3},其中
S1的象集的含义是学生S1上的课程,即: C n o S 1 Cno_{S1} CnoS1​= { c1,c2 ,c3};
S2的象集 C n o S 2 Cno_{S2} CnoS2​= { c2 ,c3};S3的象集 C n o S 3 Cno_{S3} CnoS3​= { c2};
C在Cno上的投影代表所有课程,即: Π c n o Π_{cno} Πcno​ ( C )={ c1,c2,c3},
只有S1这位同学上了全部课程,即:只有S1的象集包含了C在Cno属性组上的投影,所以S_C÷C={S1}

在这里插入图片描述

思考:至少选修了1号和2号课程的学生的学号
即S_C÷K
其中K:在这里插入图片描述

例2:设关系R、S分别为下图的(a)和(b),R÷S的结果为图©
分析:在关系R中,A可以取三个值{a1,a2,a3}
a1的象集为 {(b1,5),(b2,6),(b3,12)};
a2的象集为 {(b1,5),(b3,12)}; a3的象集为 {(b3,12)}
S在(B,C)上的投影为{(b1,5),(b2,6),(b3,12)}
只有a1的象集包含了S在(B,C)属性组上的投影,所以R÷S ={a1}。

在这里插入图片描述

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

🕘 3.3 关系代数综合举例

假设有教学管理信息系统数据库,该数据库包括有学生关系Student、课程关系Course和选课关系SC。

STUDENT表
 Sno   Sname   Ssex   Sage   Smajor   Shometown  20160101  徐成波   男  20  计算机科学与技术   广东广州  20160102  黄晓君   女  18  计算机科学与技术   湖南衡阳  20160103  林宇珊   女  19  计算机科学与技术   河南新乡  20160104  张茜   女  18  计算机科学与技术   广东中山  20160201  黄晓君   男  21  软件工程   河北保定  20160202  陈金燕   女  19  软件工程   江苏徐州  20160203  张顺峰   男  22  软件工程   河南洛阳  20160204  洪铭勇   男  20  软件工程   河北邯郸  20160301  朱伟东   男  19  网络工程   山东青岛  20160302  叶剑峰   男  20  网络工程   陕西西安  20160303  林宇珊   女  21  网络工程   湖北襄阳  20160304  吴妍娴   女  20  网络工程   浙江诸暨  \begin{array}{c|c|c|c|c|c} \hline \text { Sno } & \text { Sname } & \text { Ssex } & \text { Sage } & \text { Smajor } & \text { Shometown } \\ \hline \mathbf{2 0 1 6 0 1 0 1} & \text { 徐成波 } & \text { 男 } & \mathbf{2 0} & \text { 计算机科学与技术 } & \text { 广东广州 } \\ \hline \mathbf{2 0 1 6 0 1 0 2} & \text { 黄晓君 } & \text { 女 } & \mathbf{1 8} & \text { 计算机科学与技术 } & \text { 湖南衡阳 } \\ \hline \mathbf{2 0 1 6 0 1 0 3} & \text { 林宇珊 } & \text { 女 } & \mathbf{1 9} & \text { 计算机科学与技术 } & \text { 河南新乡 } \\ \hline \mathbf{2 0 1 6 0 1 0 4} & \text { 张茜 } & \text { 女 } & \mathbf{1 8} & \text { 计算机科学与技术 } & \text { 广东中山 } \\ \hline \mathbf{2 0 1 6 0 2 0 1} & \text { 黄晓君 } & \text { 男 } & \mathbf{2 1} & \text { 软件工程 } & \text { 河北保定 } \\ \hline \mathbf{2 0 1 6 0 2 0 2} & \text { 陈金燕 } & \text { 女 } & \mathbf{1 9} & \text { 软件工程 } & \text { 江苏徐州 } \\ \hline \mathbf{2 0 1 6 0 2 0 3} & \text { 张顺峰 } & \text { 男 } & \mathbf{2 2} & \text { 软件工程 } & \text { 河南洛阳 } \\ \hline \mathbf{2 0 1 6 0 2 0 4} & \text { 洪铭勇 } & \text { 男 } & \mathbf{2 0} & \text { 软件工程 } & \text { 河北邯郸 } \\ \hline \mathbf{2 0 1 6 0 3 0 1} & \text { 朱伟东 } & \text { 男 } & \mathbf{1 9} & \text { 网络工程 } & \text { 山东青岛 } \\ \hline \mathbf{2 0 1 6 0 3 0 2} & \text { 叶剑峰 } & \text { 男 } & \mathbf{2 0} & \text { 网络工程 } & \text { 陕西西安 } \\ \hline \mathbf{2 0 1 6 0 3 0 3} & \text { 林宇珊 } & \text { 女 } & \mathbf{2 1} & \text { 网络工程 } & \text { 湖北襄阳 } \\ \hline \mathbf{2 0 1 6 0 3 0 4} & \text { 吴妍娴 } & \text { 女 } & \mathbf{2 0} & \text { 网络工程 } & \text { 浙江诸暨 } \\ \hline \end{array}  Sno 201601012016010220160103201601042016020120160202201602032016020420160301201603022016030320160304​ Sname  徐成波  黄晓君  林宇珊  张茜  黄晓君  陈金燕  张顺峰  洪铭勇  朱伟东  叶剑峰  林宇珊  吴妍娴 ​ Ssex  男  女  女  女  男  女  男  男  男  男  女  女 ​ Sage 201819182119222019202120​ Smajor  计算机科学与技术  计算机科学与技术  计算机科学与技术  计算机科学与技术  软件工程  软件工程  软件工程  软件工程  网络工程  网络工程  网络工程  网络工程 ​ Shometown  广东广州  湖南衡阳  河南新乡  广东中山  河北保定  江苏徐州  河南洛阳  河北邯郸  山东青岛  陕西西安  湖北襄阳  浙江诸暨 ​​

COURSE表
 Cno   Cname   Cpno   Ccredit  1001  高等数学  9.0 1002  C语言程序设计  3.5 1003  数据结构  1002 4.0 1004  操作系统  1003 4.0 1005  数据库原理及应用  1003 3.5 1006  信息管理系统  1005 3.0 1007  面向对象与程序设计  1002 3.5 1008  数据挖掘  1006 3.0 \begin{array}{c|l|c|c} \hline \text { Cno } & {\text { Cname }} & \text { Cpno } & \text { Ccredit } \\ \hline 1001 & \text { 高等数学 } & & 9.0 \\ \hline 1002 & \text { C语言程序设计 } & & 3.5 \\ \hline 1003 & \text { 数据结构 } & 1002 & 4.0 \\ \hline 1004 & \text { 操作系统 } & 1003 & 4.0 \\ \hline 1005 & \text { 数据库原理及应用 } & 1003 & 3.5 \\ \hline 1006 & \text { 信息管理系统 } & 1005 & 3.0 \\ \hline 1007 & \text { 面向对象与程序设计 } & 1002 & 3.5 \\ \hline 1008 & \text { 数据挖掘 } & 1006 & 3.0 \\ \hline \end{array}  Cno 10011002100310041005100610071008​ Cname  高等数学  C语言程序设计  数据结构  操作系统  数据库原理及应用  信息管理系统  面向对象与程序设计  数据挖掘 ​ Cpno 100210031003100510021006​ Ccredit 9.03.54.04.03.53.03.53.0​​

SC表
 Sno   Cno   Grade  20160101 1001 92 20160101 1002 98 20160101 1003 88 20160101 1004 98 20160101 1005 76 20160101 1006 89 20160101 1007 86 20160101 1008 90 20160102 1005 80 20160201 1005 90 20160203 1003 89 20160204 1005 96 20160303 1001 88 20160303 1002 86 20160303 1003 68 20160303 1004 98 20160303 1005 84 20160303 1006 73 \begin{array}{c|c|c} \hline \text { Sno } & \text { Cno } & \text { Grade } \\ \hline 20160101 & 1001 & 92 \\ \hline 20160101 & 1002 & 98 \\ \hline 20160101 & 1003 & 88 \\ \hline 20160101 & 1004 & 98 \\ \hline 20160101 & 1005 & 76 \\ \hline 20160101 & 1006 & 89 \\ \hline 20160101 & 1007 & 86 \\ \hline 20160101 & 1008 & 90 \\ \hline 20160102 & 1005 & 80 \\ \hline 20160201 & 1005 & 90 \\ \hline 20160203 & 1003 & 89 \\ \hline 20160204 & 1005 & 96 \\ \hline 20160303 & 1001 & 88 \\ \hline 20160303 & 1002 & 86 \\ \hline 20160303 & 1003 & 68 \\ \hline 20160303 & 1004 & 98 \\ \hline 20160303 & 1005 & 84 \\ \hline 20160303 & 1006 & 73 \\ \hline \end{array}  Sno 201601012016010120160101201601012016010120160101201601012016010120160102201602012016020320160204201603032016030320160303201603032016030320160303​ Cno 100110021003100410051006100710081005100510031005100110021003100410051006​ Grade 929888987689869080908996888668988473​​

例1:查询计算机科学与技术专业选修了2号课程的学生的姓名和成绩。
Π Sname, Grade  ( σ C n o = ′ 2 ′ ∧ S m a j o r = " 计算机科学与技术 " (  Student ⋈ S C ) ) \Pi_{\text {Sname, Grade }}\left(\sigma_{\mathbf{C n o}={ }^{\prime} 2^{\prime}} \wedge _{Smajor="计算机科学与技术"}(\text { Student} \bowtie \mathbf{SC})\right) ΠSname, Grade ​(σCno=′2′​∧Smajor="计算机科学与技术"​( Student⋈SC))

例2:查询选修了学分在3分及以上的课程的学生的学号、姓名及所选修课程的课程名和成绩。
Π Sno, Sname, Cname, Grade  ( σ C r e d i t > = 3 (  Student ⋈ S C ⋈ C o u r s e ) ) \Pi_{\text {Sno, Sname, Cname, Grade }}\left(\sigma_{\mathbf{Credit}>=3} (\text { Student} \bowtie \mathbf{SC} \bowtie \mathbf{Course})\right) ΠSno, Sname, Cname, Grade ​(σCredit>=3​( Student⋈SC⋈Course))

例3:查询选修了全部课程的学生的学号和姓名。
( Π Sno,Cno  ( S C ) ÷ Π Cno   (Course)  ) ⋈ Π Sno,Sname   (Student)  \left(\Pi_{\text {Sno,Cno }}(\mathbf{S C}) \div \Pi_{\text {Cno }} \text { (Course) }\right) \bowtie \Pi_{\text {Sno,Sname }} \text { (Student) } (ΠSno,Cno ​(SC)÷ΠCno ​ (Course) )⋈ΠSno,Sname ​ (Student) 

例4:查询选修了其直接先行课为1号课程的学生姓名
三种表示
Π Sname  ( σ C p n o = ′ 1 ′ ( Course  ⋈ S C ⋈ S t u d e n t ) ) Π Sname  ( σ Cpno=’1’  ( Course  ) ⋈ S C ⋈ Π Sno, name  (  Student  ) ) Π Sname  ( Π Sno  ( σ Cpno=’1’  (  Course  ) ⋈ S C ) ⋈ Π Sno, Sname  (  Student  ) ) \begin{array}{l} \Pi_{\text {Sname }}\left(\sigma_{\mathrm{Cpno='1' }}(\text {Course } \bowtie \mathrm{SC} \bowtie \mathrm{Student})\right)\\ \Pi_{\text {Sname }}\left(\sigma_{\text {Cpno='1' }}(\text {Course }) \bowtie S C \bowtie \Pi_{\text {Sno, name }}(\text { Student })\right)\\ \Pi_{\text {Sname }}\left(\Pi_{\text {Sno }}\left(\sigma_{\text {Cpno='1' }}(\text { Course }) \bowtie S C\right) \bowtie \Pi_{\text {Sno, Sname }}(\text { Student })\right) \end{array} ΠSname ​(σCpno=′1′​(Course ⋈SC⋈Student))ΠSname ​(σCpno=’1’ ​(Course )⋈SC⋈ΠSno, name ​( Student ))ΠSname ​(ΠSno ​(σCpno=’1’ ​( Course )⋈SC)⋈ΠSno, Sname ​( Student ))​

🕘 3.4 关系代数小结

  • 关系代数运算

    • 关系代数运算
      并、差、交、笛卡尔积、投影、选择、连接、除
    • 基本运算
      并、差、笛卡尔积、投影、选择
    • 交、连接、除
      可以用5种基本运算来表达
  • 关系代数表达式
    关系代数运算经有限次复合后形成的式子

  • 典型关系代数语言
    ISBL(Information System Base Language)
    由IBM United Kingdom研究中心研制
    用于PRTV(Peterlee Relational Test Vehicle)实验系统

🕒 4. 课后习题

  1. 【单选题】现有一个关系:借阅(书号、书名,库存数,读者号,借期,还期),假如同一本书允许一个读者多次借阅,但不能同时对一种书借多本。则该关系模式的码是( )。
    A、书号
    B、读者号
    C、书号+读者号
    D、书号+读者号+借期

  2. 【单选题】有关系 :R(A, B, C) 主码=A,S(D,A) 主码=D,外码=A,参照于R的属性A
    关系R和S的元组如下图所示:
    在这里插入图片描述
    指出关系S中违反关系完整性规则的元组是( )
    A、(1,2)
    B、 (2, null)
    C、(3,3)
    D、(4,1)

  3. 【判断题】一个关系中不可能出现两个完全相同的元组是由实体完整性规则确定的( )

  4. 【判断题】有两个关系R、S,都含有A属性,关系R中的属性A是主码,关系S中属性A是外码,那么关系R、S中属性A的域可以不同( )。

  5. 【单选题】设有关系R(A,B,C)和关系S(B,C,D),那么与R⋈S等价的关系代数表达式是( )
    A、 π 1 , 2 , 3 , 4 ( σ 2 = 1 ∧ 3 = 2 ( R × S )) π_{1,2,3,4}(σ_{2=1∧3=2}(R×S)) π1,2,3,4​(σ2=1∧3=2​(R×S))
    B、 π 1 , 2 , 3 , 6 ( σ 2 = 1 ∧ 3 = 2 ( R × S )) π_{1,2,3,6}(σ_{2=1∧3=2}(R×S)) π1,2,3,6​(σ2=1∧3=2​(R×S))
    C、 π 1 , 2 , 3 , 6 ( σ 2 = 4 ∧ 3 = 5 ( R × S )) π_{1,2,3,6}(σ_{2=4∧3=5}(R×S)) π1,2,3,6​(σ2=4∧3=5​(R×S))
    D、 π 1 , 2 , 3 , 4 ( σ 2 = 4 ∧ 3 = 5 ( R × S )) π_{1,2,3,4}(σ_{2=4∧3=5}(R×S)) π1,2,3,4​(σ2=4∧3=5​(R×S))

  6. 【单选题】设W=R⋈S,且W、R、S的属性个数分别为w、r和s,那么三者之间应满足( )
    A、w ≤ r+s
    B、w<r+s
    C、w ≥ r+s
    D、w>r+s

  7. 设关系R与关系S具有相同的目(或称度),且相对应的属性的值取自同一个域,则 R − ( R − S ) R-(R-S) R−(R−S)等于( )
    A、 R ∪ S R ∪ S R∪S
    B、 R ∩ S R ∩ S R∩S
    C、 R × S R × S R×S
    D、 R − S R - S R−S

  8. 【填空题】在关系代数的专门关系运算中,从表中取出满足条件的属性的操作称为______;从表中选出满足某种条件的元组的操作称为_______;将两个关系中具有共同属性值的元组连接到一起构成新表的操作称为________。

  9. 【单选题】在关系代数的传统集合运算中,假定有关系R和S,运算结果为W,如果W中的元组属于R,或者属于S,则W的运算的结果是
    A、笛卡尔积 
    B、并
    C、差
    D、交

  10. 【单选题】关系运算中花费时间可能最长的运算是( )
    A、投影
    B、选择
    C、笛卡尔积
    D、除

  11. 【单选题】等值连接和自然连接相比较,正确的是( )。
    A、等值连接和自然连接的结果完全相同
    B、等值连接的属性个数大于自然连接的属性个数
    C、等值连接的属性个数大于或等于自然连接的属性个数
    D、等值连接和自然连接的连接条件相同

  12. 【单选题】参加差运算的两个关系( ).
    A、属性个数可以不相同
    B、属性个数必须相同
    C、一个关系包含另一个关系的属性
    D、属性名必须相同

  13. 【单选题】有两个关系R和S,分别包含15个和10个元组,则在RUS、R-S、RnS中不可能出现的元组数目情况是( )。
    A、15,5,10
    B、18,7,7
    C、21,11,4
    D、25,15,0

  14. 【单选题】在n元关系R中,公式 σ 3 < “ 4 ” ( R ) σ_{3<“4”}(R) σ3<“4”​(R)表示( )。
    A、从R中选择值为3的分量(或属性)小于第4个分量值的元组组成的关系
    B、从R中选择第3个分量的值小于第4个分量值的元组组成的关系
    C、从R中选择第3个分量的值小于4的元组组成的关系
    D、从R中选择第3个分量小于4个元组组成的关系

  15. 【判断题】给定关系R(X,Y)和S(Y,Z),R和S作除运算时要求R中的属性Y和S中的属性Y必须具有相同的域()

  16. 【单选题】设关系 R ( A , B , C ) R(A,B,C) R(A,B,C)和 S ( B , C , D ) S(B,C,D) S(B,C,D),下列各关系代数表达式不成立的是()
    A、 R ÷ S R ÷ S R÷S
    B、 π B , C ( R ) ∪ π B , C ( S ) π_{B,C}(R)∪π_{B,C}(S) πB,C​(R)∪πB,C​(S)
    C、 R ∩ S R ∩ S R∩S
    D、 R × S R × S R×S

  17. 设有关系R、S和T,如图所示
    在这里插入图片描述

计算: ( 1 ) ∏ 3 , 2 (   S ) ( 2 ) σ B = ′ b ′ a n d   C = “ c ” ( R ) ( 3 ) R ⋈ S ( 4 ) Π А,В,C,D  ( R ⋈ S ) ( 5 ) R ÷ T (1) \prod_{3,2}(\mathrm{~S}) \\ (2) \sigma_{B='b' and \, C=“c”}(R) \\ (3) R \bowtie S \\ (4) \Pi_{\text {А,В,C,D }}(R \bowtie S) \\ (5) R \div T (1)∏3,2​( S)(2)σB=′b′andC=“c”​(R)(3)R⋈S(4)ΠА,В,C,D ​(R⋈S)(5)R÷T

  1. 设有三个关系
    S(SNO,SNAME,AGE,SEX,SDEPT)
    SC(SNO,CNO,GRADE)
    C(CNO,CNAME,TNAME)
    试用关系代数语言完成下列查询:
    (1) LIU老师所教授课程的课程号、课程名;
    (2) 检索年龄大于23岁的男学生的学号和姓名;
    (3) 检索学号为S3的学生所学课程的课程名与任课老师名;
    (4) 检索至少选修LIU老师所教授课程中一门课的女学生姓名;
    (5) 检索WANG同学不学的课程的课程号;
    (6) 检索全部学生都选修的课程的课程号和课程名;
    (7) 检索选修课程包含LIU老师所有教授课程的学生学号;

  2. 设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
    S(SNO,SNAME,STATUS,SCITY);
    P(PNO,PNAME,COLOR,WEIGHT);
    J(JNO,JNANE,JCITY);
    SPJ(SNO,PNO,JNO,QTY)。
    其中:供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(SCITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表J 由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(JCITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量组成(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。现有具体数据如图所示,a、b、c、d分别代表S表、P表、J表和SPJ表。
    在这里插入图片描述
    试用关系代数完成如下查询:
    (1)求供应工程J1 零件的供应商号码SNO;
    (2)求供应工程J1 零件P1的供应商号码SNO;
    (3)求供应工程J1 零件为红色的供应商号码SNO;
    (4)求没有使用天津供应商生产的红色零件的工程号JNO;
    (5)求至少用了供应商S1所供应的全部零件的工程号JNO。


答案:1.D 2.C(解析:R中的A只有1、2,没有3,因此S中外码A找不到参照的对应) 3.√ 4.×(解析:根据关系的参照完整性,关系S中的属性A必须引用关系R中的属性A,如果它们的域不同,则可能不存在引用情况。)5.C(解析:标号,R.A(1)、R.B(2)、R.C(3)、S.B(4)、S.C(5)、S.D(6),显然自然连接就是R.B(2)=S.B(4);R.C(3)=S.C(5),所以我们只要投影1、2、3、6或者1、4、5、6即可) 6.B(解析:要去掉重复的属性列) 7.B(解析:画图) 8.投影、选择、连接 9.B 10.C 11.B 12.B(解析:参加差运算的两个关系要求是相容关系,即两个关系属性个数相同,相应的属性值域相同。) 13.B(解析:答案A的情形:若RnS为10个元组,那么RUS为15个元组、R-S为5个元组是正确的;答案B的情形:若RnS为7个元组,那么RUS应为18个元组、R-S应为8个元组;答案C的情形:若RnS为4个元组,那么RUS为21个元组、R-S为11个元组是正确的;答案D的情形:若RnS为0个元组,那么RUS为25个元组、R-S为15个元组是正确的。)14.C(解析:条件表达式3<"4",3表示R的第3个属性,"4"表示值。)15.√ 16.C(解析:有相同属性列,A对;参加并交差运算的两个关系要求是相容关系,即两个关系属性个数相同,相应的属性值域相同,B对;D显然对;而C不满足相容关系的条件,值域不同,错误)

17.答:
(1)
E D c a e a e d e c d c \begin{array}{c|c} \hline E & D \\ \hline c & a \\ \hline e & a \\ \hline e & d \\ \hline e & c \\ \hline d & c \\ \hline \end{array} Eceeed​Daadcc​​
(2)
A B C a b c b b c \begin{array}{c|c|c} \hline A & B & C \\ \hline a & b & c \\ \hline b & b & c \\ \hline \end{array} Aab​Bbb​Ccc​​
(3)
A B C D E b b c a c b d e a c d a c a e d b e a e d a c c e d b e c e c a b d e e a d c d e b d c d \begin{array}{c|c|c|c|c} \hline A & B & C & D & E \\ \hline \mathrm{b} & \mathrm{b} & \mathrm{c} & \mathrm{a} & \mathrm{c} \\ \hline \mathrm{b} & \mathrm{d} & \mathrm{e} & \mathrm{a} & \mathrm{c} \\ \hline \mathrm{d} & \mathrm{a} & \mathrm{c} & \mathrm{a} & \mathrm{e} \\ \hline \mathrm{d} & \mathrm{b} & \mathrm{e} & \mathrm{a} & \mathrm{e} \\ \hline \mathrm{d} & \mathrm{a} & \mathrm{c} & \mathrm{c} & \mathrm{e} \\ \hline \mathrm{d} & \mathrm{b} & \mathrm{e} & \mathrm{c} & \mathrm{e} \\ \hline \mathrm{c} & \mathrm{a} & \mathrm{b} & \mathrm{d} & \mathrm{e} \\ \hline \mathrm{e} & \mathrm{a} & \mathrm{d} & \mathrm{c} & \mathrm{d} \\ \hline \mathrm{e} & \mathrm{b} & \mathrm{d} & \mathrm{c} & \mathrm{d} \\ \hline \end{array} Abbddddcee​Bbdababaab​Ccececebdd​Daaaaccdcc​Ecceeeeedd​​

(4)
A B C D b b c a b d e a d a c a d b e a d a c c d b e c c a b d e a d c e b d c \begin{array}{c|c|c|c} \hline A & B & C & D \\ \hline \mathrm{b} & \mathrm{b} & \mathrm{c} & \mathrm{a} \\ \hline \mathrm{b} & \mathrm{d} & \mathrm{e} & \mathrm{a} \\ \hline \mathrm{d} & \mathrm{a} & \mathrm{c} & \mathrm{a} \\ \hline \mathrm{d} & \mathrm{b} & \mathrm{e} & \mathrm{a} \\ \hline \mathrm{d} & \mathrm{a} & \mathrm{c} & \mathrm{c} \\ \hline \mathrm{d} & \mathrm{b} & \mathrm{e} & \mathrm{c} \\ \hline \mathrm{c} & \mathrm{a} & \mathrm{b} & \mathrm{d} \\ \hline \mathrm{e} & \mathrm{a} & \mathrm{d} & \mathrm{c} \\ \hline \mathrm{e} & \mathrm{b} & \mathrm{d} & \mathrm{c} \\ \hline \end{array} Abbddddcee​Bbdababaab​Ccececebdd​Daaaaccdcc​​

(5)
在关系R中,A可能的取值为{a,b,c,d,e}
a的像集为{(b,c),(d,e)}
b的像集为{(b,c),(d,e)}
c的像集为{(a,b)}
d的像集为{(a,c),(b,e)}
e的像集为{(a,d),(b,d)}
T在(B,C)上的投影为{(b,c),(d,e)}
只有a,b的像集包含了T在(B,C)属性组上的投影,所以R÷T={a,b}。

18.答:
(1) Π CNO, CNAME  ( σ TNAME = ′ LIU ′ ( C ) ) \Pi_{\text {CNO, CNAME }}\left(\sigma_{\text{TNAME}={ }^{\prime} \text {LIU}^{\prime}} (\text{C})\right) ΠCNO, CNAME ​(σTNAME=′LIU′​(C))
(2) Π SNO, SNAME  ( σ AGE > 23 ∧ SEX=’男’ ( S ) ) \Pi_{\text {SNO, SNAME }}\left(\sigma_{\text{AGE}>23}\wedge _{\text{SEX='男'}} (\text{S})\right) ΠSNO, SNAME ​(σAGE>23​∧SEX=’男’​(S))
(3) Π CNAME, TNAME  ( σ SNO = ′ S3 ′ ( SC ⋈ C ) ) \Pi_{\text {CNAME, TNAME }}\left(\sigma_{\text{SNO}={ }^{\prime} \text {S3}^{\prime}} (\text {SC} \bowtie \text{C})\right) ΠCNAME, TNAME ​(σSNO=′S3′​(SC⋈C))
或
Π CNAME, TNAME  ( σ SNO = ′ S3 ′ (SC) ⋈ C ) \Pi_{\text {CNAME, TNAME }}\left(\sigma_{\text{SNO}={ }^{\prime} \text {S3}^{\prime}} \text {(SC)} \bowtie \text{C}\right) ΠCNAME, TNAME ​(σSNO=′S3′​(SC)⋈C)
或
Π CNAME, TNAME  ( σ SNO = ′ S3 ′ ∧ SC.CNO=C.CNO ( SC × C ) ) \Pi_{\text {CNAME, TNAME }}\left(\sigma_{\text{SNO}={ }^{\prime} \text {S3}^{\prime}}\wedge _\text{SC.CNO=C.CNO}(\text {SC} \times \text{C})\right) ΠCNAME, TNAME ​(σSNO=′S3′​∧SC.CNO=C.CNO​(SC×C))
(4) Π SNAME ( σ SEX = ′ 女 ′ ∧ TNAME=’LIU’ ( S ⋈ SC ⋈ C ) ) \Pi_{\text {SNAME}}\left(\sigma_{\text{SEX}={ }^{\prime} \text {女}^{\prime}} \wedge _\text{TNAME='LIU'}(\text {S} \bowtie \text {SC} \bowtie \text{C})\right) ΠSNAME​(σSEX=′女′​∧TNAME=’LIU’​(S⋈SC⋈C))
或
Π SNAME ( σ SEX = ′ 女 ′ (S) ⋈ SC ⋈ σ TNAME=’LIU’ ( C ) ) \Pi_{\text {SNAME}}\left(\sigma_{\text{SEX}={ }^{\prime} \text {女}^{\prime}} \text {(S)} \bowtie \text {SC} \bowtie \sigma_\text{TNAME='LIU'}( \text{C})\right) ΠSNAME​(σSEX=′女′​(S)⋈SC⋈σTNAME=’LIU’​(C))
(5) Π CNO (C) − Π CNO ( σ SNAME = ′ WANG ′ ( S ⋈ SC ) ) \Pi_{\text {CNO}} \text {(C)} - \Pi_\text {CNO} \left(\sigma_{\text{SNAME}={ }^{\prime} \text {WANG}^{\prime}} (\text {S} \bowtie \text{SC})\right) ΠCNO​(C)−ΠCNO​(σSNAME=′WANG′​(S⋈SC))
或
Π CNO (C) − Π CNO ( σ SNAME = ′ WANG ′ (S) ⋈ SC ) ) \Pi_{\text {CNO}} \text {(C)} - \Pi_\text {CNO} \left(\sigma_{\text{SNAME}={ }^{\prime} \text {WANG}^{\prime}} \text {(S)} \bowtie \text{SC})\right) ΠCNO​(C)−ΠCNO​(σSNAME=′WANG′​(S)⋈SC))
或
Π CNO (C) − Π CNO ( σ SNAME = ′ WANG ′ ∧ S.SNO=SC.SNO ( S × SC ) ) \Pi_{\text {CNO}} \text {(C)} - \Pi_\text {CNO} \left(\sigma_{\text{SNAME}={ }^{\prime} \text {WANG}^{\prime}}\wedge _\text{S.SNO=SC.SNO}(\text {S} \times \text{SC})\right) ΠCNO​(C)−ΠCNO​(σSNAME=′WANG′​∧S.SNO=SC.SNO​(S×SC))
(6) Π CNO, CNAME  ( C ⋈ ( Π CNO, SNO  ( SC ) ÷ Π SNO ( S ) ) ) \Pi_{\text {CNO, CNAME }}\left(\text{C} \bowtie (\Pi_{\text {CNO, SNO }}(\text{SC} ) \div \Pi_{\text{SNO}}(\text{S})\right)) ΠCNO, CNAME ​(C⋈(ΠCNO, SNO ​(SC)÷ΠSNO​(S)))
或
Π CNO, SNO  ( SC ) ÷ Π SNO ( S ) ⋈ Π CNO, CNAME  ( C ) \Pi_{\text {CNO, SNO }}(\text{SC} ) \div \Pi_{\text{SNO}}(\text{S}) \bowtie\Pi_{\text {CNO, CNAME }}\left(\text{C}\right) ΠCNO, SNO ​(SC)÷ΠSNO​(S)⋈ΠCNO, CNAME ​(C)
说明:涉及到全部值时,应用除法,“除数”是全部量。
(7)
Π SNO, CNO  ( SC ) ÷ Π CNO ( σ TNAME=’LIU’ ( C ) ) \Pi_{\text {SNO, CNO }}(\text{SC} ) \div \Pi_{\text{CNO}} (\sigma_\text{TNAME='LIU'}(\text{C})) ΠSNO, CNO ​(SC)÷ΠCNO​(σTNAME=’LIU’​(C))

19.答:
(1) Π SNO ( σ JNO = ′ J1 ′ ( SPJ ) ) \Pi_{\text {SNO}}\left(\sigma_{\text{JNO}={ }^{\prime} \text {J1}^{\prime}} (\text{SPJ})\right) ΠSNO​(σJNO=′J1′​(SPJ))
(2) Π SNO ( σ JNO = ′ J1 ′ ∧ PNO=’P1’ ( SPJ ) ) \Pi_{\text {SNO}}(\sigma_{\text{JNO}={ }^{\prime} \text {J1}^{\prime}}\wedge _{\text{PNO='P1'}} (\text{SPJ})) ΠSNO​(σJNO=′J1′​∧PNO=’P1’​(SPJ))
(3) Π SNO ( σ JNO = ′ J1 ′ ∧ COLOR=’红’ ( P ⋈ SPJ ) ) \Pi_{\text {SNO}}(\sigma_{\text{JNO}={ }^{\prime} \text {J1}^{\prime}}\wedge _{\text{COLOR='红'}} (\text{P} \bowtie \text{SPJ})) ΠSNO​(σJNO=′J1′​∧COLOR=’红’​(P⋈SPJ))
(4) Π JNO (J) − Π JNO ( σ CITY = ′ 天津 ′ ∧ COLOR=’红’ ( S ⋈ SPJ ⋈ P ) ) \Pi_{\text {JNO}} \text {(J)} - \Pi_\text {JNO} \left(\sigma_{\text{CITY}={ }^{\prime} \text {天津}^{\prime}}\wedge _{\text{COLOR='红'}} (\text {S} \bowtie \text{SPJ}\bowtie \text{P})\right) ΠJNO​(J)−ΠJNO​(σCITY=′天津′​∧COLOR=’红’​(S⋈SPJ⋈P))
(5) Π JNO, PNO  ( SPJ ) ÷ Π PNO ( σ SNO=’S1’ ( SPJ ) ) \Pi_{\text {JNO, PNO }}(\text{SPJ} ) \div \Pi_{\text{PNO}} (\sigma_\text{SNO='S1'}(\text{SPJ})) ΠJNO, PNO ​(SPJ)÷ΠPNO​(σSNO=’S1’​(SPJ))


OK,以上就是本期知识点“关系操作、关系完整性、关系代数”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

4.3 MySQL的关系代数全解,一篇文章给你讲透(关系代数的基本操作五种、交,自然连接、实例操作9个) 外连接操作用于包括左关系、右关系或两个关系中的所有元组,即使它们在另一个关系中没有匹配的元组。:自然连接操作用于基于两个关系中有相同名称的属性,将这些属性的值相等的元组连接起来。:θ连接操作用于基于两个关系中满足特定条件的属性,将这些属性满足条件的元组连接起来。关系代数的组合操作是在基本操作的基础上进行的,它们可以结合使用来实现更复杂的查询。表,即使某些学生没有对应的成绩记录,也列出所有学生的名字和他们的课程ID及成绩。:从选修数学的学生中去掉也选修了物理的学生,找出只选修了数学的学生。 阅读详情

相关推荐

数据库关系操作与完整性,关系代数运算学习攻略

关于数据库关系操作,关系完整性,以及关系代数的综合运用的学习攻略

关系数据模型的三大完整性约束

数据完整性         要想了解这三类完整性约束,先要了解什么是数据完整性。         数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。数据完整性因此而提出。      &

qq_44290077的博客 2万+

Boost电路双闭环控制MATLAB仿真

通过电流内环控制,我们可以改变目标平均电流基准值的大小来闭环改变占空比,再改变输出电压与电路电流,直到电路电流达到基准电流才达到稳态。但是我们的基准电流依旧是外部提供的,下边的电压外环控制就是电路自己计算基准电流。

Fourglsl的博客 5847

2.2 关系操作、关系完整性、关系代数

文章目录0.思维导图1.关系操作2.关系的完整性(1)关系的三类完整性约束(2) 实体完整性(Entity Integrity)(3)参照完整性(4)用户定义的完整性3.关系代数(1)关系代数运算符(2)传统的集合运算 0.思维导图 1.关系操作 2.关系的完整性 (1)关系的三类完整性约束 实体完整性和参照完整性: 关系模型必须满足的完整性约束条件; 称为关系的两个不变性,应该由关系系统自动支持; 用户定义的完整性: 应用领域需要遵循的约束条件,体现了具体领域中的语义约束 ; (2) 实体完整性(

m0_46640227的博客 764

【计算机三级-数据库技术】操作题大题(第1套)

从触发器的语法中可知,【1】处应该填写的是执行触发器的表,【2】处应该填写指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。使用FOR或AFTER选顶定义的触发器为后触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。实体的转换:在从ER图转换为关系模式时,一个实体转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的主键。

放纵小开爱的博客 1103

STC8单片机低功耗延时优化实践:从循环等待到定时唤醒

本文深入探讨了STC8单片机低功耗延时优化的核心方法,即利用掉电唤醒定时器(WKT)替代传统的循环等待,实现从“空转耗电”到“定时唤醒”的转变。通过实战代码演示了如何编写低功耗延时函数,将待机电流从mA级降至μA级,并分析了精度、唤醒时间等关键权衡点,为电池供电的物联网设备提供了有效的续航优化方案。

pea55的博客 326

数据库学习笔记06——关系操作

关系模型给出了关系操作的能力说明,但没有给出具体语法要求,不同的关系数据库管理系统可以定义和开发不同的语言来实现这些操作。,设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。设关系R和关系S具有相同的目n(即两个关系都具有n个属性),且相应的属性取自同一个域,t是元组变量,专门的关系运算包括选择、投影、连接、除运算等,为了便于叙述,引入下列记号。,在关系R中选择满足给定条件的诸元组,记作。,从R中选择出若干属性列组成新的关系,记作。

qq_45033269的博客 3140

汽车OTA 测试用例

汽车OTA 测试用例

天赐好车的博客 976

关系数据库——关系操作和关系完整性

用户自定义完整性指针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。某个属性必须取唯一值、某个非主属性也不能取空值的用户定义完整性可以涵盖实体完整性、域完整性、参照完整性等完整性类型。例如某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取值范围在0-100之间等。

z135733的博客 3285

超详细!Linux 服务器 6 大核心性能测试(附自动脚本 + 结果分析秘籍)---Linux 服务器性能测试文档

本文档旨在提供 Linux 服务器的 CPU、内存和磁盘性能测试方案,包括详细的测试大纲、操作步骤以及一键化测试脚本,帮助管理员快速评估服务器性能状况。通过以上测试方案,可以全面评估 Linux 服务器的 CPU、内存和磁盘性能,为系统优化、容量规划和问题排查提供重要参考依据。使用 sysbench 进行 CPU 基准测试。使用 sysbench 测试内存读写性能。使用 fio 工具进行更全面的磁盘测试。使用 dd 命令测试磁盘顺序读写性能。使用 dd 命令测试内存读写速度。记录磁盘 IO 性能。

jundao1997的专栏 381

YOLO系列专栏(六):YOLO26热力图可视化 | 解析模型推理逻辑,定位检测关键区域

YOLO26作为新一代目标检测模型,其核心优势是高效的特征提取和精准的目标定位,但模型内部的推理过程的“黑盒”特性,给我们的优化带来了很大困扰:❌ 检测精度低:不知道是模型没学到关键特征,还是特征提取不充分;❌ 出现误检/漏检:无法定位问题根源——是锚框不合适?还是特征图未捕捉到目标?❌ 模型优化盲目:调参、修改网络结构全靠“猜”,缺乏针对性;❌ 难以解释模型行为:实际项目中,需要说明模型“为什么检测到这个目标”,尤其是医疗、工业等对可解释性要求高的场景。而热力图可视化。

qq_36130719的博客 738

关系模型中关系的完整性约束【校订版】

数据库中的数据必须是正确的、一致的、完整的和可靠的,为了防止数据库中存在不符合语义规定的数据和防止因输入错误数据造成的无效操作,有必要实施数据的完整性约束。 关系数据库,关系模型中三类完整性约束: 1 实体完整性 2 参照完整性 3 用户定义的完整性 附、触发器

cnds123的专栏 4794

Python经典编程习题100例:第25例:求各个阶乘的和

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 求1+2!+3!+…+20!的和。 解题思路: > 调用math模块中的factorial函数 代码: import math sum=0 for i in range(1,21): sum+=math.factorial(i) print(sum) ..

优快云 精品推荐 2736

2.2 《数据库系统概论》之关系操作、关系完整性、关系代数

文章目录0.思维导图1.关系操作(1)基本关系操作(2)关系数据库语言的分类2.关系的完整性(1)关系的三类完整性约束(2) 实体完整性(Entity Integrity)(3)参照完整性❶ 关系间的引用❷ 外码(Foreign Key)❸ 参照完整性规则(4)用户定义的完整性3.关系代数(1)关系代数运算符(2)传统的集合运算① 并(Union)② 差(Difference)③ 交(Inters...

BitHachi 3万+

YOLO26改进105:全网首发--使用BiFPN改进特征金字塔网络

YOLOv6 v3.0在目标检测领域实现重大突破,通过改进网络架构和训练方案显著提升性能。该版本在COCO数据集上展现出优越表现:YOLOv6-N达到37.5% AP/1187 FPS,YOLOv6-S实现45.0% AP/484 FPS,均超越同类检测器。大模型YOLOv6-M/L分别达到50.0%/52.8% AP,L6版本更创下实时检测新纪录。关键技术包括RepVGGBlock、BiFusion等新型模块,通过多分支融合和高效重参数化设计提升性能。研究团队已验证各改进模块有效性,代码已开源。

AIcurator的博客 95

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数据库系统概论(四)关系操作,关系完整性与关系代数

之前我们学习了关系模型的基础内容,比如数据结构、数据模型这些概念,它们就像搭建数据库的 “积木”,帮我们打好了学习的基础。关系操作、关系完整性、关系代数。我的个人主页,欢迎来阅读我的其他文章我的数据库系统概论专栏关系操作是我们在处理关系数据库时常用的一些操作方式。想象一下,你有一个表格,里面记录了同学们的信息,比如姓名、年龄、班级等。关系操作就是用来对这些表格内容进行各种操作,比如查找、添加、删除或者修改信息。查找:比如你想找到班级是“三年级一班”的所有同学的信息。添加。

2402_83322742的博客 1376

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

关系代数(关系代数的五个基本操作)

五种基本关系代数运算是? 五种基本关系代数运算是并、差、投影、交、选择、投影。 1、并:设有两个关系R和S,它们具有相同的结构。R和S的并是由属于R或属于S的元组组成的集合,运算符为∪。记为T=R∪S。 2、差:R和S的差是由属于R但不属于S的元组组成的集合,运算符为- [1] 。记为T=R-S。 3、交:R和S...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

关系代数优化

数据库 – 关系代数优化(语法树优化) 关系代数优化是指通过对关系代数表达式的等价变换操作来提高数据库的查询效率。 关系代数有5大基本操作:包括并( Union,U ),差 (Difference , - ),笛卡尔积( X ),投影( project,∏),选择( select...

weixin_43887873的博客 5715

关系代数和关系完整性约束

关系数据库与关系代数,这部分知识最常见的考点有两个,一个是关系代数写查询语句,另一个是三种完整性约束。这里先做最简单的知识整理,具体的习题肯定要比这复杂需要进一步总结好用的套路。这个也很容易理解,比如用户规定这个关系表中年龄这一属性不能超过24岁否则无法输入等自定义的要求。

m0_51203566的博客 1339

关系模型与关系代数——数据库原理 总结2

包含数据库中关系模型和关系代数的知识点

Jules_wwy的博客 1024

数据库原理与应用(6)——关系的候选码、主码和外码、关系完整性、关系代数、元组关系的演算、域关系演算

一、关系的候选码 候选码(Candidate Key):能唯一标识关系中元组的一个属性或属性集 性质:唯一性,最小性 二、关系的主码和外码 主码(Primary Key):从多个候选码中选择一个作为查询、插入或删除元组的操作变量,被选用的候选码称为主关系码(主键,主码,关系键,关键字) 每个关系必定有且仅有一个主码,选定后不能重复! 相关概念 主属性(Prime Attribute):包含在主码...

Allure_07的博客 3202

笔记 ~ 第二章 - 2.2 关系操作、关系完整性、关系代数、关系演算

๐•ᴗ•๐ 1. 关系操作 2. 关系的完整性 3. 关系代数

ꕥ᭄我想吃掉你的胰脏的博客 2326

【数据库系统设计】关系数据库简介(关系模型、关系模式、关系完整性、关系代数)

关系数据库关系模型关系数据结构域关系关系模式关系的三类完整性实体元整性(Entity Integrity)参照完整性用户定义的完整性关系代数关系代数运算符传统的集合运算并(Union)差(Difference)交(Intersection)笛卡尔积专门的集合运算选择投影连接等值连接自然连接![在这里插入图片描述](https://img-blog.csdnimg.cn/20200308121704...

萌宅鹿的技术小屋 4182

关系代数

什么是关系代数1、概念 关系代数是一种抽象的查询语言,用对关系的运算来表达查询。 2、分类 关系代数可以分为传统的集合运算和专门的关系的关系运算两类。 集合运算符 含义 ∪ \cup 并 ∩ \cap 交 − - 差 × \times 笛卡儿积 关系运算符 含义 σ \sigma 选择 Π \Pi 投影 连接

学 以致用 1万+

第二章 关系代数

本章内容:关系数据结构及形式化定义、关系操作、关系的完整性、关系代数 本章主要考点:概念、关系的完整性、■■关系代数 关系数据库,关系的完整性,关系代数(70页第6题会考一个类似的) 关系模型的组成 关系模型由数据结构、关系操作集合和关系完整性约束三部分组成 域:域是一组具有相同数据类型的值的集合 笛卡尔积:是域上的一种集合运算 笛卡尔积可表示一张二维表,表中都每行对应一个元组,表中的每一列的值来自一个属性。 候选码:若关系中的某一属性组的值能唯一的...

m0_56696378的博客 3299

SQL 与关系代数

Table of Contents 前言 关系与表 关系代数的基本运算 投影 选择 并运算 集合差运算 笛卡尔积 更名运算 关系代数的附加运算 集合交运算 连接运算 自然连接 内连接 外连接 结语 前言 SQL 是基于关系代数的查询语言,假如学习过 SQL 和关系代数,你就会发现,在 SQL 的查询语句中你会发现很多关系代数的影子。 然而,虽然知道 SQL 和关系代数密切相关,但...

weixin_30449239的博客 2455
上一篇: 【Linux详解】云服务器搭建Linux环境
下一篇: 【现代密码学原理】——高级加密标准AES(学习笔记)
HinsCoder
博客等级 码龄5年 1万+粉丝 220原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值