本文档是关于使用SQL Server进行数据库课程设计的一个实例,具体为图书馆管理系统。这个系统旨在模拟真实图书馆的功能,包括读者借阅、归还、续借图书,以及查询借阅和检索图书信息等。系统由多个数据表构成,如Book(图书信息)、Dept(学生系部)、Major(学生专业)、Student(学生信息)、StudentBook(学生借阅图书信息)、Teacher(教师信息)、TeacherBook(教师借阅图书信息)和RDeleted(读者还书信息)。
图书馆管理系统的主要功能如下:
1. **读者借阅图书**:通过执行存储过程`Execute RBorrowBook '读者号','图书分类号'`,读者可以借阅图书,但前提是图书馆有库存,并且满足借阅限制。
2. **读者归还图书**:使用`Execute RReturnBook '读者号','图书分类号'`,读者可以归还已借阅的图书,归还信息会被记录在RDeleted表中。
3. **读者续借图书**:`Execute RRenewBook '读者号','图书分类号'`允许读者续借图书,但续借次数有限制。
4. **查询借阅图书情况**:`Execute RQueryBook '读者号'`可以让读者查询自己的借阅状态。
5. **检索图书信息**:`Execute RIndexBook '关键字'`帮助读者查找特定的图书信息。
系统还包含了附加功能,例如:
1. **插入系部和专业信息**:在Student表中新增列"系部"和"专业号",分别存储学号中对应的系部和专业信息。
2. **查询学生借阅数量**:可以查询每个学生的借阅图书数量。
3. **统计专业借阅数量**:能显示各专业学生的图书借阅总数。
系统通过触发器来确保数据的完整性和一致性:
1. **tri_Book**:检查图书库存,只有库存充足时才能借阅。
2. **tri_SborrowNum**:限制学生最大借阅量为5本。
3. **tri_SrenewBook**:限制学生续借次数不超过3次。
4. **tri_SreturnBook**:将还书信息存入RDeleted表。
5. **tri_TborrowNum**:教师最大借阅量为10本。
6. **tri_TrenewBook**:教师续借次数上限为4次。
7. **tri_TreturnBook**:记录教师的还书信息。
图书馆管理系统E-R图显示了实体之间的关系,如教师和学生的借阅关系是分开处理的,考虑到教师的借阅期限和数量不同。学生信息包含学号、系部编号和专业编号,表明学生与系部和专业之间的联系。
此课程设计提供的源代码包括数据库创建脚本、数据表定义、存储过程和触发器,分别在第六章到第七章中列出,方便读者理解和学习。虽然设计可能较为基础,但已经实现了一套基本的图书馆管理功能,对于初学者来说是很好的实践案例。