增加一个表:借阅表(读者编号、图书编号)
增加一个表:读者-作者表(读者编号、作者编号)
增加一个表:借阅表(读者编号、图书编号、作者编号)
增加两个表:借阅表(读者编号、图书编号),读者-作者表(读者编号、作者编号)
第1题:
( 2 )现 有某图书销售数据库,其关系表结构如下:
图书表(图书编号,图书名称,出版社编号,出版社名称,出版时间,出版数量,版次)
图书销售表(图书编号,销售日期,销售数量,书店编号,读者编号,读者姓名,读者电话)
书店表(书店编号,联系电话,所在城市编号,城市名称)
该系统所涉及的数据存在如下约束:
I. 一个出版社可以出版多本图书,一本图书只能在一个出版社出版,在该系统中记录的图书出版信息包括出版时间、版次及出版数量信息;
II. 一个书店可以出售多本图书给多个读者 , 每位读者可以从多个书店购买多本图书 , 一本图书可以通过多个书店出售给读者,书店把图书出售给读者后会在系统中记录售书日期和售书数量信息;
III. 每个书店只能位于一个城市,一个城市可以有多个书店。
① 请根据以上信息画出合理的图书销售数据库的概念模型(用 ER 图表示)。( 8 分)
② 以图书销售表为例说明原数据库设计的不合理之处。( 4 分)
③ 给出该数据库符合 3NF 要求的全部关系模式,并指出关系模式中的全部主码和外码。( 8 分)
第2题:
对于图书管理数据库,查询0001号借书证的读者姓名和所借图书的书名。下面SQL语句正确的是______。 SELECT 姓名,书名 FROM 借阅,图书,读者 WHERE; 借阅,借书证号=“0001”AND;
A.图书.总编号=借阅.总编号AND读者.借书证号=借阅.借书证号
B.图书.分类号=借阅.分类号AND读者.借书证号=借阅.借书证号
C.读者.总编号=借阅.总编号AND读者.借书证号=借阅.借书证号
D.图书.总编号=借阅.总编号AND读者.书名=借阅.书名
第3题:
第 ( 30 ) 到第( 35 )题基于图书表、读者表和借阅表三个数据库表,它们的结构如下:
图书 ( 图书编号 , 书名 , 第一作者 , 出版社 ) :图书编号、书名、第一作者和出版社为 C 型字段,图书编号为主关键字;
读者 ( 借书证号 , 单位 , 姓名 , 职称 ) :借书证号、单位 、姓名、职称为 C 型字段,借书证号为主关键字;
借阅 ( 借书证号 , 图书编号 , 借书日期 . 还书日期 ) : 借书证号和图书 编号为 C 型字段 ,借 书日期和还书日期为 D 型字段,还书日期默认值为 NULL ,借书证号和图书编号共同构成主关键字 。
( 30 )查询第一作者为 “ 张三 ” 的所有书名及出版社,正确的 SQL 语句是
A ) SELECT 书名,出版社 FROM 图书 WHERE 第一作者=张三
B ) SELECT 书名,出版社 FROM 图书 WHERE 第一作者二 " 张三 "
C ) SELECT 书名,出版社 FROM 图书 WHERE " 第一作者 " =张三
D ) SELECT 书名,出版社 FROM 图书 WHERE " 第一作者 "=" 张三 "
第4题:
查询“上海”作者出版的图书情况,要求包含作者姓名、书名和价格信息,并按图书“价格”降序排列,下列SQL语句中正确的是( )。
A.SELECT 姓名,书名,价格 FROM 图书,作者; JOIN 图书.作者编号=作者.作者编号; WHERE所在城市="上海"; ORDER BY 价格 DESC
B.SELECT 姓名,书名,价格 FROM 图书,作者; JOIN 图书.作者编号=作者.作者编号; ON 所在城市="上海"; ORDER BY 价格
C.SELECT 姓名,书名,价格 FROM 图书,作者; WHERE 图书.作者编号=作者.作者编号; AND 所在城市="上海"; ORDER BY 价格 DESC
D.SELECT 姓名,书名,价格 FROM 图书,作者; WHERE 图书.作者编号=作者.作者编号; AND 所在城市="上海"; ORDER BY 价格
第5题:
有如下SQL语句:
SELECT读者.姓名,读者.职称,图书.书名,借阅.借书日期;
FROM图书管理!读者,图书管理!借阅,图书管理!图书;
WHERE借阅.借书证号=读者.借书证号;
AND图书.总编号=借阅.总编号
其中WHERE子句中的“借阅.借书证号=读者.借书证号”对应的关系操作是( )。
第6题:
设有图书管理数据库,包含三张表:图书明细表(图书编号,图书类别,图书名称,作者,出版社,出版日期,定价);读者表(借书证号,姓名,系别,办证日期);借出信息表(借出编号,借书证号,图书编号,借书日期);完成下列操作:(10分)定义一个多语句表值函数,用于查询学生借书情况,只需提供参数:借书证号,就可以通过调用函数返回此学生的借书情况,若有借书籍,则返回所借书籍的编号、书籍名称、定价和借书日期;若没有在借书籍,则返回记录为空。设函数名为:f_BorrowBook(@jszh char(20))。
第7题:
第 36~43 题时用如下的3个表。
假没图书管理数据库中有3个表,图书.dbf、读者.dbf和借阅.dbf。
图书.dbf的结构如下:
图书(总编号C(6)。分类号C(8).书名C(16),作者C(6),出版单位C(20),单价N(6,2))读者.dbf的结构如下:
读借(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20))
借阅.dbf的结构如下:
借阅(借书证号C(4),总编号C(6),借书日期D(8))
第 36 题 在上述图书管理数据库中,图书的主索引是总编号,读者的主索引是借书证号,借阅的主索引应该是( ) 。
【您的答案】
空
【参考解析】:总编号+借书证号或借书证号+总编号【解析】主索引保证惟一性。
第8题:
( 35 )查询所有 “ 工程师 ” 读者借阅过的图书编号,正确的 SQL 语句是
A ) SELECT 图书编号 FROM 读者 , 借阅 WHERE 职称 =" 工程师 "
B ) SELECT 图书编号 FROM 读者 , 图书 WHERE 职称 =" 工程师 "
C ) SELECT 图书编号 FROM 借阅 WHERE 图书编号 =
( SELECT 图书编号 FROM 借阅 WHERE 职称 =" 工程师 " )
D ) SELECT 图书编号 FROM 借阅 WHERE 借书证号 IN
( SELECT 借书证号 FROM 读者 WHERE 职称 =" 工程师 " )
第9题:
查询北京作者出版的图书情况,要求包含作者姓名、书名和价格信息,并按图书价格降序排列,下列SQL语句正确的是
作者 作者编号 作者姓名 所在城市
1001 王力 北京
1002 刘方 北京
1003 张剑 上海
1004 程红 上海
1005 张进 上海
图书 图书编号 书名 出版单位 价格 作者编号
0001 计算机应用 清华出版社 26.50 1001
0002 C++ 电子工业出版社 32.00 1001
0003 计算机基础知识 电子工业出版社 28.00 1002
0004 网络应用 清华出版社 24.50 1003
0005 数据库应用 清华出版社 26.00 1003
0006 数据库组成原理 清华出版社 23.00 1003
0007 Java 电子工业出版社 27.50 1004
0008 网页设计 电子工业出版社 31.00 1004
A.SELECT 作者姓名,书名,价格 FROM 图书,作者 ; JOIN 图书.作者编号=作者.作者编号; WHERE 所在城市="北京"; ORDER BY 价格 DESC
B.SELECT 作者姓名,书名,价格 FROM 图书,作者 ; JOIN 图书.作者编号=作者.作者编号; WHERE 所在城市="北京"; ORDER BY 价格
C.SELECT 作者姓名,书名,价格 FROM 图书,作者 ; WHERE 图书.作者编号 = 作者.作者编号; AND 所在城市="北京"; ORDER BY 价格 DESC
D.SELECT 作者姓名,书名,价格 FROM 图书,作者 ; WHERE 图书.作者编号 = 作者.作者编号; AND 所在城市 ="北京"; ORDER BY 价格
第10题:
求至少出版3本以上图书的作者姓名及数量,下列SQL语句正确的是( )。
A.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; HAVING COUNT(*)>=3
B.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; GROUP BY 图书.作者编号 HAVING COUNT(*)>=3
C.SELECT姓名,COUNT(*) AS 数量 FROM 图书,作者; FOR 作者.作者编号=图书.作者编号; WHERE 图书.作者编号 HAVING COUNT(*)>=3
D.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; GROUP BY 图书.作者编号 SET COUNT(*)>=3