数据库专门关系运算-除
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
R的元组有<张三>、<李四>、<王五>,S的元组有<语文>、<数学>;
那么RS中的元组<张三,语文>就意味着R的元组<张三>与S中的元组<语文>有关系;元组<张三,数学>意味着R的元组<张三>与S中的元组<数学>有关系;
这样,R中的<张三>与S中所有元组都有联系,所以它是RS÷S的结果之一,也是这个例子中唯一的结果(楼主可以自己分析<李四>和<王五>)。
赵四的象集为(教师和课程集合)Biblioteka Baidu{(t6,c6)}
S在(教师、课程)上的投影为{(t1,c2), (t2,c3), (t2,c1)}。
所以,R÷S = {张会}(就是说只有张会一个学生选择了关系S中的教师和课程集合)
所以RS÷S的结果是:
学生姓名
--------
张三
而RS÷S的意义是“选修了所有课程的学生”,楼主自己理解理解吧,其实很简单的。
至于楼主给出的例题,关系S中的属性D实际上是没用的(因为作为被除方的R关系中没有这个属性),那么S的属性只保留A和C,其元组有<a,c> <d,f> <b,d>;
为了方便把R的属性按B、A、C的顺序排列,其元组有<b,a,c> <a,b,d><d,c,e> <f,d,g>;
关系R:
学生名
--------
张三
李四
王五
关系S:
课程名
------
语文
数学
关系RS:
学生名课程名
--------------
张三语文
张三数学
李四语文
可以看出,关系R代表实体“学生”,关系S代表实体“课程”,关系RS代表学生和课程之间的联系“选课”。
RS÷S的意义就是“在R和S的联系RS中,找出与S中所有的元组有关系的R元组”。用例子说明:
首先讲讲运算的约束条件,在《数据库系统原理》一书中,假设RS÷S,那么一般情况下S的属性集是RS属性集的真子集。而楼主给出的原题不符合这个条件(关系R的属性集为{A,B,C},关系S的属性集为{A,C,D},实际上S中只有S-R={A,C}这些属性参与了运算),这种情况很少发生
要理解除法这个比较复杂的运算,得明白为什么需要它,也就是在什么场合下需要。就本人目前所学中,这种场合只有一个,就是在两个实体的联系关系中查找实体。算法的数学语言描述很令人费解,楼主看个例子就容易懂了。假设有这么三个关系R、S、RS:
<b,a,c>意味着<b>与<a,c>有联系,这样一个个分析下来,发现不存在同时与<a,c> <d,f> <b,d>都有联系的同一元组,所以运算结果为空
关系运算---除
关系运算---
一、为什么要引入除
除的引入其实是一个反问题的问题,如关系表 R1(学生,课程,老师) R2(课程,教师),如何查找出R1中选择了某课程的学生的姓名,则要用到除法。
二、运算方法
如果要得到学生的姓名,则要首先得到R1中关于每个学生的象集设为Y,然后用该象集除以R2,既得到学生的姓名
例:张会的象集为(教师和课程集合):{(t1,c2), (t2,c3), (t2,c1)}
李学的象集为(教师和课程集合):{(t3,c7), (t2,c3)}
王大的象集为(教师和课程集合):{(t4,c6)}
那么RS中的元组<张三,语文>就意味着R的元组<张三>与S中的元组<语文>有关系;元组<张三,数学>意味着R的元组<张三>与S中的元组<数学>有关系;
这样,R中的<张三>与S中所有元组都有联系,所以它是RS÷S的结果之一,也是这个例子中唯一的结果(楼主可以自己分析<李四>和<王五>)。
赵四的象集为(教师和课程集合)Biblioteka Baidu{(t6,c6)}
S在(教师、课程)上的投影为{(t1,c2), (t2,c3), (t2,c1)}。
所以,R÷S = {张会}(就是说只有张会一个学生选择了关系S中的教师和课程集合)
所以RS÷S的结果是:
学生姓名
--------
张三
而RS÷S的意义是“选修了所有课程的学生”,楼主自己理解理解吧,其实很简单的。
至于楼主给出的例题,关系S中的属性D实际上是没用的(因为作为被除方的R关系中没有这个属性),那么S的属性只保留A和C,其元组有<a,c> <d,f> <b,d>;
为了方便把R的属性按B、A、C的顺序排列,其元组有<b,a,c> <a,b,d><d,c,e> <f,d,g>;
关系R:
学生名
--------
张三
李四
王五
关系S:
课程名
------
语文
数学
关系RS:
学生名课程名
--------------
张三语文
张三数学
李四语文
可以看出,关系R代表实体“学生”,关系S代表实体“课程”,关系RS代表学生和课程之间的联系“选课”。
RS÷S的意义就是“在R和S的联系RS中,找出与S中所有的元组有关系的R元组”。用例子说明:
首先讲讲运算的约束条件,在《数据库系统原理》一书中,假设RS÷S,那么一般情况下S的属性集是RS属性集的真子集。而楼主给出的原题不符合这个条件(关系R的属性集为{A,B,C},关系S的属性集为{A,C,D},实际上S中只有S-R={A,C}这些属性参与了运算),这种情况很少发生
要理解除法这个比较复杂的运算,得明白为什么需要它,也就是在什么场合下需要。就本人目前所学中,这种场合只有一个,就是在两个实体的联系关系中查找实体。算法的数学语言描述很令人费解,楼主看个例子就容易懂了。假设有这么三个关系R、S、RS:
<b,a,c>意味着<b>与<a,c>有联系,这样一个个分析下来,发现不存在同时与<a,c> <d,f> <b,d>都有联系的同一元组,所以运算结果为空
关系运算---除
关系运算---
一、为什么要引入除
除的引入其实是一个反问题的问题,如关系表 R1(学生,课程,老师) R2(课程,教师),如何查找出R1中选择了某课程的学生的姓名,则要用到除法。
二、运算方法
如果要得到学生的姓名,则要首先得到R1中关于每个学生的象集设为Y,然后用该象集除以R2,既得到学生的姓名
例:张会的象集为(教师和课程集合):{(t1,c2), (t2,c3), (t2,c1)}
李学的象集为(教师和课程集合):{(t3,c7), (t2,c3)}
王大的象集为(教师和课程集合):{(t4,c6)}