图书管理系统数据库设计_MYSQL实现
- 格式:doc
- 大小:492.50 KB
- 文档页数:21
图书管理系统数据库设计说明书图书管理系统数据库设计说明书1、引言本文档旨在对图书管理系统的数据库设计进行详细说明,包括数据库架构、表结构设计、数据流图等内容,以便于系统开发人员进行系统开发和维护。
2、数据库架构设计2.1 数据库类型本系统将采用关系型数据库,具体使用的数据库管理系统为MySQL。
2.2 数据库服务器架构本系统将采用分布式数据库架构,包括一个主数据库服务器和多个副本数据库服务器。
2.3 数据库服务器部署主数据库服务器和副本数据库服务器将部署在不同的物理机器上,以实现数据的冗余备份和负载均衡。
3、数据库表设计3.1 用户表(User)字段:用户ID、用户名、密码、姓名、年龄、性别、联系方式、电子邮箱、注册时间3.2 图书表(Book)字段:图书ID、图书名称、作者、出版社、出版日期、图书类别、价格、库存数量3.3 图书借阅表(Borrow)字段:借阅ID、用户ID、图书ID、借阅日期、归还日期、借阅状态3.4 图书类别表(Category)字段:类别ID、类别名称、类别描述3.5 出版社表(Publisher)字段:出版社ID、出版社名称、联系方式、地质4、数据流图设计4.1 用户注册流程图描述用户注册过程,包括用户输入信息、系统验证信息、保存用户信息等流程。
4.2 用户借阅图书流程图描述用户借阅图书的过程,包括用户查找图书、用户借阅图书、系统更新库存数量等流程。
4.3 用户归还图书流程图描述用户归还图书的过程,包括用户查找借阅记录、用户归还图书、系统更新借阅状态等流程。
5、附件本文档附带的相关附件包括:- 数据库表结构设计文档- 数据流图设计文档- ER图设计文档6、法律名词及注释本文档涉及的法律名词及其注释如下:- 数据库管理系统(Database Management System,简称DBMS):是一种管理和整理数据库的软件系统。
- 关系型数据库(Relational Database):是一种基于关系模型的数据库,采用表格来组织和管理数据。
图书管理系统数据库设计一、系统概述1、系统简介图书管理是每个图书馆都需要进行的工作。
一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利。
2、需求分析图书管理系统的需求定义为:1.学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息。
2.当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅,同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息。
3.学生借阅图书之前需要将自己的个人信息注册,登陆时对照学生信息。
4.学生直接归还图书,根据图书编码修改借阅信息5.管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息6.管理员可以注销学生信息。
通过需求定义,画出图书管理系统的数据流图:数据流图二、系统功能设计三、数据库设计方案图表1、系统E-R模型总体E-R图:管理员E-R图:给出设计的表名、结构以及表上设计的完整性约束。
student:book:book_sort:borrow:存储学生的借书信息return_table:存储学生的归还信息ticket:存储学生的罚单信息manager:3、设计索引给出在各表上建立的索引以及使用的语句。
student:1.为stu_id创建索引,升序排序sql:create index index_id on student(stu_id asc);2.为stu_name创建索引,并且降序排序sql:alter table student add index index_name(stu_name, desc);插入索引操作和结果如下所示:mysql> create index index_id on student(stu_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> alter table student add index index_name(stu_name desc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql>book:1.为book_id创建索引,升序排列sql:create index index_bid on book(book_id);2.为book_record创建索引,以便方便查询图书的登记日期信息,升序:sql:create index index_brecord on book(book_record);插入索引的操作和结果如下所示:mysql> create index index_bid on book(book_id);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> create index index_brecord on book(book_record);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0borrow:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on borrow(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid on borrow(stu_id asc, book_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0return_table:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on return_table(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid_r onreturn_table(stu_id asc, book_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0ticket:1. 为stu_id和book_id创建多列索引:sql:create index index_sid_bid on ticket(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid on ticket(stu_id asc, book_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0manager:1.为manager_id创建索引:sql:create index index_mid on manager(manager_id);插入索引的操作和结果如下所示:mysql> create index index_mid on manager(manager_id);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 04、设计视图给出在各表上建立的视图以及使用的语句。
设计一个简单的MySQL数据库表,以存储用户的图书收藏信息为例:
表名: user_book_collection
字段:
1.id:主键,自增,用于唯一标识每条记录。
er_id:用户ID,外键,关联用户表。
3.book_title:图书标题,字符串类型,用于存储图书的名称。
4.author:作者,字符串类型,用于存储图书的作者姓名。
5.publication_date:出版日期,日期类型,用于存储图书的出版日期。
6.isbn:国际标准书号,字符串类型,用于存储图书的唯一标识码。
7.added_date:添加日期,日期时间类型,用于记录用户将图书添加到收藏的
时间。
索引:
1.主键索引:id字段。
2.外键索引:user_id字段,关联用户表。
3.联合索引:user_id和book_title字段,用于优化根据用户ID和图书标题
的查询性能。
示例SQL语句创建表:
这个表可以存储用户的图书收藏信息,包括每本图书的标题、作者、出版日期、ISBN号以及用户添加该图书到收藏的时间。
通过外键关联用户表,可以实现查询
某个用户的全部图书收藏。
同时,使用联合索引可以提高根据用户ID和图书标题查询的效率。
基于PHP+MySQL图书管理系统设计与实现一、引言随着信息技术的快速发展,图书管理系统在图书馆及各类图书机构中发挥着重要的作用。
采用计算机技术构建图书馆管理系统能够提高管理效率,减轻工作负担,并且便于读者查找所需图书资源。
本文将介绍一种基于PHP+MySQL的图书管理系统的设计与实现。
二、系统需求分析1. 功能需求本图书管理系统需要包含以下基本功能:(1) 图书信息管理:包括图书的录入、修改、删除和查询等操作。
(2) 读者信息管理:包括读者的注册、登录、修改个人信息等操作。
(3) 图书借阅管理:包括图书借阅、归还、续借等操作,并能记录借阅历史。
(4) 图书馆管理员管理:包括管理员的注册、登录、权限管理等操作。
(5) 报表统计功能:能够统计图书借阅情况、读者借阅排行等数据。
2. 性能需求系统应具备以下性能要求:(1) 快速响应:系统具备快速响应读者和管理员的请求,保证系统流畅运行。
(2) 数据安全性:系统需要采用安全机制,保护图书和读者的信息。
(3) 扩展性:系统应具备良好的扩展性,以便后续对功能进行拓展。
三、系统设计与实现1. 开发环境本系统采用PHP语言作为开发语言,结合MySQL数据库进行数据存储。
开发环境采用Apache服务器,支持HTTP协议。
2. 数据库设计(1) 图书表(Book):包含图书的编号、名称、作者、出版社等属性。
(2) 读者表(Reader):包含读者的编号、姓名、性别、年龄等属性。
(3) 借阅表(Borrow):包含借阅记录的编号、图书编号、读者编号、借阅日期、归还日期等属性。
(4) 管理员表(Admin):包含管理员的编号、用户名、密码等属性。
3. 页面设计(1) 登录页面:读者和管理员可以分别通过用户名和密码登录系统。
(2) 图书查询页面:包含图书名称、作者等查询条件,可以根据条件查询所需图书。
(3) 借阅页面:读者可以查询和借阅图书,并记录借阅信息。
(4) 归还页面:读者可以查询自己借阅的图书,并进行归还操作。
基于JSP的图书管理系统设计与实现随着互联网技术的不断发展,基于Web的应用程序越来越普及,而JSP(JavaServer Pages)技术是其中最常用的一种。
本文将介绍如何使用JSP技术设计和实现一个图书管理系统。
一、系统需求分析图书管理系统需要满足以下需求:1、用户可以查看图书列表、搜索图书、添加图书、编辑图书和删除图书。
2、管理员可以查看用户列表、添加用户、编辑用户和删除用户。
3、系统需要提供用户登录和权限管理功能。
二、系统设计1、数据库设计本系统采用MySQL数据库。
数据库中包含以下表:1、book:存储图书信息,包括book_id、title、author、publisher、price、isbn等字段。
2、user:存储用户信息,包括user_id、username、password、role 等字段。
3、login_log:存储用户登录日志,包括user_id、login_time等字段。
2、系统架构设计本系统采用MVC模式进行设计,分为模型层、视图层和控制层。
模型层负责处理数据和业务逻辑,视图层负责展示页面,控制层负责控制流程。
3、系统功能模块设计本系统分为以下几个模块:1、用户模块:包括用户注册、登录、找回密码等功能。
2、图书模块:包括查看图书列表、搜索图书、添加图书、编辑图书和删除图书等功能。
3、权限模块:包括权限控制和角色管理等功能。
4、日志模块:包括查看登录日志等功能。
三、系统实现1、用户模块实现用户模块主要包括用户注册、登录和找回密码等功能。
在JSP页面中,可以使用HTML表单来接收用户输入的信息,然后通过JSP代码将信息提交给Servlet进行处理。
在Servlet中,可以使用Java代码对用户输入的信息进行验证,并将验证结果返回给JSP页面进行展示。
2、图书模块实现图书模块主要包括查看图书列表、搜索图书、添加图书、编辑图书和删除图书等功能。
在JSP页面中,可以使用HTML表格来展示图书列表,使用HTML表单来接收用户的搜索信息,使用JSP代码将信息提交给Servlet进行处理。
图书管理系统设计与实现引言随着信息技术的发展,图书馆管理系统得到了越来越广泛的使用和推广。
现代化的图书馆管理系统能够方便读者的借阅、查询和归还,同时对于图书馆的工作人员来说,能够快速、准确地管理图书信息。
因此,本论文旨在设计并实现一款功能完善、便捷高效的图书馆管理系统。
1.需求分析本系统的主要使用场景是图书馆。
在实际使用过程中,学生、教职工等读者可以通过该系统完成图书查询、借阅、归还等操作。
图书馆管理人员可通过该系统进行图书的登记、归还、维护等操作。
对于本系统的需求分析主要包括以下几点:1.1 用户登陆用户可以通过该系统进行登陆,包括普通读者和图书馆管理人员。
根据用户的角色不同,有不同的权限。
读者仅可查询和借阅图书,而图书馆管理员可以进行图书的登记、管理等操作。
1.2 图书查询用户可以通过搜索框或是其他筛选条件来查询相关图书的信息,例如书名、作者、出版社、ISBN号等。
图书查询的结果应该能够按照一定的分页方式展现在页面中。
1.3 图书借阅读者可以通过该系统进行图书借阅,选中需要借阅的图书,填写相关信息并借出。
借阅的图书数量、时间、归还日期等相关信息需要及时更新到数据库中。
1.4 图书归还读者在借阅图书之后需按照规定的时间归还图书。
在本系统中,读者可以在“我的借阅”页面中看到自己借阅的图书且可以进行归还。
归还成功后,本系统会在数据库中进行相应信息更新。
1.5 图书管理图书馆管理员可以在该系统中进行图书的管理,包括图书登记、归还等操作。
管理员可以通过输入图书的基本信息来添加新的图书到数据库中,同时可以对图书信息进行修改。
当图书被借阅或归还时,管理员可以及时更新该图书的状态。
1.6 数据统计本系统需要实现数据统计的功能,包括借阅情况、图书数量统计等。
管理员可以通过该系统获得数据统计的结果,来进行更好的管理。
2.系统设计本系统采用B/S结构,使用Java语言编写后端代码,使用HTML、CSS、JavaScript等技术进行前端设计。
图书管理系统数据库设计报告版本历史目录0. 文档介绍 (4)文档目的 (4)文档范围 (4)读者对象 (4)参考文献 (4)术语与缩写解释 (4)1. 数据库环境说明 (4)2. 数据库的命名规则 (5)3.概念设计 (6)4. 逻辑设计 (6)5.物理模型 (8)表汇总 (8)表U SERS (9)表U SER R OLE (9)表U SER R IGHTS (10)表O VER L IMIT R ECORD (10)表L OST R ECORD (10)表O RDER R ECORD (11)表B ORROW R ECORD (11)表B OOK (11)表L IABRARY (12)表B OOK C ATEGORY (13)表B OOK K IND (13)表S YSTEM L OG (13)6. 安全性设计 (14)防止用户直接操作数据库的方法 (14)用户帐号密码的加密方法 (14)角色与权限 (14)7. 优化 (14)8. 数据库管理与维护说明 (15)数据库日常检查 (15)数据库备份方案 (16)9.数据库对象 (16)0. 文档介绍文档目的本文档为图书管理系统的数据库设计文档,主要介绍系统的数据库设计,给出了系统的逻辑设计和物理设计,同时给出了数据库环境的说明,确定了数据库命名规则,给出了数据库的优化方案、安全性设计方案和数据库维护、管理等内容,本文档可作为项目开发人员在数据库实现时的参考和规范。
文档范围本文档适用于项目开发的设计阶段,在项目开发阶段可按照本文档检验数据库的实施情况。
读者对象1.图书管理系统的开发人员2.指导老师3.图书管理系统的测试人员4.图书管理系统的客户参考文献【01】王珊萨师煊,《数据库系统概论》,高等教育出版社,2006-05-04术语与缩写解释1. 数据库环境说明数据库系统:MySQL数据库设计工具:Power Designer编程工具:Power Designer详细配置:2. 数据库的命名规则数据库涉及字符规则采用26个英文字母(区分大小写)和0 -9这十个自然数,加上下划线_组成,共63个字符。
mysql数据库设计案例MySQL数据库设计案例。
一、背景介绍。
MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的开发中。
在实际的项目开发中,数据库设计是至关重要的环节,良好的数据库设计可以提高系统的性能和可维护性。
本文将通过一个实际的案例,介绍MySQL数据库设计的一般步骤和注意事项。
二、案例描述。
假设我们要设计一个图书管理系统的数据库,该系统需要记录图书的基本信息、借阅情况以及读者信息。
在这个案例中,我们将介绍如何设计图书管理系统的数据库结构。
三、数据库设计步骤。
1.需求分析。
首先,我们需要对系统的需求进行分析,包括需要存储哪些数据、数据之间的关系以及系统的功能需求。
在图书管理系统中,我们需要存储图书信息、读者信息以及借阅记录,这些数据之间存在着明确的关系。
2.概念设计。
在概念设计阶段,我们需要将需求转化为数据库模型。
在图书管理系统中,我们可以将图书信息、读者信息和借阅记录分别抽象为图书、读者和借阅三个实体,它们之间存在着一定的关联关系。
3.逻辑设计。
在逻辑设计阶段,我们需要将概念模型转化为数据库表结构。
对于图书管理系统,我们可以设计图书表、读者表和借阅记录表,其中图书表和读者表之间可能存在着一对多的关系,而借阅记录表则需要记录借阅的时间、归还的时间等信息。
4.物理设计。
在物理设计阶段,我们需要考虑具体的数据库实现,包括数据类型的选择、索引的设计以及性能优化等方面。
对于MySQL数据库,我们需要选择合适的数据类型来存储不同的数据,同时考虑如何优化查询性能。
四、数据库设计注意事项。
1.合理选择数据类型。
在设计数据库表结构时,需要根据实际情况选择合适的数据类型,避免浪费存储空间或者造成数据溢出的问题。
2.建立索引。
对于经常需要进行查询的字段,可以考虑建立索引来提高查询性能,但需要注意不要过度索引,以免影响写入性能。
3.遵循范式。
在设计数据库表结构时,需要遵循范式规范,避免数据冗余和更新异常。
数据库课程设计报告专业:微电子技术系班级:2940710820姓名:指导教师:成绩:2011年12月12日一、课程设计概述1.课程设计背景某大学图书馆开发一个图书管理系统,要求在读者登记处可以将读者的信息添加,信息系统中保存,当读者信息发生变化,对计算机内容进行修改,当读者办理退卡手续要删除此读者信息,图书管理负责图书和出版社的管理,读书借还处进行借书管理,还书管理,罚款处理,库存查询,图书排行榜,生成超期未还书的读者,进行通知.给不同用户设置不同权限,供用户访问数据库.2.编写目的让学生熟练掌握mysql中的创建数据库、创建表、显示、查询、select语句、视图、存储过程、创建检索、对表的添加、删除、修改和用户权限的设置等基本运用,并通过编写这个图书管理系统,来实际演练,达到融会贯通的效果。
3.软件定义Mysql是目前最流行的开源的中小型关系数据管理系统,目前被广泛的应用于internet 上得中小型网站中,它由mysql AB公司开发、发布并支持。
本实验用的是mysql 5.1版本4.开发环境本实验用的是mysql 5.1版本,windows2007二、需求分析1.问题的提出1:怎么通过mysql和信息之间的关系来创建图书管理系统的数据库及表?2:怎样来实现对插入读者信息并保存、修改及删除?3:怎么来实现对图书的管理?4:怎样实现对借书后在读书借还处添加读者借书信息和还书后删除读者借还处中的借书信息且更新图书管理处的图书数量?5:怎么实现对超期读者进行罚款操作和生成这些读者的名单,以方便通知?6:怎样实现图书的借书排行榜和查看库存书量?7:怎么样来根据不同用户对数据库的等级的不同来设置这些用户的权限?2.需要完成的功能及各部分功能概述1:读者登记建卡处的功能是对读者基本信息进行登记,读者信息发生变化对读者基本信息进行修改,读者要求退还借书卡时对读者信息进行删除等操作2:图书管理处的功能是对图书和出版社、作者、书价,数量,剩余书量进行管理更新。
图书管理系统的设计与实现随着图书馆规模的不断扩大和图书种类的日益增多,传统的手工管理模式已经无法满足现代图书馆管理的需求。
因此,开发一款图书管理系统变得尤为重要。
本文将重点介绍图书管理系统的设计与实现图书管理模块的设计。
一、图书管理系统设计1、系统架构图书管理系统采用B/S架构,由服务器、数据库和客户端组成。
服务器负责处理请求并提供数据存储和备份服务;数据库负责存储图书信息、借阅信息等数据;客户端负责提供用户界面,用户可以通过浏览器访问系统。
2、功能模块图书管理系统主要包括以下几个功能模块:(1)登录模块:管理员输入用户名和密码,系统验证其合法性并分配权限。
(2)图书管理模块:包括图书分类、添加图书、编辑图书信息、删除图书等操作。
(3)借阅管理模块:包括借书、还书、续借、借阅查询等操作。
(4)用户管理模块:包括添加用户、编辑用户信息、删除用户等操作。
(5)系统管理模块:包括数据备份、数据恢复、日志管理等操作。
二、图书管理模块设计1、图书分类图书分类是图书管理系统的核心之一,它将图书按照一定的标准进行划分,便于管理员对图书进行查找和管理。
在本系统中,我们将按照国家规定的分类标准进行分类,同时支持自定义分类。
2、添加图书添加图书模块允许管理员在系统中添加新的图书信息,包括书号、书名、作者、社、时间、分类等信息。
管理员可以通过批量导入或单个添加的方式完成图书信息的录入。
3、编辑图书信息编辑图书信息模块允许管理员修改已添加的图书信息,包括书号、书名、作者、社、时间、分类等信息。
管理员可以修改已有的图书信息,也可以更新图书的分类信息。
4、删除图书删除图书模块允许管理员删除已添加的图书信息。
删除时需要确认删除操作,防止误删。
同时支持批量删除功能,提高删除效率。
5.其他操作除了以上基本操作外,本系统还支持一些其他的操作,如查找图书、导出Excel表格等。
查找功能可以帮助管理员快速定位到目标图书;导出Excel表格可以将图书信息导出成Excel文件,方便管理员进行其他数据处理和数据分析。
基于MySQL的图书馆信息管理系统设计一、本文概述明确本文的研究目标,即设计一个基于MySQL的图书馆信息管理系统,并介绍研究的主要内容。
1、1随着信息技术的飞速发展,图书馆作为知识的宝库,其管理效率和服务质量的高低直接影响着读者的阅读体验。
传统的图书馆管理模式已经难以满足现代图书馆高效、精准、便捷的管理需求。
因此,开发一套基于MySQL的图书馆信息管理系统显得尤为重要。
本文旨在探讨基于MySQL的图书馆信息管理系统的设计,包括系统架构、功能模块、数据库设计等,以期提高图书馆的管理效率和服务水平,为读者提供更加优质的阅读服务。
MySQL作为一种广泛使用的开源关系型数据库管理系统,具有性能稳定、可靠性高、易用性强等特点,非常适合用于构建图书馆信息管理系统。
通过MySQL,我们可以实现图书信息的存储、查询、更新、删除等操作,从而实现对图书馆资源的有效管理和利用。
本文首先对图书馆信息管理系统的需求进行分析,明确系统的功能模块和数据库设计;详细介绍系统的架构设计和数据库设计,包括数据库表的创建、索引优化、数据备份与恢复等;对系统的实现进行阐述,并给出相应的结论和展望。
通过本文的研究,我们可以为图书馆信息管理系统的设计提供有益的参考和借鉴,推动图书馆管理向数字化、智能化方向发展,为广大读者提供更加便捷、高效的服务。
2、2在设计基于MySQL的图书馆信息管理系统之前,对系统需求进行深入分析是至关重要的。
通过需求分析,我们可以明确系统的功能要求、性能要求以及用户界面的需求,从而确保最终设计出的系统能够满足图书馆的实际工作需求。
我们需要明确图书馆信息管理系统的核心功能。
这包括但不限于图书的借阅与归还、图书信息的查询与更新、读者的信息管理、图书的采购与入库等。
系统还应支持对图书借阅情况的统计与分析,以便图书馆能够及时了解图书的流通情况,为图书采购和管理提供数据支持。
性能需求方面,系统需要保证高可用性、稳定性和安全性。
Java+Mysql课程设计图书管理系统实验报告需求报告说明书软件工程自查报告。
课程名称,Java+Mysql课程设计。
课程性质,软件工程。
课程内容,图书管理系统。
一、需求报告说明书。
在本次课程设计中,我负责设计和实现图书管理系统的需求报告说明书。
在编
写需求报告说明书的过程中,我首先对图书管理系统的功能进行了分析和整理,明确了系统需要实现的基本功能和扩展功能。
其次,我根据用户的需求和系统的特点,设计了系统的用例图和用例描述,明确了系统各个功能模块的具体功能和交互流程。
最后,我对系统的非功能性需求进行了详细的描述,包括性能、安全性、可靠性等方面的要求。
通过编写需求报告说明书,我深入理解了图书管理系统的需求和设计思路,为后续的系统设计和实现奠定了基础。
二、实验报告。
在课程设计的实验阶段,我负责实现图书管理系统的后端功能,包括数据库设计、数据表的创建和管理、后台接口的设计和实现等工作。
在实验过程中,我充分运用了Java和Mysql的知识,熟练掌握了数据库的设计和管理技术,实现了系统
的数据存储和管理功能。
同时,我还结合软件工程的理论知识,采用了模块化和面向对象的设计思想,使系统的代码结构清晰、易于维护和扩展。
通过实验报告的编写,我总结了系统的设计思路、实现过程和遇到的问题,对系统的优化和改进提出了建设性的意见和建议。
通过本次课程设计,我不仅深入学习了Java和Mysql的知识,还加深了对软件工程理论的理解和应用。
我相信这次课程设计的经历将对我的未来学习和工作产生积极的影响。
图书管理系统数据库设计一、系统概述1、系统简介图书管理是每个图书馆都需要进行的工作。
一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利。
2、需求分析图书管理系统的需求定义为:1.学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息。
2.当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅,同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息。
3.学生借阅图书之前需要将自己的个人信息注册,登陆时对照学生信息。
4.学生直接归还图书,根据图书编码修改借阅信息5.管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息6.管理员可以注销学生信息。
通过需求定义,画出图书管理系统的数据流图:数据流图二、系统功能设计画出系统功能模块图并用文字对各功能模块进行详细介绍。
三、数据库设计方案图表1、系统E-R模型2、设计表给出设计的表名、结构以及表上设计的完整性约束。
student:book_sort:ticket_fee float null 处罚金额列名数据类型是否为空/性质说明manager_id varchar not null / PK 管理员编号manager_name varchar not null 管理员manager_age varchar not null 管理员年龄manager_phone varchar not null 管理员3、设计索引给出在各表上建立的索引以及使用的语句。
student:1.为stu_id创建索引,升序排序sql:create index index_id on student(stu_id asc);2.为stu_name创建索引,并且降序排序sql:alter table student add index index_name(stu_name, desc);插入索引操作和结果如下所示:mysql> create index index_id on student(stu_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> alter table student add index index_name(stu_name desc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql>book:1.为book_id创建索引,升序排列sql:create index index_bid on book(book_id);2.为book_record创建索引,以便方便查询图书的登记日期信息,升序:sql:create index index_brecord on book(book_record);插入索引的操作和结果如下所示:mysql> create index index_bid on book(book_id);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> create index index_brecord on book(book_record);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0borrow:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on borrow(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid on borrow(stu_id asc, book_id asc); Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0return_table:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on return_table(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid_r on return_table(stu_id asc, book_id asc); Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0ticket:1. 为stu_id和book_id创建多列索引:sql:create index index_sid_bid on ticket(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid on ticket(stu_id asc, book_id asc); Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0manager:1.为manager_id创建索引:sql:create index index_mid on manager(manager_id);插入索引的操作和结果如下所示:mysql> create index index_mid on manager(manager_id);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 04、设计视图给出在各表上建立的视图以及使用的语句。
1.在表student上创建计算机专业(cs)学生的视图stu_cs:sql: create view stu_cs asselect *from studentwhere pro = ‘cs’;操作和结果:mysql> create view stu_cs asselect *from studentwhere stu_pro = 'cs';Query OK, 0 rows affected2. 在表student, borrow和book上创建借书者的全面信息视图stu_borrow:sql: create view stu_borrow asselect student.stu_id, book.book_id, student.stu_name, book.book_name, borrow_date,adddate(borrow_date,30) expect_return_datefrom student, book, borrowwhere student.stu_id = borrow.stu_id and book.book_id = borrow.book_id;操作和结果:mysql> create view stu_borrow asselect student.stu_id, book.book_id, student.stu_name, book.book_name, borrow_date,adddate(borrow_date,30) expect_return_datefrom student, book, borrowwhere student.stu_id = borrow.stu_id and book.book_id = borrow.book_id;Query OK, 0 rows affected3.创建类别1的所有图书的视图cs_book:sql: create view cs_book asselect *from bookwhere book.book_sort in(select book_from book_sortwhere sort_id = 1);操作和结果显示:mysql> create view cs_book asselect *from bookwhere book.book_sort in(select book_sort.sort_namefrom book_sortwhere sort_id = 1);Query OK, 0 rows affected4.创建个人所有借书归还纪录视图stu_borrow_return:sql:create view stu_borrow_return asselect student.stu_id, student.stu_name, book.book_id, book.book_name,return_table.borrow_date,return_table.return_datefrom student, book, return_tablewhere student.stu_id = return_table.stu_id and book.book_id = return_table.book_id;5、设计触发器给出在各表上建立的触发器以及使用的语句。
1.设计触发器borrow, 当某学生借书成功后,图书表相应的图书不在架上,变为0:sql:create trigger borrowafter insert on borrowfor each rowbeginupdate book set book_num = book_num – 1where book_id = new.book_id;end操作与结果显示:mysql> delimiter $$mysql> create trigger trigger_borrow-> after insert on borrow-> for each row-> begin-> update book set book_num = book_num - 1-> where book_id = new.book_id;-> end-> $$Query OK, 0 rows affected在插入表borrow之前,book_id = 1 的图书还在架上,为1:学生1借了这本书后,在borrow中插入了一条记录:在borrow中插入这条记录后,book_id =1的图书,不在架上,为0:2.设计触发器trigger_return,还书成功后,对应的书籍book_num变为1:sql:create trigger trigger_returnafter insert on return_tablefor each rowbeginupdate book set book_num = book_num + 1where book_id = new.book_id;end还书时在return_table插入表项:此时图书归还架上:3.定义定时器(事件)eventJob,每天自动触发一次,扫描视图stu_borrow,若发现当前有预期归还时间小于当前时间,则判断为超期,生成处罚记录,这个定时器将每天定时触发存储过程proc_gen_ticket:sql:create event if not exists eventJobon schedule every 1 DAY /*每天触发*/on completion PRESERVEdo call proc_gen_ticket(getdate()); /*调用存储过程*/set global event_scheduler = 1;alter event eventJob on completion preserve enable; /*开启定时器*/操作和结果显示:1). 学生1借了图书1,生成借书记录stu_borrow视图,如下:2). 当他在1月27日前还书时,没有生成罚单:3). 当他在1月27日后还书时,生成罚单:4.设计触发器trigger_credit,若处罚记录超过30条,则将这个学生的诚信级设置为0,下次不允许借书:sql:create trigger trigger_creditafter insert on ticketfor each rowbeginif (select count(*) from ticket where stu_id=new.stu_id)>30 thenupdate student set stu_integrity = 0 where stu_id = new.stu_id;end if;end操作和结果显示,测试时选择插入ticket项大于3,因为30太大了,不容易测试:学生1超过3次超期归还图书后,产生了4条罚单:此时触动触发器trigger_credit,将学生1的诚信级设置为0:四、应用程序设计与编码实现1、系统实现中存储函数和存储过程的设计要求给出功能描述和代码。