关系代数表达式练习(针对难题)

简介: 关系代数表达式练习(针对难题)

image.png

检索至少选修了C2,C4两门课程的学生学号:



这里的下标可以这样理解,课程表C取了别名SC1,SC2,SC1的第一个元素(学生学号)和SC2的第一个元素 (学生学号)相等(1=4),且(SC1的第二个元素(课程号)=C2,SC2的第二个元素(课程号)=C4)


image.png

涉及减法相关:

检索不学C2课的学生姓名和年龄



最后并上S,是因为S中才有AGE属性


涉及除法相关:


检索学习全部课程的学生姓名



检索所学课程包含学生S3所学全部课程的学生学号



进阶:


image.png



检索供应零件给工程J1,且零件颜色为红色的供应商名称和地址



检索使用了零件编号为P3或P5零件的工程编号JNO


πJNo(σPNO='P3'VPNO='P5'(SPJ))


检索至少使用了编号为P3和P5零件的工程编号JNO


πз(σ3=82=p37=p5�3=8∧2=′�3′∧7=′�5′(SPJxSPJ))


检索不使用编号为P3零件的工程编号JNO和工程名称JNAME



或者

πJNO,JNAME((πJNO(J) - JNO(σPNO=’P3‘(SPJ)) ) J)


检索使用了全部零件的工程名称JNAME



检索使用零件包含编号为S1的供应商所供应的全部零件的工程编号JNO



💖💖在做题过程中我有一下感悟,可以跟大家分享一下💖💖


1.相同属性才能相减,例如:


● 检索不学C2课的学生姓名和年龄



●检索不使用编号为P3零件的工程编号JNO和工程名称JNAME


πJNO,JNAME((πJNO(J) - JNO(σPNO=’P3‘(SPJ)) )⋈

J)


2.什么时候要使用数字代替呢?


当两个相同的属性出现在要求中时:例如


●检索至少使用了编号为P3和P5零件的工程编号JNO


πз(σ3=82=p37=p5�3=8∧2=′�3′∧7=′�5′(SPJxSPJ))


● 检索至少选修了C2,C4两门课程的学生学号:



但是这两个都是∧

(并)的关系,如果是(或)的关系,就不需要使用数字了,例如:

检索使用了零件编号为P3或P5零件的工程编号JNO


πJNO(σ

PNO='P3'VPNO='P5'(SPJ))


注:同时注意并后面需要跟(SPJ×

×

SPJ),或后面只用(SPJ)


3.如果要求的属性和有联系的属性之间不相关,那么就先用要求的属性的表中有联系的属性,例如,下面的JNAME和全部零件没有关联,那么就要用JNO,通过SPJ,关联PNO:


●检索使用了全部零件的工程名称JNAME



4.在进行除法时,要求是什么属性(或者与该属性相关)就留下什么属性,例如


● 检索所学课程包含学生S3所学全部课程的学生学号



●检索使用了全部零件的工程名称JNAME



JNO,PNO/PNO=JNO


5.在含有“全部”字样的关系代数表达式中,包含单个属性的要用无关联的表,并且“全部”后面跟的属性为除数的属性,例如


 ●检索使用了全部零件的工程名称JNAME



其中检索PNO用的是P表,而不是SPJ表,并且除数的属性为零件编号PNO


● 检索学习全部课程的学生姓名



其中C#用的是C表

并且除数的属性为课程号C#


但是有关联其他表中属性的则例外:


   ●检索所学课程包含学生S3所学全部课程的学生学号



6.如果要求中存在多个表的属性,一定要加入关联表进行关联,例如:

   ● 检索供应零件给工程J1,且零件颜色为红色的供应商名称和地址



SPJ就是其中关联PNO和SNO的表


7.在有两个或者两个以上属性时,通常有两种写法:

1.第一种是先拉一个属性进行条件限制,再关联其他属性


2.直接通过条件判断,然后把两个表关联起来


   ●检索不使用编号为P3零件的工程编号JNO和工程名称JNAME



或者


πJNO,JNAME((πJNO(J) - JNO(σPNO=’P3‘(SPJ)) )⋈

J)


   ● 检索使用了编号为P3零件的工程编号和名称



其实做题的时候,想一下写数据库语句的时候是怎么做的,就比较容易相通了,各位今天也要努力学习呀!!(^o^)/(^o^)/


目录
相关文章
谓词逻辑之 语法规则
  谓词逻辑公式涉及两种事物: ⑴是我们谈及的对象,如a和p这样的个体,以及x和u这样的变量和函数符号。在谓词逻辑中,用来表示对象的表达式称为项(terms); ⑵是表示真值,即公式,例如Y(x,m(x))是公式。
1038 0
|
2月前
|
机器学习/深度学习 数据挖掘 数据处理
"揭秘数据处理新境界:基于维度的算术操作,如何颠覆你的数据操作思维?"
【8月更文挑战第19天】基于维度的算术操作革新了数据处理方式,尤其在面对多维数据时更为直观高效。例如,Python的NumPy库支持对多维数组执行如加法、乘法等操作,自动处理维度匹配,简化复杂计算。此方法不仅通用性强,且在科学计算、机器学习等领域应用广泛,如图像处理中的像素级运算。理解和掌握基于维度的操作对于数据科学家至关重要。
34 2
|
5月前
|
Java Python
条件运算符与条件表达式:编程中的高效决策工具
在编程中,条件运算符和条件表达式是两种强大的工具,它们允许程序根据特定的条件来执行不同的操作或返回不同的值。这些工具不仅提高了代码的可读性和可维护性,还使得程序能够更灵活地处理各种情况。本文将深入介绍条件运算符和条件表达式的概念,并通过示例代码展示它们在实际编程中的应用。
48 1
|
5月前
|
C++
关系表达式:编程中的比较利器
在编程中,关系表达式扮演着至关重要的角色。它们允许我们比较两个或多个值,并基于这些比较的结果来执行相应的操作。关系表达式通过返回布尔值(真或假)来告诉我们两个值之间的关系,从而帮助我们在程序中做出决策。
47 0
|
5月前
|
编译器 C语言 C++
C/C++运算符超详细讲解(系统性学习day5)
C/C++运算符超详细讲解(系统性学习day5)
离散数学-考纲版-02-谓词
离散数学-考纲版-02-谓词
|
5月前
|
算法
运算符的妙用以及部分机理解析
运算符的妙用以及部分机理解析
62 0
|
存储 SQL 分布式计算
Velox表达式计算原理调研
velox是Meta开源的高性能的C++计算引擎,本文主要来调研下其表达式计算的实现原理。
709 3
|
存储 C语言 索引
【C】操作符归纳+表达式运算原理
【C】操作符归纳+表达式运算原理
232 0
【C】操作符归纳+表达式运算原理