中山大学软件工程数据库作业二

欢迎访问我的个人博客:Talk is cheap. Show me the code!。我相信会有所收获的。


4.3
Suppliers(sid: integer, sname: string, address: string)
Parts(pid: integer, pname: string, color: string)
Catalog(sid: integer, pid: integer, cost: real)
下面答案中的RA代表Relational Algebra,TRC代表Tuple Relational Calculus
1. 找出供应某种红色零件的供应商的名字
2. 找出供应某种红色或绿色零件的供应商的sids
3. 找出供应某种红色零件或位于221Packer Ave的供应商的sids
4. 找出供应某种红色和绿色零件的供应商的sids
5. 找出供应每一种零件的供应商的sids
6. 找出供应每种红色零件的供应商的sids
7. 找出供应每种红色或者绿色零件的供应商的sids
8. 找出供应每种红色零件或者供应每种绿色零件的供应商的sids
9. 找出sids对,其中第一个sid的供应商对某些零件的要价比第二个sid的供应商的高
10. 找出至少由两个供应商供应的零件的pids
11. 找出名为Yosemite Sham的供应商供应的最贵的零件的pids
12. 找出每个供应商都供应并且价格少于200美元的零件的pids(如果对某零件存在供应商不供应,或者价格大于200美元,那么该零件就不被选择)。

答案如下:因为是在csdn上写,所以图片带有水印。
这里写图片描述
这里写图片描述
这里写图片描述


5.4考虑下面的关系模式。一个雇员可以在多个部门工作,Works关系的pic_time字段表明了一个指定的员工在一个指定的部门工作的时间比率。
Emp(eid: integer, ename: string, age: integer, salary: real)
Works(eid: integer, did: integer, pic_time: integer)
Dept(did: integer, budget: real, managerid: integer)
用SQL写出下面的查询:
(1) 打印出同时工作于硬件和软件两个部门的每个雇员的名字和年龄。
答:

SELECT E.ename, E.age
    FROM Emp E, Works W1, Works W2, Dept D1, Dept D2
    WHERE E.eid = W1.eid AND W1.did = D1.did 
            AND D1.dname = ‘Hardware’ 
            AND W2.did = D2.did AND D2.dname = ‘Software’

(2) 对于每个超过20个等价全时员工(也就是说半时和全时的员工加起来至少有这么多)的部门,打印出那个部门的did以及在该部门工作的雇员数。
答:

    SELECT W.did, COUNT(W.eid)
    FROM Works W
    GROUP
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值