为某公司开发一个用于管理产品发运的数据库。经调查分析,并经简化处理后,得到的数据项列表如下:
发运单号 ydh CHAR(6),发运方式fs CHAR(4),发货日期fhrq DATEs
运杂项目xm CHAR(4),运杂费用fy NUMBER,货品名hpm CHAR(10),
单价di NUMBER,重量zl NUMBER,客户号khh CHAR(8);
客户名称khm CHAR(20),客户地址addr CHAR(20)。
确定以发货单(fhD)、客户(kh)、货品明细(hpms)、运杂费(yzf)为信息实体,且它们的对应关系如下:
一个发货单可对应多个货品明细,它们之间通过发运单号(ydh)关联。
一个发货单可对应多个运杂费,它们之间通过发运单号(ydh)关联。
一个客户可对应多个发货单,它们之间通过客户号(khh)关联。
要求:
(1)设计产品发运数据库的逻辑结构,给出相应的表名、表的属性名(数据类型可省)、主键、外键。
(2)给出下列查询的SQL语句:
①查询2001年2月28日本公司曾给哪些客户发运货物,输出这些客户的名称(khm)和地址 (addr)。
②查询2001年2月28日通过铁路(即fhd.fs='铁路')发运货物的运杂费明细,输出发运单号 (ydh)、运杂项目(xm)、运杂费用(fy)。
③查询2001年2月28日发运的货物明细,输出货品名(hpm)、单价(dj)、重量(zl)、货物金额 (dj*zl)。
④查询在2001年2月1日和2001年2月28日之间,发运各种产品的总重量(按货品名(hpm)分类汇总,输出货品名(hpm)、总重量)。
答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。
答 案:(1)产品发运数据库的逻辑结构fdh (ydhkhhfsfhrq)主键:ydh外键:khhkh (khhkhmaddr)主键:khhhpms (hpmydhdjzl)主键:hpm+ydh外键:ydhyzf(xmydhfy)主键:xm+ydh外键:ydh(2)查询的SQL语句:①SELECT kh. khm kh.addr FROM kh fhdWHERE kh. khh=fhd.khh AND fhd.fhrq='2001年2月28日'或SELECT khm addr FROM kh WHERE kh. khh IN(SELECT fhd. khh FROM fhd WHERE fhd. fhrq='2001年2月28日')②SELECT yzf. ydh yzf. xm yzf. fy FROM yzf fhdWHERE yzf. ydh=fhd. ydh AND fhd. fhrq='2001年2月28日'AND fhd.fs='铁路'或SELECT ydhxmfy FROM yzf WHERE yzf. ydh IN(SELECT fhd. ydh FROM fhd WHERE fhd. fhrq='2001年2月28日'AND fhd. fs='铁路')③SELECT hpms. hpm hpms. dj hpms. zl hpms. dj* hpms. zl FROM hpms fhdWHERE hpms. ydh=fhd.ydh AND fhd. fhrq='2001年2月28日'或SELECT hpm dj zl dj*zl FROM hpms WHERE hpms. ydh IN(SELECT fhd. ydh FROM fhd WHERE fhd. fhrq='2001年2月28日')④SElECT hpm sum(zl)FROM hpms fhd WHERE hpms. ydh=fhd. ydh ANDfhd. fhrq>='2001年2月28日'AND fhd. fhrq='2001年2月28日'GROUP BY hpm或SELECT hpm sum(zl) FROM hpms WHERE hpms. ydh IN(SELECT fhd. ydh FROM fhd WHERE fhd. fhrq>='2001年2月28日' AND fhd. fhrq= '2001年2月28日') GROUPBY hpm
(1)产品发运数据库的逻辑结构fdh (ydh,khh,fs,fhrq)主键:ydh,外键:khhkh (khh,khm,addr)主键:khhhpms (hpm,ydh,dj,zl)主键:hpm+ydh,外键:ydhyzf(xm,ydh,fy)主键:xm+ydh,外键:ydh(2)查询的SQL语句:①SELECT kh. khm, kh.addr FROM kh, fhdWHERE kh. khh=fhd.khh AND fhd.fhrq='2001年2月28日'或SELECT khm, addr FROM kh WHERE kh. khh IN(SELECT fhd. khh FROM fhd WHERE fhd. fhrq='2001年2月28日')②SELECT yzf. ydh, yzf. xm, yzf. fy FROM yzf, fhdWHERE yzf. ydh=fhd. ydh AND fhd. fhrq='2001年2月28日'AND fhd.fs='铁路'或SELECT ydh,xm,fy FROM yzf WHERE yzf. ydh IN(SELECT fhd. ydh FROM fhd WHERE fhd. fhrq='2001年2月28日'AND fhd. fs='铁路')③SELECT hpms. hpm, hpms. dj, hpms. zl, hpms. dj* hpms. zl FROM hpms, fhdWHERE hpms. ydh=fhd.ydh AND fhd. fhrq='2001年2月28日'或SELECT hpm, dj, zl, dj*zl FROM hpms WHERE hpms. ydh IN(SELECT fhd. ydh FROM fhd WHERE fhd. fhrq='2001年2月28日')④SElECT hpm, sum(zl)FROM hpms, fhd WHERE hpms. ydh=fhd. ydh ANDfhd. fhrq>='2001年2月28日'AND fhd. fhrq='2001年2月28日'GROUP BY hpm或SELECT hpm, sum(zl) FROM hpms WHERE hpms. ydh IN(SELECT fhd. ydh FROM fhd WHERE fhd. fhrq>='2001年2月28日' AND fhd. fhrq= '2001年2月28日') GROUPBY hpm