本文格式为Word版,下载可任意编辑数据库ER图练习题 1. 对于学生选课关系,其关系模式为: 学生(学号,姓名,年龄,所在系); 课程(课程名,课程号,先行课); 选课(学号,课程号, 劳绩) 课堂练习: 1、查询学生95001的姓名和所在系 2、查询至少选修了两门课程的学生学号 3、查询选修了1号课程的学生姓名 4、查询没有选修数据库课程的学生姓名 5、查询至少选修了1号课程和3号课程的学生学号 用关系代数完成如下查询 1)求学过数据库课程的学生的姓名和学号 2)求学过数据库和数据布局的学生姓名和学号 3)求没学过数据库课程的学生学号 4)求学过数据库的先行课的学生学号 5)求数据库最高、最低劳绩学生的姓名 6)有一致劳绩学生的学号 2. 设有一个SPJ数据库,包括Suppliers,Parts,Projects,SPJ四个关系模式: Suppliers(SNO,SNAME,STATUS,SCITY); Parts(PNO,PNAME,COLOR,WEIGHT); Projects(JNO,JNANE,JCITY); SPJ(SNO,PNO,JNO,QTY)。
其中:供给商表Suppliers由供给商代码(SNO)、供给商姓名(SNAME)、供给商状态(STATUS)、供给商所在城市(SCITY)组成;零件表Parts由零件代码 (PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程工程表Projects由工程工程代码(JNO)、工程工程名(JNAME)、工程工程所在城市(CITY)组成;供给处境表SPJ由供给商代码(SNO)、零件代码 (PNO)、工程工程代码(JNO)、供给数量组成(QTY)组成,表示某供给商供给某种零件给某工程工程的数量为QTY 试用关系代数完成如下查询: 1)求供给工程J1 零件的供给商号码SNO 2)求供给工程J1 零件P1的供给商号码SNO 3)求供给工程J1 零件为红色的供给商号码SNO 4)求没有使用天津供给商生产的红色零件的工程号 5)求至少用了供给商S1所供给的全部零件的工程号 课堂练习: (1)求上海的全体供给商的信息 (2)求位于郑州的全体工程的信息 (3)求数量在100-150之间的供给 (4)求工程J1供给零件的供给商号。
(5)求供给工程J1红色零件的供给商号 (6)求不供给零件P2的供给商名称 (7)求没有使用天津供给商生产的红色零件的工程号 (8)求使用了本地供给商供给的零件的工程号和工程名称 (9)求未使用本地供给商供给的零件的工程号和工程名称 (10)求至少用了供给商号为02所供给的全部零件的工程号 1、已知关系R(A,B,C,D)的函数凭借为A→B,B→C和D→B,回复如下问题: (1) 求出R的码; A D (2)R是BCNF范式吗?为什么?假设不是,把它分解成BCNF范式 R1(A,B) R2(B,C) R3(D,B) R4(A,D) 2、已知关系R(A,B,C,D)的函数凭借为A→B,B→C,A→D和D→C,回复如下问题: (1) 求出R的码.A (2) R是第三范式吗?为什么?假设不是,把它分解成第三范式 R1(A,B,D) R2( B,C) R3(D,C) 3.设有关系框架R(A,B,C,D,E,P)及其上的函数相关性集合F={A→B,C→P,E→A,CE→D}: (1)求出R的全体候选关键字。
2)将R无损连接分解到BCNF 课堂练习: 现有如下关系模式: R(A#,B#,C,D,E) 其中:A#B#组合为码 R上存在的函数凭借有A#B#→E,B#→C,C→D (1)该关系模式得志2NF吗?为什么? (2)假设将关系模式R分解为: 指出关系模式R2的码,并说明该关系模式最高得志第几范式?(在1NF~BCNF之内) (3)将关系模式R分解到BCNF 课后作业: 1.设教学数据库中有3个关系: 学生关系 S(SNO,SNAME,AGE,SEX) 学习关系 SC(SNO,CNO,GRADE) 课程关系 C(CNO,CNAME,TEACHER) 下面用关系代数表达式表达每个查询语句 (1) 检索学习课程号为C2的学生学号与劳绩 (2) 检索学习课程号为C2的学生学号与姓名 (3) 检索选修课程名为MATHS的学生学号与姓名 (4) 检索选修课程号为C2或C4的学生学号 (5) 检索至少选修课程号为C2和C4的学生学号 (6) 检索不学C2课的学生姓名与年龄 (7) 检索学习全部课程的学生姓名。
(6)检索至少选修两门课程的学生学号 πS#(σ1=4∧2≠5(SC×SC)) 用关系代数表示数据查询的典型例子 [例]设教学数据库中有3个关系: 学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) 下面用关系代数表达式表达每个查询语句 (1) 检索学习课程号为C2的学生学号与劳绩 πSNO,GRADE(σ CNO='C2'(SC)) (2) 检索学习课程号为C2的学生学号与姓名 πSNO,SNAME(σ CNO='C2'(SSC)) 由于这个查询涉及到两个关系S和SC,因此先对这两个关系举行自然连接,同一位学生的有关的信息,然后再执行选择投影操作 此查询亦可等价地写成: πSNO,SNAME(S)(πSNO(σ CNO='C2'(SC))) 这个表达式中自然连接的右分量为\学了C2课的学生学号的集合\。
这个表达式比前一 个表达式优化,执行起来要省时间,省空间 (3)检索选修课程名为MATHS的学生学号与姓名 πSNO,SANME(σ CNAME='MATHS'(SSCC)) (4)检索选修课程号为C2或C4的学生学号 πSNO(σ CNO='C2'∨CNO='C4'(SC)) (5) 检索至少选修课程号为C2或C4的学生学号 π1(σ1=4∧2='C2'∧5='C4'(SC×SC)) 这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果关系中的属性序号 对比这一题与上一题的区别 (6) 检索不学C2课的学生姓名与年龄 πSNAME,AGE(S)-πSNAME,AGE(σ CNO='C2'(SSC)) 这个表达式用了差运算,差运算的左分量为\全体学生的姓名和年龄\,右分量为\学了C2课的学生姓名与年龄\ (7)检索学习全部课程的学生姓名 编写这个查询语句的关系代数过程如下: (a) 学生选课处境可用πSNO,CNO(SC)表示; (b) 全部课程可用πCNO(C)表示; (c) 学了全部课程的学生学号可用除法操作表示。
操作结果为学号SNO的集合,该集合中每个学生(对应SNO)与C中任一门课程号CNO配在一起都在πSCO,CNO(SC) 中展现(即SC中展现),所以结果中每个学生都学了全部的课程(这是\除法\操作的含义): πSNO,CNO(SC)÷πCNO(C) (d) 从SNO求学生姓名SNAME,可以用自然连结和投影操作组合而成: πSNAME(S (πSNO,CNO(SC)÷πCNO(C))) — 7 —。