3.3 关系代数在关系模型中的应用
用关系代数可以表示数据库中数据结构及其操作包括查询、插入、删除及修改等操作。下面用几个例子来说明。首先建立一个关系数据库,称为学生数据库,它由三个关系组成。它们是:
S(sno,sn,sd,sa);
C(cno,cn,pno);
SC(sno,cno,g)。
其中sno,cno,sn,sd,sa,cn,pno,g,分别表示学号、课程号、学生姓名、学生系别、学生年龄、课程名、预修课程号、成绩,而S,C,SC则为关系,分别表示学生、课程、学生与课程联系。下面用关系代数表达式表示在该数据库上的操作。
例3.11 检索学生所有情况:
S
例3.12 检索学生年龄大于等于20岁的学生姓名:
例3.13 检索预修课号为c2的课程的课程号:
例3.14 检索课程号为c,且成绩为A的所有学生姓名:
注意:这是一个涉及到两个关系的检索,此时需用联接运算。
例3.15 检索s1所修读的所有课程名及其预修课号:
例3.16 检索年龄为23岁的学生所修读的课程名:
注意:这是涉及到三个关系的检索。
例3.17 检索至少修读了s5所修读的一门课的学生姓名。
这个例子比较复杂,需作一些分析,将问题分3步解决:
第1步,取得s5修读的课程号,它可以表示为:
第2步,取得至少修读为s5修读的一门课的学号:
第3步,最后得到结果为:
分别将R,W代入后即得检索要求的表达式:R S
例3.18 检索不修读任何课程的学生学号:
例3.19 在关系C中增添一门新课程:
令此新课程元组所构成的关系为R,即有:
此时有结果:
C∪R
例3.20 学号为S17的学生因故退学,请在S及SC中将其除名:
例3.21 将关系S中学生S6的年龄改为22岁:
W为修改后的学生有序组所组成的关系。
例3.22 将关系S中的年龄均增加1岁:
习题3
3.1 请给出如下几个数学概念的定义:
(1)有序偶
(2)n元有序组
(3)关系
(4)代数系统
(5)关系代数
3.2 请给出如下几个概念间的关联:
(1)关系与二维表
(2)关系运算与表操作
(3)关系代数与关系模型
3.3 试举一个关系代数的例子
3.4 什么叫关系代数?请给出关系的表示以及关系运算的内容。
3.5 今有如下商品供应关系数据库:
供应商:S(SNO,SNAME,STATUS,CITY)
零件:P(PNO,PNAME,COLOR,WEIGHT)
工程:J(JNO,JNAME,CITY)
供应关系:SPJ(SNO,PNO,JNO,QTY)(注:QTY表示供应数量)
试用关系代数写出下面的查询公式:
(1)求供应工程J1零件单位号码。
(2)求没有使用天津单位生产的红色零件的工程号。
(3)求供应工程J1零件P1的供应商号码。
(4)求供应工程J1零件为红色的单位号码。
(5)求至少用了单位S1所供应的全部零件的工程号。
(6)求供应商与工程在同一城市能供应的零件数量。
3.6 设有一课程设置数据库,其数据模式如下:
课程C(课程号cno、课程名cname、学分数score、系别dept)
学生S(学号cno、姓名name、年龄age、系别dept)
课程设置SEC(编号secid、课程编号cno、年year、学期sem)
成绩GRADE(编号secid、学号sno、成绩g)
其中成绩g采用五级记分法,即分为1,2,3,4,5五级。
请用关系代数表示下列查询:
(1)查询‘计算机’系的所有课程的课程名和学分数。
(2)查询学号为‘993701’的学生在2002年所修课程的课程名和成绩。
3.7 试述关系代数对SQL哪些方面起指导作用。
3.8 一个计算机可视为一个代数系统,请给出说明。
【复习指导】
本章介绍关系代数的主要内容以及它与关系模型关系。
1.关系代数———关系模型的基本理论
2.几个相关的数学概念
●n元有序组
●关系
●代数
●关系代数
3.关系表示———n元有序组的集合
4.关系操作———7种关系运算(打★者为常用运算)
投影运算 ★
选择运算 ★
笛卡尔乘积运算
联接运算
自然联接运算 ★
并运算 ★
差运算 ★
5.关系代数
在关系(集合)R上的关系运算所构成的封闭系统称关系代数
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。