一个图书借阅管理数据库要求提供下述服务:
( a )可随时查询书库中现有书籍的书号、书名、数量及存放位置。所有各类书籍均可由书号唯一标识。
( b )可随时查询书籍借还情况。包括借书人单位、姓名、借书证号、借书日期和还书日期。约定:任何人可借多种书,任何一种书可为多个人所借,任何人借阅任何一本书均需记录相应的借书日期及还书日期,借书证号具有唯一性。
( c )当需要时,可通过数据库中保存的出版社的出版社名、电报编号、电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。约定:一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。
根据以上情况和假设,请画出满足需求的E-R图。
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
对于 S 表: S ( SNO , SNAME , STATUS , CITY ),分别为供应商号码、供应商名、供应商状态、供应商所在城市;
对于 P 表: P ( PNO , PNAME , COLOR , WEIGHT ),分别为零件号码、零件名、颜色、重量;
对于 J 表: J ( JNO , JNAME , CITY),分别为工程号、工程项目名、工程项目所在城市;
对于 SPJ 表: SPJ ( SNO , PNO , JNO , QTY),分别为供应商号码、零件号码、工程号、供应数量。
1)求供应工程J1零件的供应商号码SNO:
2)求供应工程J1零件P1的供应商号码SNO:
3)求供应工程J1零件为红色的供应商号码SNO:
4)求没有使用天津供应商生产的红色零件的工程号JNO:
5)求至少用了供应商S1所供应的全部零件的工程号JNO:
正确答案:
1)πSNO(σJNO=‘J1’(SPJ))
2)πSNO(σJNO=‘J1’∧PNO=‘P1’(SPJ))
3)πSNO(σJNO=‘J1’∧COLOR=‘红’(P∞SPJ))
或πSNO(σJNO=‘J1’((σCOLOR=‘红’§)∞SPJ))
4)πJNO(J)- πJNO(σCITY=‘天津’∧COLOR=‘红’ (S∞SPJ∞P))
5)πJNO,PNO(SPJ)÷ πPNO(σSNO=‘S1’(SPJ))
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
对于 S 表: S ( SNO , SNAME , STATUS , CITY ),分别为供应商号码、供应商名、供应商状态、供应商所在城市;
对于 P 表: P ( PNO , PNAME , COLOR , WEIGHT ),分别为零件号码、零件名、颜色、重量;
对于 J 表: J ( JNO , JNAME , CITY),分别为工程号、工程项目名、工程项目所在城市;
对于 SPJ 表: SPJ ( SNO , PNO , JNO , QTY),分别为供应商号码、零件号码、工程号、供应数量。
用 SQL 语句建立这 4 个表,并要求同时建立此4个表的主外键。
正确答案:
对于 S 表: S ( SNO , SNAME , STATUS , CITY ) ;
建 S 表:
CREATE TABLE S
(SNO Char(2) Primary Key,
SNAME Char(6) ,
STATUS Char(2),
CITY Char(4));
对于 P 表: P ( PNO , PNAME , COLOR , WEIGHT );
建 P 表 :
CREATE TABLE P
(PNO Char(2) Primary Key,
PNAME Char(6),
COLOR Char(2),
WEIGHT INT);
对于 J 表: J ( JNO , JNAME , CITY) ;
建 J 表:
CREATE TABLE J
(JNO Char(2) Primary Key,
JNAME Char(8),
CITY Char(4))
对于 SPJ 表:SPJ ( SNO , PNO , JNO , QTY) ;
建 SPJ 表:
SPJ(SNO,PNO,JNO,QTY)
CREATE TABLE SPJ
(SNO Char(2),
PNO Char(2),
JNO Char(2),
QTY INT,
Primary Key(SNO,PNO,JNO),
Foreign Key(SNO) References S(SNO),
Foreign Key(PNO) References P(PNO),
Foreign Key(JNO) References J(JNO))
设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
对于 S 表: S ( SNO , SNAME , STATUS , CITY ),分别为供应商号码、供应商名、供应商状态、供应商所在城市;
对于 P 表: P ( PNO , PNAME , COLOR , WEIGHT ),分别为零件号码、零件名、颜色、重量;
对于 J 表: J ( JNO , JNAME , CITY),分别为工程号、工程项目名、工程项目所在城市;
对于 SPJ 表: SPJ ( SNO , PNO , JNO , QTY),分别为供应商号码、零件号码、工程号、供应数量。
针对建立的 4 个表用SQL 语言完成以下的查询。
(1)求供应工程 J1零件的供应商号码 SNO ;
(2)求供应工程 J1 零件 P1的供应商号码 SNO ;
(3)求供应工程 J1零件为红色的供应商号码 SNO ;
(4)求没有使用天津供应商生产的红色零件的工程号 JNO ;
正确答案:
(1)求供应工程 Jl 零件的供应商号码 SNO ;
SELECT DIST SNO
FROM SPJ
WHERE JNO='J1'
(2)求供应工程 Jl 零件 Pl 的供应商号码 SNO ;
SELECT DIST SNO
FROM SPJ
WHERE JNO='J1' AND PNO='P1'
(3)求供应工程 Jl 零件为红色的供应商号码 SNO ;
SELECT SNO
FROM SPJ,P
WHERE JNO='J1' AND COLOR='红' AND SPJ.PNO=P.PNO
(4)求没有使用天津供应商生产的红色零件的工程号 JNO ;
SELECT JNO
FROM J
WHERE JNO NOT IN
(SELECT JNO
FROM SPJ,P,S
WHERE S.CITY='天津' AND COLOR='红' AND S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)
(5)求至少用了供应商 Sl 所供应的全部零件的工程号 JNO ;
SELECT JNO
FROM SPJ X
WHERE NOT EXISTS
(SELECT * FROM SPJ Y
WHERE Y.SNO='S1' AND NOT EXISTS
(SELECT * FROM SPJ Z
WHERE X.JNO = Z.JNO AND Y.PNO=Z.PNO))
1、设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
对于 S 表: S ( SNO , SNAME , STATUS , CITY ),分别为供应商号码、供应商名、供应商状态、供应商所在城市;
对于 P 表: P ( PNO , PNAME , COLOR , WEIGHT ),分别为零件号码、零件名、颜色、重量;
对于 J 表: J ( JNO , JNAME , CITY),分别为工程号、工程项目名、工程项目所在城市;
对于 SPJ 表: SPJ ( SNO , PNO , JNO , QTY),分别为供应商号码、零件号码、工程号、供应数量。
针对建立的4个表,完成以下操作:
(1)把全部红色零件的颜色改成蓝色。
(2)由S5供给J4的零件P6改为由S3供应。
(3)从供应商关系中删除供应商号码是S2的记录,并从供应情况关系中删除相应的记录。
(4)请将(S2,J6,P4,200)插入供应情况关系。
正确答案:
(1)把全部红色零件的颜色改成蓝色。
UPDATE P SET COLOR='蓝'
WHERE COLOR='红'
(2)由S5供给J4的零件P6改为由S3供应。
UPDATE SPJ SET SNO='S3'
WHERE SNO='S5' AND JNO='J4' AND PNO='P6'
(3)从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。
A、DELETE FROM SPJ WHERE SNO='S2'
B、DELETE FROM S WHERE SNO='S2'
(4)请将(S2,J6,P4,200)插入供应情况关系。
INSERT INTO SPJ VALUES('S2','J6','P4',200)
2、设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
对于 S 表: S ( SNO , SNAME , STATUS , CITY ),分别为供应商号码、供应商名、供应商状态、供应商所在城市;
对于 P 表: P ( PNO , PNAME , COLOR , WEIGHT ),分别为零件号码、零件名、颜色、重量;
对于 J 表: J ( JNO , JNAME , CITY),分别为工程号、工程项目名、工程项目所在城市;
对于 SPJ 表: SPJ ( SNO , PNO , JNO , QTY),分别为供应商号码、零件号码、工程号、供应数量。
请为三建工程项目建立一个供应情况的视图VSP,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
针对该视图VSP完成下列查询:
(1)找出三建工程项目使用的各种零件代码及其数量。
(2)找出供应商S1的供应情况。
正确答案:
建立供应情况的视图:
CREATE VIEW VSP AS
SELECT SNO,PNO,QTY
FROM SPJ,J
WHERE SPJ.JNO=J.JNO AND J.JNAME='三建'
(1)找出三建工程项目使用的各种零件代码及其数量。
SELECT PNO,QTY FROM VSP
(2)找出供应商S1的供应情况。
SELECT * FROM VSP WHERE SNO='S1'
请用SQL的GRANT 语句(加上视图机制)完成以下授权定义或存取控制功能:
(1)用户王明对两个表有SELECT 权力。
(2)用户李勇对两个表有INSERT 和DELETE 权力。
(3)用户刘星对职工表有SELECT 权力,对工资字段具有更新权力。
(4)用户张新具有修改这两个表的结构的权力。
(5)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。
(6)用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资 。
正确答案:
(1)用户王明对两个表有SELECT 权力。
GRANT SELECT ON 职工,部门
TO 王明
(2)用户李勇对两个表有INSERT 和DELETE 权力。
GRANT INSERT,DELETE ON 职工,部门
TO 李勇
(3)用户刘星对职工表有SELECT 权力,对工资字段具有更新权力。
GRANT SELECT,UPDATE(工资) ON 职工
TO 刘星
(4)用户张新具有修改这两个表的结构的权力。
GRANT ALTER TABLE ON 职工,部门
TO 张新;
(5)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。
GRANT ALL PRIVILEGES ON 职工,部门
TO 周平
WITH GRANT OPTION;
(6)用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
CREATE VIEW 部门工资(部门名称,最高工资,最低工资,平均工资)
AS
SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM 职工,部门
WHERE 职工.部门号=部门.部门号
GROUP BY 部门.名称
GRANT SELECT ON 部门工资
TO 杨兰;
某公司要对其投放的自动售货机建立商品管理系统,其数据库的部分关系模式如下:
售货机:VEM(VEMno,Location),各属性分别表示售货机编号、部署地点;
商品:GOODS(Gno,Brand,Price),各属性分别表示商品编号、品牌名和价格;
销售单:SALES(Sno,VEMno,Gno,SDate,STime),各属性分别表示销售号、售货机编号、商品编号、日期和时间;
缺货单:OOS(VEMno,Gno,SDate,STime),各属性分别表示售货机编号、商品编号、日期和时间。
相关关系模式的属性及说明如下:
(1)售货机摆放固定种类的商品,售货机内每种商品最多可以储存10件。管理员在每天结束的时候将售货机中所有售出商品补全。(2)每售出一件商品,就自动向销售单中添加一条销售记录。如果一天内某个售货机上某种商品的销售记录达到10条,则表明该售货机上该商品已售完,需要通知系统立即补货,通过自动向缺货单中添加一条缺货记录来实现。
根据以上描述,回答下列问题。
【问题1】(3分)
请将下面创建销售单表的SQL语句补充完整,要求指定关系的主码和外码约束。
CREATE TABLE SALES(
Sno CHAR(8) ( a )__________ ,(1分)//主码定义
VEMno CHAR(5),
Gno CHAR(8),
SDate DATE, STime TIME,
( b )____________________ ,(1分) //外码定义,关联VEM关系中的VEMno
( c )____________________ (1分)); //外码定义,关联GOODS关系中的Gno
【问题2】(3分)
查询当天销售最多的商品编号和数量。程序中的GetDate()获取当天日期。
SELECT Gno, ( d )_____________ (1分)
FROM SALES
WHERE SDate =GetDate()
GROUP BY ( e )_____________ (1分)
HAVING ( f )_____________ (1分)
(SELECT count( * ) FROM SALES WHERE SDate = GetDate() GROUP BY Gno);
【问题3】(4分)
查询一件都没有售出的所有商品编号和品牌,将下面SQL语句的空缺部分补充完整并写出关系表达式。
SELECT Gno,Brand FROM GOODS
WHERE Gno ( g )_____________ (1分)
(SELECT DISTINCT Gno
FROM ( h )_____________ )(1分)
关系表达式:( i )__________________________ (2分)
【问题4】(9分)
(1)查询“光明”品牌的商品编号和价格。写出SQL语句及关系表达式。(4分)
(2)查询编号为“V0001”的售货机所销售的商品的编号、价格、日期和时间。写出SQL语句及关系表达式。(5分)
【问题5】(3分)
创建销售记录详单视图 SALES_Detail ,要求按日期统计每个售货机上各种商品的销售数量,属性有 VEMno、Location、Gno、Brand、Price、amount和SDate。为方便实现,首先建立一个视图SALES_Total,然后利用SALES_Total完成视图SALES_Detail的定义。
CREATE VIEW SALES _Total(VEMno,Gno,SDate,amount) AS
SELECT VEMno,Gno,SDate,count(*)
FROM SALES
GROUP BY VEMno,Gno,SDate;
CREATE VIWE ( j ) _____________ AS (1分)
SELECT VEM.VEMno,Location,GOODS.Gno,Brand,Price,amount,SDate
FROM VEM,GOODS,SALES_Total
WHERE ( k ) _____________ AND ( l ) _____________ (2分)
【问题6】(4分)
(1)向OOS表中插入一条缺货记录,各字段值为:售货机编号:V0001,商品编号:PR020001,日期:2018-4-16,时间:09:01,写出SQL语句(2分)
(2)从VEM表中删除部署地点为是“南李路”的所有元组,写出SQL语句。(2分)
【问题7】(2分)
授予user1对SALES表的SELECT权限,并允许他再将此权限授予其他用户;收回user2用户对GOODS表的修改权限,写出相应的SQL语句。
正确答案:
【问题1】请将下面创建销售单表的SQL语句补充完整,要求指定关系的主码和外码约束。
CREATE TABLE SALES(
Sno CHAR(8) ( a )__________ ,(1分)//主码定义
VEMno CHAR(5),
Gno CHAR(8),
SDate DATE, STime TIME,
( b )____________________ ,(1分) //外码定义,关联VEM关系中的VEMno
( c )____________________ (1分)); //外码定义,关联GOODS关系中的Gno
(a) primary key (1分)
(b)foreign key (VEMno) references VEM(VEMno) (1分)
( c ) foreign key (Gno) references GOODS(Gno) (1分)
【问题2】查询当天销售最多的商品编号和数量。程序中的GetDate()获取当天日期。
SELECT Gno, ( d )_____________ (1分)
FROM SALES
WHERE SDate =GetDate()
GROUP BY ( e )_____________ (1分)
HAVING ( f )_____________ (1分)
(SELECT count( * ) FROM SALES WHERE SDate = GetDate() GROUP BY Gno);
(d) count( * ) (1分)
(e) Gno (1分)
(f) count( * )>=ALL (1分)
【问题3】查询一件都没有售出的所有商品编号和品牌,将下面SQL语句的空缺部分补充完整并写出关系表达式。
SELECT Gno,Brand FROM GOODS
WHERE Gno ( g )_____________ (1分)
(SELECT DISTINCT Gno
FROM ( h )_____________ )(1分)
关系表达式:( i )__________________________ (2分)
(g)NOT IN (1分)
(h) SALES (1分)
(i) πGno,Brand((πGno(GOODS)-πGno(SALES))∞GOODS) (2分)
【问题4】
(1)查询“光明”品牌的商品编号和价格。写出SQL语句及关系表达式。(4分)
(2)查询编号为“V0001”的售货机所销售的商品的编号、价格、日期和时间。写出SQL语句及关系表达式(不要漏掉关系表达式)。(5分)
(1)
SELECT Gno,Price
FROM GOODS
WHERE Brand ='光明' (2分)
评分标准:写出SELECT和FROM子句1分,WHERE子句1分
πGno,Price(σBrand =‘光明’ (GOODS)) (2分)
(2)
SELECT GOODS.Gno, Price, SDate, STime
FROM GOODS,SALES
WHERE GOODS.Gno = SALES.Gno and VEMno = 'V0001' (3分)
评分标准:写出SELECT和FROM子句2分,WHERE子句1分
πGNO, Price, SDate, STime(σVEMno =‘V0001’ (GOODS∞SALES)) (2分)
【问题5】创建销售记录详单视图 SALES_Detail ,要求按日期统计每个售货机上各种商品的销售数量,属性有 VEMno、Location、Gno、Brand、Price、amount和SDate。为方便实现,首先建立一个视图SALES_Total,然后利用SALES_Total完成视图SALES_Detail的定义。
CREATE VIEW SALES _Total(VEMno,Gno,SDate,amount) AS
SELECT VEMno,Gno,SDate,count(*)
FROM SALES
GROUP BY VEMno,Gno,SDate;
CREATE VIWE ( j ) _____________ AS (1分)
SELECT VEM.VEMno,Location,GOODS.Gno,Brand,Price,amount,SDate
FROM VEM,GOODS,SALES_Total
WHERE ( k ) _____________ AND ( l ) _____________ (2分)
(j) SALES_Detail(VEMno,Location,Gno,Brand,Price,Amount,SDate) (1分)
(k)VEM.VEMno=SALES_Total.VEMno (1分)
(l) GOODS.Gno=SALES_Total.Gno (1分)(k和l位置可以调换)
【问题6】
(1)向OOS表中插入一条缺货记录,各字段值为:售货机编号:V0001,商品编号:PR020001,日期:2018-4-16,时间:09:01,写出SQL语句(2分)
(2)从VEM表中删除部署地点为是“南李路”的所有元组,写出SQL语句。(2分)
(1) insert into OOS VALUES(‘V0001’, ‘PR020001’, ‘2018-4-16’, ‘09:01’) (2分)
(2) delete from VEM where Location =‘南李路’ (2分)
【问题7】授予user1对SALES表的SELECT权限,并允许他再将此权限授予其他用户;收回user2用户对GOODS表的修改权限,写出相应的SQL语句。
grant select
on sales
to user1
with grant option
revoke update
on goods
from user2
已知工程关系R(工程号,材料号,数量,开工日期,完工日期,价格)
业务规则如下:
●每个工程有一个开工日期和一个完工日期;
●每个工程可用多种材料,每种材料可用于多个工程,每个工程使用的每种材料有一定的数量;
●每种材料仅有一个价格。
试回答下列问题:
(1) 根据上述规定,写出关系模式R的函数依赖图;
(2) 找出关系模式R的候选码;
(3) 试问关系模式R是否属于2NF?请简要说明理由;
(4) 针对R关系,对于会产生的问题,举例说明其中的两个问题;
(5) 如果R不属于BCNF,请将R分解成BCNF,并指出分解后各关系模式的主码。
(2)候选码:(工程号,材料号)
(3)R不属于2NF,因为存在非主属性对码的部分函数依赖,即价格、开工日期、完工日期部分函数依赖于码。
(4)插入异常:一个工程刚成立,还未购买材料,工程信息无法插入
删除异常:删除材料信息,同时也把工程信息一并删除了
修改复杂:修改工程的开工日期,相应该工程的多个元组均需修改
数据冗余度大:一个工程用多少材料,工程的工程号、开工日期、完工日期就要重复多少次
评分标准:会产生插入异常、删除异常、修改复杂和数据冗余过大的问题,针对其中任两个问题举例说明即可给分。
(5)
R1(工程号,开工日期,完工日期)
R2(工程号,材料号,数量)
R3(材料号,价格)
答题模板:因为存在非主属性对码的(部分/传递)依赖,所以为第(一/二)范式。
某医院病房计算机管理中需要如下信息:
科室:科名,科地址,科电话
病房:病房号,床位数
医生:姓名,职称,年龄,工作证号
病人:病历号,姓名,性别,诊断
其中,一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个,而且一个病人只能住在一个病房中,一个病房可以有多个病人入住。
完成如下设计:
(1)设计该计算机管理系统的E-R图。
(2)将该E-R图转换为关系模型结构,并指出转换结果中每个关系模式的候选码。
(2)
科室(科名,科地址,科电话)
病房(病房号,床位数,科室名)
医生(工作证号,姓名,职称,年龄,科室名)
病人(病历号,姓名,性别,诊治,医生工作证号,病房号)
1.简答题。(1)创建表hbase_goods,表中有两个列族:computer和food。
(2)向表中添加如图所示的food列族的数据。
(3)查看表中的所有数据。
(4)假设表中还有其他数据,查询RowKey以“goods01”开头的数据。
(5)假设表中还有其他数据,查询name列的数据。
(6)删除RowKey以“goods01”开头的数据。
正确答案:
(1)
create 'hbase_goods', {NAME=>'computer'}, {NAME=>'food'}
(2)
put 'hbase_goods', 'goods01001','food:name','orange'
put 'hbase_goods', 'goods01001','food:price','4.5'
(3)
scan 'hbase_goods'
(4)
scan 'hbase_goods',FILTER=>"PrefixFilter('goods01')"
(5)
scan 'hbase_goods', FILTER=>"QualifierFilter(=,'binary:name')"
(6)
deleteall 'hbase_goods', {ROWPREFIXFILTER => 'goods01'}