图书管理系统综合习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图书管理系统综合习题-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
图书管理系统
1 需求说明(分用户分解各项功能)
图书管理系统包括图书管理,学生借阅图书管理两大功能,具体的业务功能为:
管理员进行新书入库
管理员对图书基本信息进行修改
管理员记录学生的借书信息和还书信息
管理员对图书基本信息进行查询
管理员对图书的借出还入情况进行查询
管理员对学生的借书还书信息进行查询
管理员对学生的基本信息进行查询
2 数据库设计
2.2 实体属性分析
由图1所示的E-R模型转换成的关系模式如下:
读者(借书证号,姓名,性别,年龄,住址),借书证号设为主键;
图书(图书编号,图书名,图书作者,图书价格,图书类别,出版日
期,出版社),图书编号设为主键;
2.1 数据库概念模型设计(E-R模型)
经过分析,一个学生可以借阅多本图书,一本图书也可以被多个
系统包含的实体有学生和图书,两个实体之间通过借阅发生联系,联系的类型为多对多。其对应的E-R模型如图1所示。
图1 系统E-R模型
2.3 数据库逻辑模型设计
根据数据库逻辑结构设计结果,在SQL Server2005数据库管理系统中,创建Library数据库,并在该数据库中创建3张数据表,分别为学生表student、图书表book、借阅表borrow,表结构如表1至表3所示。
表1 读者表reader
表2 图书表book
确认转换生成的3个关系模式都符合第三范式。
3 SQL语句练习
1. 写出创建学生表student、借阅表borrow的SQL语句。
2. 查询每个学生的基本信息,按学号升序排序。
3. 查询每个学生的借阅情况(学号、姓名、书号、借书日期、还书日期),包括没有借书的学生的借阅情况。
4. 查询每本图书被借阅的情况,包括没有被借阅的图书情况。
5. 查询同名的图书。
6. 查询借阅过“高等教育出版社”出版的图书的学生信息。
7. 查询没有借过书的学生信息。
8. 查询图书的总册数、最高价、最低价、总价值和平均价。
9. 查询定价在30到40元之间的图书信息。
10. 查询书名以“数据库”起始的图书信息。
11. 统计各出版社图书的数量。
12. 统计每本书的借阅次数。
13. 查询每本书的基本信息,按价格降序排序。
14. 统计每个学生的借书数量。(包括已经还的书和正在借的书)
15. 将“人民邮电出版社”出版的图书的价格减少3元。
16. 删除没有人借阅的图书信息。
17. 删除图书“数据库基础及应用”的借阅信息。
18. 创建一个视图,查询每个男生的借阅情况(学号,书号,借书日期,还书日期)。然后使用该视图,统计每个男生的借书数量。(包括已经还的书和正在借的书)
1. 写出创建读者表reader、图书表book、借阅表borrow的SQL语句。CREATE TABLE student (
ReaderId char (12) PRIMARY KEY,
Sname varchar (10) NOT NULL,
Ssex char (2) default '男',
Sbirthday datetime,
Saddress varchar (50)
)
CREATE TABLE book (
Bno varchar(20) PRIMARY KEY,
Bname varchar(20) NOT NULL,
Bauthor varchar(20),
Bprice tinyint,
Bcategory varchar(10),
Bpressday datetime,
Bpress varchar(10)
)
CREATE TABLE borrow (
Bno varchar(20),
ReaderId char(12),
Borrowday datetime,
Returnday datetime,
PRIMARY KEY (Bno,ReaderId,Borrowday),
FOREIGN KEY (Bno )
REFERENCES book(Bno ),
FOREIGN KEY (ReaderId)
REFERENCES student(ReaderId)
)
2. 查询每个学生的基本信息,按学号升序排序。
select * from student
order by ReaderId
3. 查询每个学生的借阅情况(学号、姓名、书号、借书日期、还书日期),包括没有借书的学生信息。
select s.ReaderId,sname,bno,borrowday,returnday
from student s left join borrow on s.ReaderId=borrow.ReaderId
4. 查询每本图书被借阅的情况,包括没有被借阅的图书情况。
select * from book b left join borrow on b.bno=borrow.bno
5. 查询同名的图书。
select distinct b1.bno,b1.bname from book b1 join book b2 on =
6. 查询借阅过“高等教育出版社”出版的图书的学生信息。
select * from student s join on borrow on s.ReaderId=borrow.ReaderId
join on book b on b.bno=borrow.bno
where bpress='高等教育出版社'
7. 查询没有借过书的学生信息。
select * from student
where ReaderId not in(select distinct ReaderId from borrow)
8. 查询图书的总册数、最高价、最低价、总价值和平均价。
select count(bno),max(bprice),min(bprice),sum(bprice),avg(bprice)
from book
9. 查询定价在30到40元之间的图书信息。
select * from book
where bprice between 30 and 40
10. 查询书名以“数据库”起始的图书信息。
select * from book
where bname like '数据库%'