西安交大 - 数据库 - 练习卷答案

更新时间:2023-10-19 23:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

复习题(一)

1、设R是二元关系,请分别说明下列关系表达式的结果是什么?并将E1和E2转换为等价的关系代数表达式

E1=?t(?u)(R(t)?R(u)?(t?1??u?1??t?2??u?2?)))?

参考答案:如果R只有1行,则结果为空;否则,结果为R本身。

E2=?abR(ab)?R(ba)?

参考答案:结果为R中第1分量和第2分量交换位置后仍然属于R的数据行。

2、设有下列关系:

R( A, B, C, D ) S( C, D, E) T( F, C, D) b b c d c d m e c d f a e f c d n c e f b b e f e f n f a d e d g e f

d g c d

(1) 试计算下列关系表达式的值:

E1={t |(?u)(?v)(?w)(R(u)∧S(v)∧T(w)∧u[3]>?c?∧v[2] ≠?d?∧w[3] ≠?f?∧u[4]=v[2]∧v[1]>w[2]∧t[1]=u[2]∧t[2]=u[3]∧t[3]=v[1]∧t[4]=w[3]∧t[5]=w[2])} 参考答案:

E1( B, R.C, S.C, T.D, T.C) a e e d c b e e d c g e e d c

E2 =? A, B, R.C, R.D,E,F (?A < 'f'∧E<'n'∧F≠'c' (R? S ?T)) 参考答案:

E2(A, B, R.C, R.D, E, F) b b c d m e d g c d m e E3 = R÷? C,D(S) 参考答案: E3(A B ) b b d g

(2) 试将E1转换为等价的关系代数表达式 参考答案:

E1=? B, R.C, S.C,T.D, T.C(?CT.C(RⅹSⅹT)) (3) 试将E2转换为等价的关系元组演算表达式 参考答案: E2={t|

?u)(?v)(?w)(R(u)∧S(v)∧T(w)∧u[1]<'f'∧v[3]<'n'∧w[1]≠'c'∧u[3]=v[1]∧

u[4]=v[2]∧v[1]=w[2]∧v[2]=w[3]∧t[1]=u[1]∧t[2]=u[2]∧t[3]=u[3]∧t[4]=v[2]∧t[5]=v[3]∧t[6]=w[1])}

(4) 对E2进行代数优化 参考答案:

3、设有下列关系:

R( A, B, C, D) S( A, B, E) T( C, F, G) a2 b2 c2 d1 a1 b1 e2 c1 f1 g1 a3 b1 c2 d2 a1 b1 e3 c2 f2 g2 a3 b1 c3 d3 a1 b4 e2 c2 f3 g1 a3 b3 c1 d1 a2 b1 e2 a3 b4 c2 d2 a2 b2 e1 a3 b4 e3 (1) 试计算下列关系表达式的值:

E1={t|(?u)(?v)(?w)(R(u)∧S(v)∧T(w)∧u[2]=?b1?∧v[1]>?a1?∧w[1]>?c1?∧u[1]>v[1]

∧u[2]=v[2]∧u[3]=w[1]∧t[1]=u[4]∧t[2]=v[3]∧t[3]=w[2])}

参考答案: E1( D E F) d2 e2 f2 d2 e2 f3

E2=? R.B,R.C,S.A,F(?D>?d1?∧E=?e3’∧F>?f2’∧R.A=S.A∧R.B=S.B∧R.C=T.C(R×S×T)) 参考答案:

E2( R.B R.C S.A F) b4 c2 a3 f3} E3=R÷S 参考答案: E3(A,B)

(2) 试将E1转换为等价的关系代数表达式 参考答案:

E1=? R.D,R.E,T.F(?B>?b1?∧S.A>?a1?∧T.C>?c1?∧R.A>S.A∧R.B=S.B(R×S×T))

(2) 试将E2转换为等价的关系元组演算表达式 参考答案:

E2={t|(?u)(?v)(?w)(R(u)∧S(v)∧T(w)∧u[4]>?d1?∧v[3]=?e3?∧w[2]>?f2?∧R.A=S.A∧R.B=S.B∧R.C=T.C∧t[1]=u[2]∧t[2]=u[3]∧t[3]=v[1]∧t[4]=w[2])}

(4) 对E2进行代数优化

4、设有下列关系:

R( A, B, C) S( B, C, D, E) T( D, F, G) a1 b2 c1 b2 c2 d1 e1 d1 f1 g1 a1 b2 c2 b2 c2 d2 e1 d1 f2 g2 a2 b2 c1 b2 c1 d2 e2 d2 f1 g3 a2 b2 c2 b2 c1 d3 e3 d2 f3 g4 a2 b3 c1 b3 c4 d1 e1 d3 f1 g5 a3 b1 c2 d3 f2 g6 a3 b2 c4 a3 b3 c4

(1) 试计算下列关系表达式的值:

E1=?A,S.B,E,F(?A=?a2?∧E=?e1?∧G

E1( A , S.C, E, F) a2 c2 e1 f2 a2 c2 e1 f1

E2={xyz|(?quvw)∧(R(wqx)∧S(qxyu)∧T(yvz)∧w>?a2?∧u

(2) 试将E1转换为等价的关系元组演算表达式 参考答案:

E1={t|(?u)( ?v)( ?w)(R(u) ∧S(v) ∧T(w) ∧u[2]=v[1] ∧u[3] =v[2]

∧v[3]=w[1] ∧u[1]=?a2? ∧v[4]=?e1? ∧w[3]

E2=?C,D,G(?A>?a2?∧E?a2?∧E

(4) 对E1进行代数优化

5、以下定义的是某汽车修理厂管理系统数据库,其中加下划线的为关系模式主键,斜体字

为外键。该修理厂雇用若干名修理工并划分为不同的班组,汽车维修以班组为单位进行,每个班组安排一名修理工作为组长负责分配给该组的汽车维修事宜。

? 修理工(工号,姓名,年龄,参加工作时间,班组号) ? 班组(班组号,人数,组长工号)

? 汽车(车牌号,车主姓名,车型,联系电话)

? 维修(维修记录编号,车牌号,班组号,维修时间,收费)

试针对上述关系数据库写出如下SQL查询: (1)查询该修理厂划分的维修班组总数。 (2)查询各维修班组的班组号及其组长姓名。 (3)查询车牌号为“V0075”的汽车在“2011-01-01”至“2011-12-31”期间由修理工“E029”所在班组进行维修的费用总额。

(4)将修理工“E010”所在分组编号调整为“T03”。 参考答案:

(1)SELECT COUNT(班组号)

FROM 班组

(2)SELECT 班组号,姓名 组长姓名

FROM 班组,修理工 WHERE 组长工号=工号 (3)SELECT SUM(收费)

FROM 维修,班组,修理工

WHERE 车牌号=?V0075? AND维修时间>=?2011-01-01? AND 维修时间<=?2011-12-31? AND 工号=?E029? AND

维修.班组号=班组.班组号AND班组.班组号=修理工.班组号 (4)UPDATE 修理工

SET 班组号=?T03? WHERE 工号=?E010?

6、以下定义的是某手机话费充值卡管理系统数据库,其中加下划线的为关系模式主键,斜

体字为外键。每张充值卡通过卡号及密码为手机号码充值,一张充值卡只能为一个手机号码充值且一次充值过程必须消费完卡上的所有金额。每个手机号码只属于一个机主,而每位机主可以拥有多个手机号码。

? 充值卡(卡号,密码,面额,是否已售出)

? 手机(手机号码,开户时间,开户地点,机主编号) ? 充值(卡号,手机号码,充值时间)

? 机主(机主编号,姓名,身份证号码,联系地址,联系方式) 针对上述关系数据库写出如下SQL查询:

(1)查询尚未售出(是否已售出属性取值为“否”)的充值卡张数。 (2)查询“刘”姓手机机主的姓名及持有的手机号码。

(3)查询开户地点为“西安交通大学”的所有手机号码在“2010-11-01”至“2010-11-30”期间的充值总额。

(4)将卡号为“SX010323”的充值卡面额增加一百元。 参考答案:

(1)SELECT count(*)

FROM 充值卡

WHERE 是否已售出=?否? (2)SELECT 姓名,手机号码

FROM 手机,机主

WHERE 姓名 like ?刘%? and 手机.机主编号=机主.机主编号 (3)SELECT sum(面额)

FROM 充值卡,充值,手机

WHERE 开户地点=?西安交通大学? and 充值时间>?2010-11-01? and充值时间

(4)UPDATE 充值卡

SET 面额=面额+100

WHERE 卡号=?SX010323?

7、以下是某学生食堂就餐卡管理系统中的部分表,其中加下划线的属性为主键,斜体字属性为外键,每个学生只可办理一张就餐卡。

? 学生(学号,姓名,性别,班级,出生年月,卡号)

? 就餐卡(卡号,开户日期,失效日期,密码,余额,每日消费限额) ? POS终端(POS编号,地理位置)

? 消费(卡号,POS编号,消费日期,消费金额) ? 充值(卡号,充值时间,金额) 针对上述关系数据库写出如下SQL查询:

(1)查询卡号为“053021”的就餐卡余额及每日消费限额。 (2)查询编号为“018”的POS终端2010年12月的总收入。

(3)查询“张蓓”同学2010年10月1日在编号为“029”的POS终端上的消费次数。 (4)查询曾经在“西八食堂”(地理位置)就餐过的学生学号及姓名。

(5)请为一名新入校同学增加其相关信息,学号:10054001,姓名:白杨,性别:女,班级:计算机01,出生日期:1992-11-08,该同学于2010-09-01办理的新就餐卡卡号为060567, 失效日期:2014-08-31,默认密码:123456,每日消费限额:50元。 参考答案:

(1) SELECT 余额,每日消费限额

FROM 就餐卡

WHERE 卡号=?053021? (2)SELECT SUM(消费金额)

FROM 消费

WHERE POS编号=?029? AND 消费日期>=?2012-12-01? AND消费日期<=?2012-12-31? (3)SELECT COUNT(*)

FROM 学生, 就餐卡,消费

WHERE 学生.卡号=就餐卡.卡号 AND 姓名=?张蓓? AND 消费日期=?2010-10-01? AND POS编号=?029?

(4)SELECT 卡号

FROM 消费

WHERE消费日期>=?2008-10-01? AND消费日期<=?2008-10-31? GROUP BY 卡号

HAVING SUM(消费金额)>=ALL (

SELECT SUM(消费金额) FROM 消费

WHERE消费日期>=?2008-10-01? AND消费日期<=?2008-10-31? GROUP BY 卡号)

(5)INSERT INTO 学生

VALUES (?08054001?, ?白杨?, ?女?, ?计算机81?, ?1990-11-08?, ?020567?)

INSERT INTO 就餐卡

VALUES (?020567?,?2008-09-01?, ?2012-08-31?, ?123456?, 0, 50)

8、下面定义的是某网上书店的数据库,其中加下划线的是主键,斜体字的是外键

? 图书(图书编号,书名,定价,库存册数,出版社)

? 客户(客户编号,账号,口令,账户余额,客户类别,电话,送货地址) ? 订单(订单编号,客户编号,下单时间,支付金额) ? 订单明细(订单编号,图书编号,单价,定购册数) 针对上述关系数据库写出如下SQL查询:

(1)查询书名以“数据库系统”开头的所有图书编号及库存册数。 (2)查询2010年01月22日所有订单支付金额的总额。

(3)查询编号为“0323”的客户购买过的所有图书名称及各种图书的定购册数。 (4)将科学出版社出版的《数据库系统教程》库存册数增加100册。 参考答案:

(1)SELECT 图书编号,库存册数

FROM 图书

WHERE 书名 LIKE ?数据库系统%? (2)SELECT SUM(支付金额)

FROM 订单

WHERE 下单时间=? 2010-01-22? (3)SELECT 书名,定购册数

FROM 图书,订单,订单明细

WHERE 图书.图书编号=订单明细.图书编号 AND 订单.订单编号=订单明细.订单

编号 AND 客户编号=?0323?

(4)UPDATE 图书

SET 库存册数=库存册数+100

WHERE 书名=?数据库系统教程? AND 出版社=?科学出版社?

9、设有关系模式 R(A, B, C, D, E, G) 函数依赖集F={B?E, D?G, A?B, E?A,DE?C} 及R的一个分解р={R1(D, G), R2(B, E), R3(C, D, E), R4(A, B)}

(1) 试判断р是否无损联结?(构造M矩阵判断) (2) 试判断р是否保持函数依赖集F?并说明为什么? 参考答案:

(1)р的初始符号表:(A, B, C, D, E, G) R1 b11 b12 b13 a4 b15 a6

R2 b21 a2 b23 b24 a5 b26 R3 b31 b32 a3 a4 a5 b36 R4 a1 a2 b43 b44 b45 b46

р经过F变换后的终止符号表: (A, B, C, D, E, G) R1 b11 b12 b13 a4 b15 a6 R2 a1 a2 b23 b24 a5 b26

R3 a1 a2 a3 a4 a5 a6 R4 a1 a2 b43 b44 a5 b46

р是无损联结分解,因为р经过F变换后的终止符号表中出现了全?a?行

10、设有关系模式R(A,B,C,D,E,G,H),F={CD?B,CDE?A,A?B,B?E,G?AEH,H?EG} (1)试求F的最小函数依赖集FMIN; (2)试求R的所有候选键;

(3)试将R分解成3NF模式集,要求分解无损连接且保持函数依赖; 参考答案:

(1)Fmin ={CD?A,A?B,B?E,G?A,G?H,H?G} 或 {CD?A,A?B,B?E,H?A,G?H,H?G} (2)KEY1 = CDG KEY2 = CDH

(3)R可分解为:{R1(C,D,A),R2(A,B),R3(B,E),R4(H,A),R5(G,H),R6(C,D,G)} 或 {R1(C,D,A),R2(A,B),R3(B,E),R4(H,A),R5(G,H),R6(C,D,H)} 或 {R1(C,D,A),R2(A,B),R3(B,E),R4(G,A),R5(G,H),R6(C,D,H)} 或 {R1(C,D,A),R2(A,B),R3(B,E),R4(G,A),R5(G,H),R6(C,D,G)} 11、判断下列关系模式最高属于第几范式,并解释原因 R1(ABCDE),F= F={E?D,D?A,A?E,B?A} R2(EXGH),F ={ E→H, E→G, GHX→E } R3(XYZ),F ={ X→Y, Y→Z, Z→X } R4(ABCD),F ={ A→B, CD→A } R5(XYZ), F={X→→Y|Z} 参考答案:

R1的候选键是{BC},最高属于1NF。 R2的候选键是{GHX,EX},最高属于3NF R3的候选键是{X,Y,Z},最高属于BCNF R4的候选键是{CD},最高属于2NF R5的候选键是{XYZ},最高属于BCNF

12、下面是用ORDB的定义语言定义的数据库:

CREATE TYPE MyString char varying; CREATE TABLE university(uname MyString, city MyString, president ref(faculty), staff setof(ref(faculty)), edit setof(ref(coursetext))); CREATE TABLE faculty(fno integer, fname MyString, age integer, salary integer, works_for ref(university), teach setof(ref(coursetext))); CREATE TABLE coursetext(cname MyString, textname MyString, teacher ref(faculty),

editor ref(university));

(1)试画出上述数据库的对象联系图 参考答案:

fnofacultyfnameagesalarypresidentwork_forstaffteacheditorteacheruniversityunamecityeditcoursetextfnametextname

(2)试用ORDB的查询语言写出下列查询:

(i) 检索采用“Mathematical Analysis\教材讲授”MATHS”课的教师工号和姓名。 参考答案:

SELECT F.fno,F.fname FROM faculty as F

WHERE F.teach IN (?MATHS?,?Mathematical Analysis?) ;

(ii) 检索西安地区各大学超过年龄50岁的教师姓名 参考答案:

Select B.fname

From university as A, A.staff as B Where A.city = ?xian? And B.age > 50

(iii) 检索西安交大每位老师上课所用教材及其编写学校 参考答案:

Select B.fname, C.textname, C.editor.uname From university as A, A.staff as B, B.teach as C Where A.uname =‘西安交大’

本文来源:https://www.bwwdw.com/article/k3wf.html

Top