复习题(一)1、设R 是二元关系,请分别说明下列关系表达式的结果是什么?并将E1和E2转换为等价的关系代数表达式E1={[][][][]})))2211()()(()(u t u t u R t R u t ≠∨≠∧∧∃参考答案:如果R 只有1行,则结果为空;否则,结果为R 本身。
E2={})()(ba R ab R ab ∧参考答案:结果为R 中第1分量和第2分量交换位置后仍然属于R 的数据行。
2、设有下列关系: R( A, B, C, D ) S( C, D, E) T( F, C, D)b bcd c d me c df a e f c d n c e fb b e f e f nf a d ed ge fd 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 cb e e d cg e e d cE2 =∏ 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 bcd m ed g c d m eE3 = R ÷∏ C,D (S )参考答案: E3(A B )b bd g(2) 试将E1转换为等价的关系代数表达式参考答案:E1=∏ B, R.C, S.C,T.D, T.C(σC<’c'∧R.D≠'d'∧T.D≠'f'∧R.D=S.D∧S.C>T.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 g1a3 b1 c2 d2 a1 b1 e3 c2 f2 g2a3 b1 c3 d3 a1 b4 e2 c2 f3 g1a3 b3 c1 d1 a2 b1 e2a3 b4 c2 d2 a2 b2 e1a3 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 f2d2 e2 f3E2=∏ 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 g1a1 b2 c2 b2 c2 d2 e1 d1 f2 g2a2 b2 c1 b2 c1 d2 e2 d2 f1 g3a2 b2 c2 b2 c1 d3 e3 d2 f3 g4a2 b3 c1 b3 c4 d1 e1 d3 f1 g5a3 b1 c2 d3 f2 g6a3 b2 c4a3 b3 c4(1)试计算下列关系表达式的值:E1=∏A,S.B,E,F(σA=’a2’∧E=’e1’∧G<’g4’(R⋈S⋈T))参考答案:E1( A , S.C, E, F)a2 c2 e1 f2a2 c2 e1 f1E2={xyz|(∃quvw)∧(R(wqx)∧S(qxyu)∧T(yvz)∧w>’a2’∧u<’e2’∧v=’f1’)}参考答案:E2(C, D, G)c4 d1 g1(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]<’g4’ ∧t[1]=u[1]∧t[2]=v[2] ∧t[3]=v[3] ∧t[4]=w[2]}(3)试将E2转换为等价的关系代数表达式参考答案:E2=∏C,D,G(σA>’a2’∧E<’e1’∧G=’f1’ ∧R.B=S.B∧R.C=S.C∧S.D=T.D(R×S×T))E2=∏C,D,G(σA>’a2’∧E<’e2’∧F=’f1’ (R⋈S⋈T))(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充值时间<’2010-11-30’ and 充值卡.卡号=充值.卡号 and 手机.手记=充值.手机(4)UPDATE 充值卡SET 面额=面额+100WHERE 卡号=’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 SUM(消费金额)FROM 消费WHERE POS编号=’029’AND 消费日期>=’2008-09-01’AND消费日期<=’2008-09-30’(2)SELECT 学号, 余额, 每日消费限额FROM 学生, 就餐卡WHERE 学生.卡号=就餐卡.卡号 AND =’吴斌’(3)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 卡号)(4)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)查询书名以“数据库系统”开头的所有图书编号及库存册数。