数据库大作业--图书管理系统.doc
精选优质文档-倾情为你奉上图书管理系统需求分析v 信息需求: 为了加强图书的管理,设计图书管理系统,方便用户借阅、管理员管理,减少管理员的工作量。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)v 处理需求:1 借阅功能:可以方便地借阅图书、续借图书、归还图书2 查询功能:按图书编号查找图书、按图书名称查找图书、按图书作者查找图书、能够按照自己的图书证编号查询自己的状态信息3 读者注册功能:能够对新的读者进行登记,或注销读者的信息4 图书录入功能:能够将新到的图书信息输入到系统的图书信息库中5 统计功能:按图书编号统计书籍数量、按图书名称统计数量、按作者统计书籍数量v 安全性需求1 管理员的权限最高,可以查询、修改借阅关系表、管理员_书籍表、管理员_读者表2 读者,可以查看图书基本信息、个人自己的借阅信息。不可以对其中的信息进行添加、修改等操作。v 完整性需求1 在图书管理信息表中,书号、书名、作者、出版社、出版日期、简介输入信息的时候都有类型、长度要求。书号、书名、作者不能为空,其中书号为主码2 在读者信息表中,其中的各类信息都有类型、长度要求。读者编号、读者姓名、读者性别、所在系不能为空,读者编号为主码3 在管理员信息表中,其中的各类信息都有类型、长度要求。工作号、姓名、性别不能为空,工作号为主码4 在借阅关系表中,其中的各类信息都有类型、长度要求,且均不可为空。工作号、书号为外码5 在管理员_书籍表中,其中的各类信息都有类型、长度要求。工作号、书号不能为空,且为外码6 在管理员_读者表中,其中的各类信息都有类型、长度要求,均不可为空。 工作号、读者编号为外码 v 程序流程图 借 阅所借图书管 理 图书管理员判断图书 是否在馆 图 书借 阅 读 者 图1读者借阅图书,系统查询图书是否在馆。若已借出,显示借出;未借出进行下一步,图书管理员将书借出并登记相关信息。v 数据流图管理员顶层数据流图 添加图书 图书信息读者 借出信息图书管理系统读者 借书 图书 还书 拒绝信息 修改信息 查询管理员 图2第0层数据流图借书 所借图书信息 借书借书审核 借书 拒绝借书 库存信息查询 借书信息 查询信息还书审核 还书 违章情况 图3第一层数据流图建 档读者编号 第一次借书 借书信息 借书 编号修改图书信息 存在 借出图书借书审核 借书累计过多、无库存 拒绝借出 库存信息 图4.借书的数据流图还书审核 还书修改图书信息 借书信息 库存信息图5.还书的数据流图使用者 查询要求查询选择图书统计查询读者信息图书信息查询 借书信息表 库存图书信息表 查询结果使用者图6.查询的数据流图 v 数据字典1 数据项数据项名数据项含义说明数据类型长度与其他数据项的逻辑关系读者编号读者相关信息整型10决定要借阅的图书读者姓名读者相关信息字符型6 读者性别读者相关信息字符型2联系电话读者相关信息整型7所在系读者相关信息字符型10书名图书相关信息字符型20作者图书相关信息字符型6出版社图书相关信息字符型20管理员工作号管理员相关信息整型10管理图书的借还管理员姓名管理员相关信息字符型6管理员性别管理员相关信息字符型2借书日期借书相关信息整型10还书日期借书相关信息整型102 数据结构数据结构名含义说明组成图书信息表定义图书的相关信息简介、出版日期、出版社、作者、书名、书号读者信息表定义读者的相关信息姓名、性别、读者编号、所在系、联系电话管理员信息表定义管理员的相关信息姓名、性别、电话、工资、工作号借阅关系表定义借阅图书的相关信息借书日期、还书日期、工作号、书号、是否续借、读者编号管理员_书籍信息表定义管理员与图书的有关信息工作号、书号、添加时间、是否在馆管理员_读者信息表定义管理员与学生的有关信息工作号、读者编号、借还确认、违章情况、累计借书3 数据流数据流名来源去向组成借书读者、图书借书审核读者编号、书名、读者姓名、借书日期还书图书、读者还书审核读者编号、书名、还书日期4 数据存储数据存储名组成借书信息姓名、性别、读者编号、所在系、联系电话、管理员姓名库存信息简介、出版日期、出版社、作者、书名、书号、是否在馆5 处理过程处理过程名含义说明输入输出借书过程查看图书是否被借出图书信息借阅信息还书过程查看借阅图书的信息读者信息图书信息概念结构设计v 局部E-R图1 读者借阅图书一个读者可以借阅多本书籍(1:m)一本图书可以被一个读者借阅(1:1)联系电话读者编号简介出版日期借书日期 姓名作者 m 1违章数 读 者 图 书借阅性别书名所在系还书日期累计借书书号出版社 图1. 借阅关系ER图2 管理员管理读者 一个图书管理员可以管理多个读者(1:n) 一个读者信息只能被一个图书管理员管理(1:1)联系电话工资读者编号电 话 姓名性别 1 n违章数 读 者 管理员管理性别姓名所在系借还确认累计借书工作号图2. 管理员_读者关系ER图3 管理员管理图书 一本图书可以被多个图书管理员管理(1:n) 一个图书管理员可以管理多本图书(1:m)简介出版日期添加时间 电话作者 m n工资 管理员 图 书管理工作号书名性别是否在馆姓名 书号出版社 图3 管理员_图书关系ER图 v 全局E-R图出版日期还书日期作者 姓名读者编号借书日期简介违章数书名性别书号累计借书 m 1 读 者 图 书借阅出版社联系电话mn,m所在系添加时间工资管理员性别管理员姓名 电话工作号n1 管理员是否在馆确认借还管 理管 理图4.系统全局ER图逻辑概念设计v 将E-R图转化为关系模式1. 读者(读者编号、读者姓名、读者性别、联系电话、所在系、违章情况、累计借书)2. 图书(书号、书名、作者、出版社、出版日期、简介)3. 管理员(工作号、姓名、性别、电话、工资)4. 借阅(读者编号、书号、是否续借、借书日期、还书日期)5. 管理员_图书(工作号、书号、添加时间、是否在馆)6. 管理员_读者(工作号、读者编号、确认借还)v 数据模型优化将数据关系模式优化,最终达到第三范式。优化后的关系模式:1. 读者(读者编号、读者姓名、读者性别、联系电话、所在系、违章情况、累计借书)2. 图书(书号、书名、作者、出版社、出版日期、简介)3. 管理员(工作号、姓名、性别、电话、工资)4. 借阅(读者编号、书号、是否续借、借书日期、还书日期)5. 管理员_图书(工作号、书号、添加时间、是否在馆)6. 管理员_读者(工作号、读者编号、确认借还)物理概念设计v 数据的存储结构根据以上的逻辑概念设计,得出各类数据的存储结构1.图书信息表字段名称数据类型长度约束属性书号char20NOTNULL主码书名char50NOTNULL非主属性作者char20NOTNULL非主属性出版社char50非主属性出版日期data 非主属性简介char200非主属性2.读者信息表字段名称数据类型长度约束属性读者编号char20NOTNULL主码读者姓名char10NOTNULL非主属性读者性别char2NOTNULL非主属性联系电话char10非主属性所在系char20NOTNULL非主属性违章情况char2非主属性累计借书int非主属性3.管理员信息表字段名称数据类型长度约束属性工作号char12NOTNULL主码姓名char20NOTNULL非主属性性别char2NOTNULL非主属性电话char12非主属性工资char12非主属性4借阅关系表字段名称数据类型长度约束属性工作号char12NOTNULL外码书号char20NOTNULL外码读者编号char20NOTNULL非主属性借书日期dataNOTNULL非主属性还书日期dataNOTNULL非主属性是否续借char4NOTNULL非主属性5管理员_图书表字段名称数据类型长度约束属性工作号char12NOTNULL外码书号char20NOTNULL外码添加时间data非主属性是否在馆char14非主属性6.管理员_读者表字段名称数据类型长度约束属性工作号char12NOTNULL外码读者编号char20NOTNULL外码借还确认char4非主属性数据库建立v 建表1 图书信息表BOOK CREATE TABLE BOOK ( 书号 char(20) PRIMARY KEY NOTNULL , 书名 char(50) NOTNULL , 作者 char(20) NOTNULL , 出版社 char(50) 出版日期 data , 简介 char(200) ) ;2 读者信息表STUDENT CREATE TABLE STUDENT ( 读者编号 char(20) PRIMARY KEY NOTNULL , 读者姓名 char(10) NOTNULL , 读者性别 char(2) NOTNULL , 联系电话 char(10) , 所在系 char(20) NOTNULL , 违章情况 char(2) , 借书累计 int ) ;3 管理员信息表MANAGER CREATE TABLE MANAGER ( 工作号 char(12) PRIMARY KEY NOTNULL , 姓名 char(20) NOTNULL , 性别 char(2) NOTNULL , 电话 char(12) , 工资 char(12) ) ;4 借阅关系表 RBCREATE TABLE RB ( 工作号 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 管理员_图书表MBCREATE TABLE MB ( 工作号 char(12) NOTNULL , 书号 char(20) NOTNULL , 添加时间 data , 是否在馆 char(14) , PRIMARY KEY (工作号,书号) , FOREIGN KEY (工作号) REFERENCES (工作号) , FOREIGN KEY (书号) REFERENCES (书号) ) ;6 管理员_读者表 MSCREATE TABLE MS ( 工作号 char(12) NOTNULL , 读者编号 char(20) NOTNULL , 借还确认 char(4) , PRIMARY KEY (工作号,读者编号) , FOREIGN KEY (工作号) REFERENCES (工作号) , FOREIGN KEY (读者编号) REFERENCES (读者编号) ) v 权限1 将图书信息查询权限授给读者S1 GRANT SELECT ON TABLE BOOK TO S12 将图书借阅表、管路员_图书表、管理员_读者表的查询和修改权限授给管理员M1 GRANT UPDATE,SELECT ON TABLE RB,MB, MS TO M1v 视图性别为女的管理员信息表建立工资视图MANAGERWAGECREATE VIEW MANAGERWAGEASSELECT 姓名,性别,工资FROM MANAGERWHERE 性别='女' ;v 触发器 建立管理员工资不足1000元,自动改为1000元的触发器Insert_Or_Update_Wage CREATE TRIGGER Insert_Or_Update_Wage BEFORE INSERT OR UPDATE ON MANAGER FOR EACH ROW AS BEGIN IF (new.Professinal='管理员' ) AND (new.工资< 1000) ) THEN new.工资 : = 1000 ; END IF ; END ;v 索引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( 姓名) ; 数据库实施v 数据库数据的载入和应用程序的编制调试1 建立数据库的结构 创建数据库,建立数据库中所包含的各个基本表、视图、索引等。利用SQL语句中的CREATE DATABASE、CREATE TABLR、CREATE VIEW、CREATE INDEX命令完成。此系统中需要用这些命令,建立图书信息表、读者信息表、管理员信息表、借阅关系表、管理员_书籍表、管理员_学生表、为性别为女的管理员信息表上建立工资视图、为管理员建立触发器工资不足700,自动改为700元、为表建立索引。2 将原始数据装入数据库原始数据一般都是分散的,而且他们的组织方式、结构和格式都与新设计的数据库系统中的数据有不同程度的区别。必须将数据从各个地方抽出来,输入计算机,并进行分类转换,使他们的结构与新的系统数据库的结构一致,然后才能输入到计算机。先输入少量的数据,等系统正常运行后将所有的原始数据装入到数据库。如果仅仅插入几条,可以用INSERT语句。如果为批量的数据,应设计数据输入子系统来进行数据的输入。v 数据库的试运行所有的程序模块都通过的调试以后,将他们联合起来进行调试,此过程 要测试程序的各功能是否正确 、考察系统的性能是否符合用户的需要。在数据的试运行过程中,应经常对数据库中的数据进行备份。每天进行一次动态增量转储、每星期进行一次动态海量转储、每月进行一次静态海量。 数据库运行与维护v 数据库的转储和恢复DBA定期对数据库进行备份,将其转储到磁盘或其他磁盘上。这样,万一数据库遭到破坏时可以及时地将其恢复。v 数据库的安全性和完整性控制 随着时间的推移,数据库系统的应用环境会发生变化,DBA应根据实际情况调整数据库的安全性和完整性的要求。v 数据库性能的监督、分析和改造在数据库系统的运行过程中,DBA须密切关注系统的性能,监视系统的运行,并对监测数据进行分析,不断改进系统的性能。v 数据库的重组织与重构造在数据库系统的运行过程中,经常会对数据库进行插入、删除和修改等操作。会使数据库的物理存储变坏,影响数据的存取效率和系统的性能。DBA应负责对数据库重新进行组织,即按原设计要求重新安排数据的存储位置、回收垃圾、减少指针链等,以提高数据的存取效率和系统性能。数据库系统的应用环境是不断变化的,常常会出现一些新的应用,也会消除一些旧的应用,导致新的实体的出现和旧实体的淘汰,同时原先实体的属性和实体间的联系也会发生变化。此时需数据库重构造。但重构造是十分有限的,若应用环境变化太大,应淘汰旧系统,设计新的数据库应用系统。专心-专注-专业