问题 问答题

【说明】
设有下列关于图书借阅系统的E—R图。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列SQL语言建立了基本表:
CREATE TABLE Readers
(Rao CHAR(6) PRIMARY KEY,
Rname CHAR(20) NOT NULL,
Raddress CHAR(200),
Rphone CHAR(15));
CREATE TABLE Books
(Brio CHAR(6) PRIMARY KEY,
Rname CHAR(50) NOT NULL);
CREATE TABLE Administrators
(Ano CHAR(6) PRIMARY KEY,
Aname CHAR(20) NOT NULL);
CREATE TABLE Borrows
(Rno CHAR(6) NOT NULL,
Bno CHAR(15) NOT NULL,
Ano CHAR(6) NOT NULL,
Bdate DATE,
Rdate DATE,
PRIMARY KEY(Rno,Bno,Ano),
FOREGIN KEY(Rno) REFERENCE Readers(Rno),
FOREGIN KEY(Bno) REFERENCE Book(Bno)
FOREGIN KEY(Ano) REFERENCE Administrators(Ano));
CREATE TABLE Readers
(Rao CHAR(6) PRIMARY KEY,
Rname CHAR(20) NOT NULL,
Raddress CHAR(200),
Rphone CHAR(15));
CREATE TABLE Books
(Brio CHAR(6) PRIMARY KEY,
Rname CHAR(50) NOT NULL);
CREATE TABLE Administrators
(Ano CHAR(6) PRIMARY KEY,
Aname CHAR(20) NOT NULL);
CREATE TABLE Borrows
(Rno CHAR(6) NOT NULL,
Bno CHAR(15) NOT NULL,
Ano CHAR(6) NOT NULL,
Bdate DATE,
Rdate DATE,
PRIMARY KEY(Rno,Bno,Ano),
FOREGIN KEY(Rno) REFERENCE Readers(Rno),
FOREGIN KEY(Bno) REFERENCE Book(Bno)
FOREGIN KEY(Ano) REFERENCE Administrators(Ano));
为了答题的方便,图中的实体和属性同时给出了中英文两种名字,回答问题时只需写出英文名即可。
【系统E-R图】
1. 【问题1】
填写下列SQL程序中的(1)~(6),使它们分别完成相应的功能。
程序1:查没有借阅过编号为111111图书的所有读者名单。


SELECT Rno,Rname,address,phone
FROM Readers
WHERE Rno (1)
(SELECT (2)
FROM Borrow
WHERE Bno=’llllll’);程序2:统计在2005年1月1日借书的读者人数。
SELECT (3)
FROM Borrow
WHERE (4) ;程序3:查借书证号为123456的读者所借过的所有图书。
SELECT Bno,Bname
FROM Books
WHERE (5)
(SELECT *
FROM Borrow
WHERE (6) AND Rno=’123456’;

答案

参考答案:不能。表Borrow中,借书证号Rno、管理员工作证号Ano和图书书号Bno共同组成主码,因此不允许有两个在主码上完全相同的元组(行)存在,也就是不允许同一读者从同一管理员处多次借阅同一本书。

解析:

[分析]:
主码是惟一识别表中记录的属性。在一个表中,不允许有两个在主码上完全相同的元组(行)存在。表Borrow中,借书证号Rno、管理员工作证号Ano和图书书号Bno共同组成主码,所以不允许由任意两行在这三个属性上的值都完全相同,也就是不允许同一读者从同一管理员处多次借阅同一本书。

单项选择题 A1型题
判断题