《数据库原理》课程中关系代数“除”运算教学的探讨
2014-07-16程晨
程晨
摘要:该文结合笔者多年的教学研究和实践对《数据库原理》课程中关系代数“除”运算的教学进行阐述和探讨,希望能够对该课程教学研究的发展有所帮助。
关键词:《数据库原理》课程教学;关系代数;“除”运算
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2014)14-3338-02
1 概述
《数据库原理》是计算机学科中一门重要的必修课程乃至核心课程。该课程的目标是使学生对数据库系统的基本概念、理论和方法有准确的理解,具有一定的数据库系统设计能力,并具备利用数据库管理系统进行应用开发的基本素质。
2 关系代数概述
关系代数是教材第二章“关系数据库”的核心内容之一。当前主流的数据模型是关系模型,而关系模型的数据操作语言,亦可称之为关系数据库语言,按照表达查询的方式可以分为两类:关系代数和关系演算。
关系代数:用对关系的运算来表达查询。
关系演算:用谓词来表达查询。
在实际教学中,关系代数是重点,而关系演算以学生自学为主。
关系代数可分为两类:
一类是传统的集合运算,包括并、交、差、广义笛卡尔积四种;
另一类是专门的关系运算,包括选择、投影、连接、除。其中关系“除”运算学生最难掌握。
3 关系“除”运算的概念
给定关系[R(X,Y)]和[S(Y,Z)],其中[X、Y、Z]是属性组。[R]中的[Y]和[S]中的[Y]可以有不同的属性名,但必须具有相同的域集。
[R]与[S]的除运算得到一个新的关系[P(X)],[P]是[R]中满足下列条件的元组在[X]属性列上的投影:元组在[X]上分量值[x]的象集[Yx]包含[S]在[Y]上投影的集合。记作[R÷S={tr[X]] [tr∈R∧πY(S)?Yx]}。
4 “除”运算的运算步骤
除运算在所有的关系代数运算中是最难的一种,学生学习起来普遍感到困难,教材上并未对如何进行除运算做过多的阐述。笔者在实际教学中给出了以下一种除运算的运算步骤,取得了较好的教学效果。
1) 找两个关系的公共属性组;
2) 求象集;
3) 求投影;
4) 找包含关系。
以下举一个实例来加以说明。
设关系R和S分别为图1和图2,求R[÷]S。
按照以上的步骤:
1) 找两个关系的公共属性组;
显然,公共属性组为(B,C),即Y=(B,C),所以X=A,Z=D。
2) 求象集;
具体来说,是求X在R中的象集。按照象集的概念,不难求出:
[a1]的象集为{([b1],[c2]),([b2],[c3]),([b2],[c1])}
[a2]的象集为{([b3],[c7]),([b2],[c3])}
[a3]的象集为{([b4],[c6])}
[a4]的象集为{([b6],[c6])}
3) 求投影;
具体来说,是求S在Y上的投影。按照投影的概念,不难求出:
S在(B,C)上的投影为{([b1],[c2]),([b2],[c3]),([b2],[c1])}
4) 找包含关系。
具体来说,是看(2)中的象集哪个包含了(3)中的投影。显然,只有[a1]的象集包含了(3)中的投影,所以R[÷]S={[a1]}。
5 构造“除”运算表达式的技巧
在讲授除运算时,不仅要求学生掌握除运算的概念和方法,还要求学生能够运用除运算来实现一些实际的查询,这就对学生提出了更高的要求。很多学生对于如何构造除运算表达式来实现特定的查询感到无所适从,教材上也只给出了相应的表达式,并未说明如何来构造。笔者自己总结了一种构造除运算表达式的方法,在实际的教学中取得了良好的效果。以下举一个实例加以说明。
查询选修了全部课程的学生的学号和姓名。
以上的查询基于以下的关系数据库模式:
学生(学号,姓名,性别,年龄,院系)
课程(课程号,课程名,先修课,学分)
选修(学号,课程号,成绩)
在查询的要求里凡是含有“全部”或者“至少”等词语的,都可以考虑用除运算来解决。但是否一定用到除运算,则还要考虑是否有确定的包含关系。上述查询里有明确的包含关系:设该学生所选修课程的课程号为集合1,全部课程的课程号为集合2,如果集合1包含了集合2,则就说明该学生选修了全部课程。
下面来说明如何构造除运算表达式。
1) 写下除运算的符号[÷];
2) 构造除运算后面的关系。上述被包含的集合2即为除运算后面的关系,将该集合写成关系的形式,因此表达式为[÷][π课程号(课程)];
3) 构造除运算前面的关系。先写出基本“骨架”,[π?,β(R)÷π课程号(课程)],其中[α]和[β][]为待定的属性组,R为待定的关系;
4) 确定(3)中的未知量[α],[β]和R。根据题意,显然R为选修关系;[α]为要查询的或者部分要查询的,题目中要查询的是学号和姓名,选修关系中没有姓名,故[α]即为学号;[β]为除运算后面的关系中包含的属性组,故[β]即为课程号,因此表达式为[π学号,课程号(选修)÷π课程号(课程)];
5) 看是否需要连接。显然(4)中求出的仅仅是学号,还需要和学生关系连接求出姓名,故最终的表达式为[π学号,课程号(选修)÷π课程号(课程)∞π学号,姓名(学生)]。
6 结束语
关系“除”运算是关系代数中最难的一种运算,笔者在教学时自己总结了一种求除运算结果的步骤以及一种构造除运算表达式来实现查询的方法和技巧,经过课堂教学证明,这些方法和技巧教学效果良好,希望能够对相关教学研究的发展有所帮助。
参考文献:
[1] 王珊,萨师煊. 数据库系统概论(第四版)[M]. 北京:高等教育出版社,2006.endprint
摘要:该文结合笔者多年的教学研究和实践对《数据库原理》课程中关系代数“除”运算的教学进行阐述和探讨,希望能够对该课程教学研究的发展有所帮助。
关键词:《数据库原理》课程教学;关系代数;“除”运算
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2014)14-3338-02
1 概述
《数据库原理》是计算机学科中一门重要的必修课程乃至核心课程。该课程的目标是使学生对数据库系统的基本概念、理论和方法有准确的理解,具有一定的数据库系统设计能力,并具备利用数据库管理系统进行应用开发的基本素质。
2 关系代数概述
关系代数是教材第二章“关系数据库”的核心内容之一。当前主流的数据模型是关系模型,而关系模型的数据操作语言,亦可称之为关系数据库语言,按照表达查询的方式可以分为两类:关系代数和关系演算。
关系代数:用对关系的运算来表达查询。
关系演算:用谓词来表达查询。
在实际教学中,关系代数是重点,而关系演算以学生自学为主。
关系代数可分为两类:
一类是传统的集合运算,包括并、交、差、广义笛卡尔积四种;
另一类是专门的关系运算,包括选择、投影、连接、除。其中关系“除”运算学生最难掌握。
3 关系“除”运算的概念
给定关系[R(X,Y)]和[S(Y,Z)],其中[X、Y、Z]是属性组。[R]中的[Y]和[S]中的[Y]可以有不同的属性名,但必须具有相同的域集。
[R]与[S]的除运算得到一个新的关系[P(X)],[P]是[R]中满足下列条件的元组在[X]属性列上的投影:元组在[X]上分量值[x]的象集[Yx]包含[S]在[Y]上投影的集合。记作[R÷S={tr[X]] [tr∈R∧πY(S)?Yx]}。
4 “除”运算的运算步骤
除运算在所有的关系代数运算中是最难的一种,学生学习起来普遍感到困难,教材上并未对如何进行除运算做过多的阐述。笔者在实际教学中给出了以下一种除运算的运算步骤,取得了较好的教学效果。
1) 找两个关系的公共属性组;
2) 求象集;
3) 求投影;
4) 找包含关系。
以下举一个实例来加以说明。
设关系R和S分别为图1和图2,求R[÷]S。
按照以上的步骤:
1) 找两个关系的公共属性组;
显然,公共属性组为(B,C),即Y=(B,C),所以X=A,Z=D。
2) 求象集;
具体来说,是求X在R中的象集。按照象集的概念,不难求出:
[a1]的象集为{([b1],[c2]),([b2],[c3]),([b2],[c1])}
[a2]的象集为{([b3],[c7]),([b2],[c3])}
[a3]的象集为{([b4],[c6])}
[a4]的象集为{([b6],[c6])}
3) 求投影;
具体来说,是求S在Y上的投影。按照投影的概念,不难求出:
S在(B,C)上的投影为{([b1],[c2]),([b2],[c3]),([b2],[c1])}
4) 找包含关系。
具体来说,是看(2)中的象集哪个包含了(3)中的投影。显然,只有[a1]的象集包含了(3)中的投影,所以R[÷]S={[a1]}。
5 构造“除”运算表达式的技巧
在讲授除运算时,不仅要求学生掌握除运算的概念和方法,还要求学生能够运用除运算来实现一些实际的查询,这就对学生提出了更高的要求。很多学生对于如何构造除运算表达式来实现特定的查询感到无所适从,教材上也只给出了相应的表达式,并未说明如何来构造。笔者自己总结了一种构造除运算表达式的方法,在实际的教学中取得了良好的效果。以下举一个实例加以说明。
查询选修了全部课程的学生的学号和姓名。
以上的查询基于以下的关系数据库模式:
学生(学号,姓名,性别,年龄,院系)
课程(课程号,课程名,先修课,学分)
选修(学号,课程号,成绩)
在查询的要求里凡是含有“全部”或者“至少”等词语的,都可以考虑用除运算来解决。但是否一定用到除运算,则还要考虑是否有确定的包含关系。上述查询里有明确的包含关系:设该学生所选修课程的课程号为集合1,全部课程的课程号为集合2,如果集合1包含了集合2,则就说明该学生选修了全部课程。
下面来说明如何构造除运算表达式。
1) 写下除运算的符号[÷];
2) 构造除运算后面的关系。上述被包含的集合2即为除运算后面的关系,将该集合写成关系的形式,因此表达式为[÷][π课程号(课程)];
3) 构造除运算前面的关系。先写出基本“骨架”,[π?,β(R)÷π课程号(课程)],其中[α]和[β][]为待定的属性组,R为待定的关系;
4) 确定(3)中的未知量[α],[β]和R。根据题意,显然R为选修关系;[α]为要查询的或者部分要查询的,题目中要查询的是学号和姓名,选修关系中没有姓名,故[α]即为学号;[β]为除运算后面的关系中包含的属性组,故[β]即为课程号,因此表达式为[π学号,课程号(选修)÷π课程号(课程)];
5) 看是否需要连接。显然(4)中求出的仅仅是学号,还需要和学生关系连接求出姓名,故最终的表达式为[π学号,课程号(选修)÷π课程号(课程)∞π学号,姓名(学生)]。
6 结束语
关系“除”运算是关系代数中最难的一种运算,笔者在教学时自己总结了一种求除运算结果的步骤以及一种构造除运算表达式来实现查询的方法和技巧,经过课堂教学证明,这些方法和技巧教学效果良好,希望能够对相关教学研究的发展有所帮助。
参考文献:
[1] 王珊,萨师煊. 数据库系统概论(第四版)[M]. 北京:高等教育出版社,2006.endprint
摘要:该文结合笔者多年的教学研究和实践对《数据库原理》课程中关系代数“除”运算的教学进行阐述和探讨,希望能够对该课程教学研究的发展有所帮助。
关键词:《数据库原理》课程教学;关系代数;“除”运算
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2014)14-3338-02
1 概述
《数据库原理》是计算机学科中一门重要的必修课程乃至核心课程。该课程的目标是使学生对数据库系统的基本概念、理论和方法有准确的理解,具有一定的数据库系统设计能力,并具备利用数据库管理系统进行应用开发的基本素质。
2 关系代数概述
关系代数是教材第二章“关系数据库”的核心内容之一。当前主流的数据模型是关系模型,而关系模型的数据操作语言,亦可称之为关系数据库语言,按照表达查询的方式可以分为两类:关系代数和关系演算。
关系代数:用对关系的运算来表达查询。
关系演算:用谓词来表达查询。
在实际教学中,关系代数是重点,而关系演算以学生自学为主。
关系代数可分为两类:
一类是传统的集合运算,包括并、交、差、广义笛卡尔积四种;
另一类是专门的关系运算,包括选择、投影、连接、除。其中关系“除”运算学生最难掌握。
3 关系“除”运算的概念
给定关系[R(X,Y)]和[S(Y,Z)],其中[X、Y、Z]是属性组。[R]中的[Y]和[S]中的[Y]可以有不同的属性名,但必须具有相同的域集。
[R]与[S]的除运算得到一个新的关系[P(X)],[P]是[R]中满足下列条件的元组在[X]属性列上的投影:元组在[X]上分量值[x]的象集[Yx]包含[S]在[Y]上投影的集合。记作[R÷S={tr[X]] [tr∈R∧πY(S)?Yx]}。
4 “除”运算的运算步骤
除运算在所有的关系代数运算中是最难的一种,学生学习起来普遍感到困难,教材上并未对如何进行除运算做过多的阐述。笔者在实际教学中给出了以下一种除运算的运算步骤,取得了较好的教学效果。
1) 找两个关系的公共属性组;
2) 求象集;
3) 求投影;
4) 找包含关系。
以下举一个实例来加以说明。
设关系R和S分别为图1和图2,求R[÷]S。
按照以上的步骤:
1) 找两个关系的公共属性组;
显然,公共属性组为(B,C),即Y=(B,C),所以X=A,Z=D。
2) 求象集;
具体来说,是求X在R中的象集。按照象集的概念,不难求出:
[a1]的象集为{([b1],[c2]),([b2],[c3]),([b2],[c1])}
[a2]的象集为{([b3],[c7]),([b2],[c3])}
[a3]的象集为{([b4],[c6])}
[a4]的象集为{([b6],[c6])}
3) 求投影;
具体来说,是求S在Y上的投影。按照投影的概念,不难求出:
S在(B,C)上的投影为{([b1],[c2]),([b2],[c3]),([b2],[c1])}
4) 找包含关系。
具体来说,是看(2)中的象集哪个包含了(3)中的投影。显然,只有[a1]的象集包含了(3)中的投影,所以R[÷]S={[a1]}。
5 构造“除”运算表达式的技巧
在讲授除运算时,不仅要求学生掌握除运算的概念和方法,还要求学生能够运用除运算来实现一些实际的查询,这就对学生提出了更高的要求。很多学生对于如何构造除运算表达式来实现特定的查询感到无所适从,教材上也只给出了相应的表达式,并未说明如何来构造。笔者自己总结了一种构造除运算表达式的方法,在实际的教学中取得了良好的效果。以下举一个实例加以说明。
查询选修了全部课程的学生的学号和姓名。
以上的查询基于以下的关系数据库模式:
学生(学号,姓名,性别,年龄,院系)
课程(课程号,课程名,先修课,学分)
选修(学号,课程号,成绩)
在查询的要求里凡是含有“全部”或者“至少”等词语的,都可以考虑用除运算来解决。但是否一定用到除运算,则还要考虑是否有确定的包含关系。上述查询里有明确的包含关系:设该学生所选修课程的课程号为集合1,全部课程的课程号为集合2,如果集合1包含了集合2,则就说明该学生选修了全部课程。
下面来说明如何构造除运算表达式。
1) 写下除运算的符号[÷];
2) 构造除运算后面的关系。上述被包含的集合2即为除运算后面的关系,将该集合写成关系的形式,因此表达式为[÷][π课程号(课程)];
3) 构造除运算前面的关系。先写出基本“骨架”,[π?,β(R)÷π课程号(课程)],其中[α]和[β][]为待定的属性组,R为待定的关系;
4) 确定(3)中的未知量[α],[β]和R。根据题意,显然R为选修关系;[α]为要查询的或者部分要查询的,题目中要查询的是学号和姓名,选修关系中没有姓名,故[α]即为学号;[β]为除运算后面的关系中包含的属性组,故[β]即为课程号,因此表达式为[π学号,课程号(选修)÷π课程号(课程)];
5) 看是否需要连接。显然(4)中求出的仅仅是学号,还需要和学生关系连接求出姓名,故最终的表达式为[π学号,课程号(选修)÷π课程号(课程)∞π学号,姓名(学生)]。
6 结束语
关系“除”运算是关系代数中最难的一种运算,笔者在教学时自己总结了一种求除运算结果的步骤以及一种构造除运算表达式来实现查询的方法和技巧,经过课堂教学证明,这些方法和技巧教学效果良好,希望能够对相关教学研究的发展有所帮助。
参考文献:
[1] 王珊,萨师煊. 数据库系统概论(第四版)[M]. 北京:高等教育出版社,2006.endprint