《[高一数学]chapter》由会员分享,可在线阅读,更多相关《[高一数学]chapter(39页珍藏版)》请在金锄头文库上搜索。
1、第二章 关系运算,关系数据模型,关系运算,关系数据结构,关系完整性规则,实体完整性,参照完整性,用户定义完整性,域、笛卡儿积、关系、码,关系数据结构,1、域:具有相同特性的数据集合,D1=1,3,5,7,999,2、笛卡儿积:定义在一组域上的集合。假定一组域用D1,D2,Dn表示。 笛卡儿积:D1 D2 Dn 元素个数:m1 m2 m3 (m1,m2m3分别是各域元素的个数),例:设D1=1,3,5,7, D2=2,4,6 求笛卡儿积,元组个数(基数)=m1 m2,D1 D2,4 3=12,(1,2),(,),(,), (,),(,),(,), (,),(,),(,), (,),(,),(,)
2、,、关系,(,),二元关系(二个域),属性名必须可区分,元组不允许重复,关系与属性的次序、元组的次序无关,属性值必须是单值,即不可再分,学生(学号,姓名,成绩(数学,物理,化学),学生1(学号,姓名),学生2(学号,数学,物理,化学),关系模式,关系名,属性名,4、码(键、关键字),超码:关系中能唯一标识每个元组的属性或属性组,R(学号,姓名,年龄,专业,身份证号),学号,身份证号,(专业,身份证号),候选码:关系中能唯一标识每个元组的最少属性或属性组,学号,身份证号,主码:候选码中的一个,备用码:除了主码以外的所有候选码,外码:关系中的属性或属性组并非该关系的主码,但它们是另外一个关系的主码
3、,则称其为该关系的外码,主属性和非主属性:包含在任何候选码中的属性为主属性,学生(学号,姓名,班级号) 班级(班级号,专业,教室),学生(学号,姓名,班级) 课程(课程号,课程名,学分) 成绩(学号,课程号,成绩),关系模型中,基本的数据结构是二维表,关系之间的联系通过不同关系中的公共属性来体现。,关系完整性,关系完整性就是关系模型中数据的正确性、一致性和有效性。,包括三方面,实体完整性,参照完整性,用户定义完整性,关系的主码不能为空,学生(学号,姓名,班级号) 班级(班级号,专业,教室),参照关系,被参照关系,在两个参照和被参照关系中,参照关系中每个元组的外码或者为空,或者等于被参照关系中某
4、个元组的主码,对每个关系每个属性的取值限制(约束)的具体定义,2.2 关系运算,关系的基本运算,传统的集合运算,专门的关系运算,并、交、差、笛卡儿积,选择、投影、连接,分别用符号、-、表示,分别用符号、表示,(与)、 (或)、(属于)、(不属于),传统的集合运算(并),两个相同结构关系的并是由属于这两个关系的元组组成的集合。如关系R和S, 将S中的记录追加到R的后面就是这两个关系的并集。(删除重复记录),传统的集合运算,并(Union),RS,R,S,=SR,传统的集合运算(交),两个具有相同结构的关系R和S,它们的交是由既属于R又属于S的元组组成的集合。交运算的结果是R和S中的共同元组。,R
5、 S,交(Intersection),R,S,=S R,传统的集合运算(差),设有两个相同结构的关系R和 S, R差S的结构是由属于R且不属于S的元组组成的集合,即差运算的结果是从R中去掉S中也有的元组。,差(Difference),R,S,R-S, S-R,笛卡儿积,设R为m目关系, S为n目关系, 则R和S的广义笛卡尔乘积为: RS=t|t=tr, tstrRtsS 其结果为m+n目关系。 元组的前m列是关系R的一个元组, 元组的后n列是关系S的一个元组。 若R有k1个元组, S有k2个元组, 则RS有k1k2个元组。,笛卡儿积,R关系,S关系,RS, S R,设一个关系A具有4个属性和4
6、个元组,关系B具有3个属性和3个元组,则关系AB具有_个属性和_个元组。,练习,专门的关系运算,选择(单目运算):从关系中找出满足条件的那些元组称 为选择(从行的角度考虑)。,例:设一个关系模式为R(A,B,C),对应的关系内容为R=1,10,50,2,10,60,3,20,72,4,30,60,则B15(R)=, 3,20,72,4,30,60,则B=20C=60(R)=,则B15C60(R)=,选择(Selection),从关系中找出满足条件的元组的操作称为选择,是行的方向的计算。例如:从教师表中找出职称为“教授”的教师。(单目运算),投影(单目运算):从关系模式中挑选若干属性组成新的关系
7、称 为投影(从列的角度考虑,相当于对关系进行垂直分解,姓名,专业(学生),学生,投影运算所得到的新关系的元组数小于或等于原关系中的元组数,性别=女(学生),姓名,专业,(,),投影(Projection),从关系模式中指定若干属性组成新的关系称为投影。是列方向的计算。例如:从学生表中查询学生的姓名和班级。,联接(join)(双目运算):把两个关系R和S按相应属性值的比较条件连接起来。,R关系,S关系,R R.B S.E S,连接运算是笛卡儿积的一个子集,表示R关系中的B属性,RS(笛卡儿积),自然连接:等值联接后去掉重复属性的结果,是一种特殊且有用的连接。它是把两个关系按属性名相同进行等值连接
8、。记作: R S,常用的连接是自然连接和等值连接,R关系,S关系,R S,R、S的等值连接,自然连接(R S),设一个关系模式为R(A,B,C),对应的关系内容为R=1,10,50, 2,10,60, 3,20,72, 4,30,60,则B( C70(R)的运算结果中包含有_个元组,每个元组包含有_个分量。,选课关系sc,学生关系s,课程关系c,S SC,C,?查询出姓名为赵路的学生的学号、所选课程的每门课程号及相应成绩,选课关系SC,学生关系S,课程关系C,选择,投影,连接,姓名=赵路(S),学号,(,),(,),SC,查出学号为4051的学生的学号、姓名、所选每门课的课程名、成绩,选课关系
9、SC,学生关系S,课程关系C,学号=4051(S),学号,姓名,(,),SC,课程号,课程名(C),(,),查出同时选了C001和C002两门课程的学生的学生号,选课关系SC,学生关系S,课程关系C,课程号=C001(SC),学号,(,),课程号=C002(SC),学号,(,),查出没有选修任何课程的全部学生的学号、姓名、性别、专业,选课关系SC,学生关系S,课程关系C,学号(S),学号(SC),-,(,),S,简答题 1、设一个学生关系为S(学生号,姓名),课程关系为C(课程号,课程名),选课关系为X(学生号,课程号,成绩),请用关系代数式写出:选修了课程名为电子商务课程的全部学生信息。,(
10、学生号(,(课程名=电子商务(C)),X,) ),S,2、设一个学生关系为S(学生号,姓名),课程关系为C(课程号,课程名),选课关系为X(学生号,课程号,成绩),请写出姓名为李飞的学生所选修的全部课程信息所对应的关系运算表达式。,( 姓名=李飞(S),X,课程号,),(,C,P50 第10题,R,B15(R)=,3,20,72,4,30,60,P50 第11题,R,R,R R,S(学号,姓名),C(课程号,课程名),X(学号,课程号,成绩),X,课程名=程序设计(C),学生号 课程号 成绩 课程名, 程序设计,学号,(,),(,),s,如下关系中,选修了课程名为“程序设计”课程的全部学生信息
11、的运算表达式是,P50 第1题,S(学生号,姓名),C(课程号,课程名),X(学生号,课程号,成绩),如下关系中,所有被选修课程信息的运算表达式是,P50 第1题,课程号(X),第3章 关系规范化基础,数据依赖,关系规范化,select * from 学生 where not exists (select y.课程号 from 学生 x inner join 选课 y on x.学生号=y.学生号 where x.姓名=a and not exists (select * from 选课 where 学生.学生号=选课.学生号 and y.课程号=选课.课程号),从教学库中查询出选修了姓名为a的学生的全部选课的所有学生,学生(学生号 char(7),姓名 char(6),性别 char(2),出生日期 datetime) 课程(课程号 char(4),课程名 char(10),课程学分 int) 选课(学生号 char(7),课程号 char(4),成绩 int),