当前位置:文档之家› 数据库大作业--图书管理系统

数据库大作业--图书管理系统

图书管理系统需求分析❖信息需求:为了加强图书的管理,设计图书管理系统,方便用户借阅、管理员管理,减少管理员的工作量。

1)主要信息需求1.图书信息:简介、出版日期、出版社、作者、书名、书号2.读者信息:姓名、性别、读者编号、所在系、联系电话3.借阅信息:借书日期、还书日期、工作号、书号、是否续借、读者编号4.管理员信息:姓名、性别、电话、工资、工作号5.管理_书籍信息:工作号、书号、添加时间、是否在馆6.管理_读者信息:工作号、读者编号、借还确认、违章情况、累计借书2)信息间的主要联系1.一个读者可以借阅多本书籍(1:m)2.一本图书可以被一个读者借阅(1:1)3.一个图书管理员可以管理多个读者(1:n)4.一个读者信息只能被一个图书管理员管理(1:1)5.一本图书可以被多个图书管理员管理(1:n)6.一个图书管理员可以管理多本图书(1:m)❖处理需求:1.借阅功能:可以方便地借阅图书、续借图书、归还图书2.查询功能:按图书编号查找图书、按图书名称查找图书、按图书作者查找图书、能够按照自己的图书证编号查询自己的状态信息3.读者注册功能:能够对新的读者进行登记,或注销读者的信息4.图书录入功能:能够将新到的图书信息输入到系统的图书信息库中5.统计功能:按图书编号统计书籍数量、按图书名称统计数量、按作者统计书籍数量❖安全性需求1.管理员的权限最高,可以查询、修改借阅关系表、管理员_书籍表、管理员_读者表2.读者,可以查看图书基本信息、个人自己的借阅信息。

不可以对其中的信息进行添加、修改等操作。

❖完整性需求1.在图书管理信息表中,书号、书名、作者、出版社、出版日期、简介输入信息的时候都有类型、长度要求。

书号、书名、作者不能为空,其中书号为主码2.在读者信息表中,其中的各类信息都有类型、长度要求。

读者编号、读者姓名、读者性别、所在系不能为空,读者编号为主码3.在管理员信息表中,其中的各类信息都有类型、长度要求。

工作号、姓名、性别不能为空,工作号为主码4.在借阅关系表中,其中的各类信息都有类型、长度要求,且均不可为空。

工作号、书号为外码5.在管理员_书籍表中,其中的各类信息都有类型、长度要求。

工作号、书号不能为空,且为外码6.在管理员_读者表中,其中的各类信息都有类型、长度要求,均不可为空。

工作号、读者编号为外码❖ 程序流程图图1 读者借阅图书,系统查询图书是否在馆。

若已借出,显示借出;未借出进行下一步,图书管理员将书借出并登记相关信息。

❖ 数据流图顶层数据流图借出信息借书图书还书 拒绝信息图2第0层数据流图图3第一层数据流图库存信息图4.借书的数据流图借书信息库存信息图5.还书的数据流图查询要求图6.查询的数据流图❖数据字典概念结构设计❖局部E-R图1.读者—借阅—图书一个读者可以借阅多本书籍(1:m)一本图书可以被一个读者借阅(1:1)图1. 借阅关系E—R图2.管理员—管理—读者一个图书管理员可以管理多个读者(1:n)一个读者信息只能被一个图书管理员管理(1:1)图2. 管理员_读者关系E—R图3.管理员—管理—图书一本图书可以被多个图书管理员管理(1:n)一个图书管理员可以管理多本图书(1:m)图3 管理员_图书关系E—R图❖全局E-R图图4.系统全局E—R图逻辑概念设计❖将E-R图转化为关系模式1.读者(读者编号、读者姓名、读者性别、联系电话、所在系、违章情况、累计借书)2.图书(书号、书名、作者、出版社、出版日期、简介)3.管理员(工作号、姓名、性别、电话、工资)4.借阅(读者编号、书号、是否续借、借书日期、还书日期)5.管理员_图书(工作号、书号、添加时间、是否在馆)6.管理员_读者(工作号、读者编号、确认借还)❖数据模型优化将数据关系模式优化,最终达到第三范式。

优化后的关系模式:1.读者(读者编号、读者姓名、读者性别、联系电话、所在系、违章情况、累计借书)2.图书(书号、书名、作者、出版社、出版日期、简介)3.管理员(工作号、姓名、性别、电话、工资)4.借阅(读者编号、书号、是否续借、借书日期、还书日期)5.管理员_图书(工作号、书号、添加时间、是否在馆)6.管理员_读者(工作号、读者编号、确认借还)物理概念设计❖数据的存储结构根据以上的逻辑概念设计,得出各类数据的存储结构1.图书信息表数据库建立❖建表1.图书信息表BOOKCREATE TABLE BOOK( 书号char(20) PRIMARY KEY NOTNULL , 书名char(50) NOTNULL ,作者char(20) NOTNULL ,出版社char(50)出版日期data ,简介char(200)) ;2.读者信息表STUDENTCREATE TABLE STUDENT( 读者编号char(20) PRIMARY KEY NOTNULL , 读者姓名char(10) NOTNULL ,读者性别char(2) NOTNULL ,联系电话char(10) ,所在系char(20) NOTNULL ,违章情况char(2) ,借书累计int) ;3.管理员信息表MANAGERCREATE TABLE MANAGER( 工作号char(12) PRIMARY KEY NOTNULL , 姓名char(20) NOTNULL ,性别char(2) NOTNULL ,电话char(12) ,工资char(12)) ;4.借阅关系表R—BCREATE TABLE R—B( 工作号char(12) NOTNULL ,书号char(20) NOTNULL ,读者编号char(20) NOTNULL ,借书日期data NOTNULL ,还书日期data NOTNULL ,是否续借char(4) NOTNULL,PRIMARY KEY (书号,读者编号) ,FOREIGN KEY (书号) REFERENCES (书号) ,FOREIGN KEY (读者编号) REFERENCES (读者编号) ) ;5.管理员_图书表M—BCREATE TABLE M—B( 工作号char(12) NOTNULL ,书号char(20) NOTNULL ,添加时间data ,是否在馆char(14) ,PRIMARY KEY (工作号,书号) ,FOREIGN KEY (工作号) REFERENCES (工作号) ,FOREIGN KEY (书号) REFERENCES (书号)) ;6.管理员_读者表M—SCREATE TABLE M—S( 工作号char(12) NOTNULL ,读者编号char(20) NOTNULL ,借还确认char(4) ,PRIMARY KEY (工作号,读者编号) ,FOREIGN KEY (工作号) REFERENCES (工作号) ,FOREIGN KEY (读者编号) REFERENCES (读者编号) )❖权限1.将图书信息查询权限授给读者S1GRANT SELECTON TABLE BOOKTO S12.将图书借阅表、管路员_图书表、管理员_读者表的查询和修改权限授给管理员M1GRANT UPDATE,SELECTON TABLE R—B,M—B, M—STO M1❖视图性别为女的管理员信息表建立工资视图MANAGERWAGECREATE VIEW MANAGERWAGEASSELECT 姓名,性别,工资FROM MANAGERWHERE 性别='女' ;❖触发器建立管理员工资不足1000元,自动改为1000元的触发器Insert_Or_Update_WageCREATE TRIGGER Insert_Or_Update_WageBEFORE INSERT OR UPDATE ON MANAGERFOR EACH ROWAS BEGINIF (new.Professinal='管理员' ) AND (new.工资< 1000) ) THEN new.工资: = 1000 ;END IF ;END ;❖索引1.在图书信息表BOOK建立唯一索引B-BOOKNAMECREATE UNIQUE INDEX B-BOOKNAME ON BOOK(书名) ;2.在读者信息表STUDENT建立唯一索引S-STUDENTNOCREATE UNIQUE INDEX S-STUDENTNO ON STUDENT (读者编号ASC) ;3.在图书管理员表MANAGER建立唯一索引M-MANAGERNAME CREATE UNIQUE INDEX M-MANAGERNAME ON MANAGER( 姓名) ;数据库实施❖数据库数据的载入和应用程序的编制调试1.建立数据库的结构创建数据库,建立数据库中所包含的各个基本表、视图、索引等。

利用SQL语句中的CREATE DATABASE、CREATE TABLR、CREATEVIEW、CREATE INDEX命令完成。

此系统中需要用这些命令,建立图书信息表、读者信息表、管理员信息表、借阅关系表、管理员_书籍表、管理员_学生表、为性别为女的管理员信息表上建立工资视图、为管理员建立触发器工资不足700,自动改为700元、为表建立索引。

2.将原始数据装入数据库原始数据一般都是分散的,而且他们的组织方式、结构和格式都与新设计的数据库系统中的数据有不同程度的区别。

必须将数据从各个地方抽出来,输入计算机,并进行分类转换,使他们的结构与新的系统数据库的结构一致,然后才能输入到计算机。

先输入少量的数据,等系统正常运行后将所有的原始数据装入到数据库。

如果仅仅插入几条,可以用INSERT语句。

如果为批量的数据,应设计数据输入子系统来进行数据的输入。

❖数据库的试运行所有的程序模块都通过的调试以后,将他们联合起来进行调试,此过程要测试程序的各功能是否正确、考察系统的性能是否符合用户的需要。

在数据的试运行过程中,应经常对数据库中的数据进行备份。

每天进行一次动态增量转储、每星期进行一次动态海量转储、每月进行一次静态海量。

数据库运行与维护❖数据库的转储和恢复DBA定期对数据库进行备份,将其转储到磁盘或其他磁盘上。

这样,万一数据库遭到破坏时可以及时地将其恢复。

❖数据库的安全性和完整性控制随着时间的推移,数据库系统的应用环境会发生变化,DBA应根据实际情况调整数据库的安全性和完整性的要求。

❖数据库性能的监督、分析和改造在数据库系统的运行过程中,DBA须密切关注系统的性能,监视系统的运行,并对监测数据进行分析,不断改进系统的性能。

❖数据库的重组织与重构造在数据库系统的运行过程中,经常会对数据库进行插入、删除和修改等操作。

会使数据库的物理存储变坏,影响数据的存取效率和系统的性能。

相关主题