数据库图书系统(含代码)
- 格式:doc
- 大小:112.00 KB
- 文档页数:16
图书管理系统数据库设计1. 引言图书管理系统是一个用于管理图书馆馆藏图书的软件系统。
它提供了图书的借阅、归还、查询等功能,方便读者进行图书借阅和图书馆管理员进行图书管理。
本文档将介绍图书管理系统的数据库设计。
通过组织图书、读者、借阅记录等相关数据,实现图书管理系统的各项功能。
2. 数据库设计2.1 数据库结构图书管理系统的数据库主要包含以下几个表:•图书表(books):存储图书的基本信息,如图书编号、名称、作者、出版社等。
•读者表(readers):存储读者的基本信息,如读者编号、姓名、性别、年龄等。
•借阅记录表(borrow_records):存储图书的借阅记录,包括借阅编号、借阅日期、归还日期、读者编号等。
2.2 数据库字段2.2.1 图书表(books)•book_id:图书编号,主键•book_name:图书名称•author:作者•publisher:出版社•publication_date:出版日期•price:价格2.2.2 读者表(readers)•reader_id:读者编号,主键•reader_name:读者姓名•gender:性别•age:年龄•phone:联系电话2.2.3 借阅记录表(borrow_records)•record_id:借阅记录编号,主键•book_id:借阅图书编号,外键•reader_id:借阅读者编号,外键•borrow_date:借阅日期•return_date:归还日期2.3 数据库关系•图书表与读者表之间是多对多的关系,通过借阅记录表进行关联。
•图书表与借阅记录表是一对多的关系,一个图书可以对应多条借阅记录。
•读者表与借阅记录表也是一对多的关系,一个读者可以借阅多本图书。
2.4 数据库约束•图书编号(book_id)在图书表中是唯一的,不能重复。
•读者编号(reader_id)在读者表中是唯一的,不能重复。
•借阅记录编号(record_id)在借阅记录表中是唯一的,不能重复。
图书馆管理系统数据库设计1、系统简要分析1。
1图书资料基本管理(1)、新书编号、登记、入库:将新购入的书籍按照国家统一的分类编号;登记书号、书名、作者、出版社等基本信息,将新购图书入库.(2)、检索查询:按照各种组合条件对书库图书进行查询,也可以进行模糊查询.(3)、图书资料统计:根据要求对图书总数、各类图书数以及图书单价合计统计,打印日常报表。
(4)、旧书出库处理:通过查询确定过期期刊杂志、旧书籍以及由于丢失等其他原因需要从书库中撤销的图书资料,并从书库中撤除。
1.2图书资料借阅管理(1)、借还书管理:主要负责日常的借书登记、还书登记,和逾期未还图书的催还工作。
(2)、检索查询:按照各种组合条件对图书借阅情况查询,也可以进行模糊查询。
(3)、借书统计:统计各类书借阅情况,借阅次数;统计个人借书情况,打印日常报表。
(4)、定期整理图书借阅信息:将还书情况总结整理后彻底删除。
此外,图书管理人员还要定期做整理图书资料的全部图书清单、分类印图书清单、借阅清单以及整理填写各种报表等工作。
2、业务流程分析2。
1 借书业务流程2。
2 新书购进入库业务流程2。
3 还书业务流程2.4 销书业务流程3、数据流程图符号说明:实体处理逻辑数据流数据存储3. 1 系统的总数据流程图3。
2 借书处理数据流程图3。
3 还书处理数据流程图3.4 购书处理数据流程图4、数据字典4.1 数据项的描述数据项名:学号数据项含义说明:学生的唯一编号别名:数据类型:字符型长度:10取值范围:‘0000000000’-‘9999999999’取值说明:第1位为校区代码,2—3位为入学年份,.。
..与其他数据项的关系表4-1 数据项的定义表4-2 数据流的描述表4—3 处理逻辑的描述表4—4 数据存储的描述表4—5 外部实体的描述数据流编号:D1数据流名称:借书单简述:借阅者所要借的图书信息单数据流来源:借阅者数据流去向:借书处理模块数据流组成:图书编号+书名+借阅证号等数据流量:200张/天高峰流量:400张/天数据流编号:D2数据流名称:图书简述:借阅者从图书馆所借的图书数据流来源:借书处理模块数据流去向:借阅者数据流组成:图书编号+图书名+条形码号+出版社+出版日期+入库日期+作者+单价等数据流量:300本/天高峰流量:500本/天数据流编号:D3数据流名称:图书简述:借阅者要准备归还给图书馆的图书数据流来源:借阅者数据流去向:还书处理模块数据流组成:图书编号+图书名+条形码号+出版社+出版日期+入库日期+作者+单价等数据流量:300本/天高峰流量:500本/天数据流编号:D4数据流名称:不合格借书单简述:经借书处理模块验证不合格的借书单数据流来源:借书处理模块数据流去向:借阅者数据流组成:图书编号+书名+借阅证号等数据流量: 50张/天高峰流量:100张/天数据流编号:D5数据流名称:借书清单简述:经借书处理模块处理后的借书情况数据单数据流来源:借书处理模块数据流去向:图书库存情况存档数据流组成:图书编号+图书名+借阅日期+借阅证号+管理员编号等数据流量: 200张/天高峰流量:400张/天数据流编号:D6数据流名称:还书清单简述:还书信息清单数据流来源:还书处理模块数据流去向:图书库存情况存档数据流组成:图书编号+图书名+借阅证号+还书日期+管理员编号等数据流量:150本/天高峰流量:400本/天数据流编号:D7数据流名称:订书单简述:订购新书的信息单数据流来源:采购员数据流去向:购书处理模块数据流组成:图书名+图书数量+价格+采购员姓名+采购单位名称+图书出版社+出版日期等数据流量:1张/3个月高峰流量:1张/月数据流编号:D8数据流名称:购书清单简述:购买图书后的信息单数据流来源:购书处理模块数据流去向:管理员数据流组成:图书名+图书数量+价格+采购员姓名+采购员编号+出版社+出版日期+供货商名称+采购日期等数据流量:1张/3个月高峰流量:1张/月数据流编号:D9数据流名称:入库新书清单简述:准备入库图书信息单数据流来源:管理员数据流去向:新书入库处理模块数据流组成:图书编号+图书名+数量+管理人员编号+入库日期等数据流量:1张/3个月高峰流量:1张/月数据流编号: D10数据流名称:入库清单简述:刚新入库图书的信息单数据流来源:新书入库处理模块数据流去向:图书库存情况存档数据流组成:图书编号+图书名+数量+管理人员编号+入库日期等数据流量:1张/3个月高峰流量:1张/月数据流编号:D11数据流名称:销书计划简述:准备从书库中撤除一部分图书的计划数据流来源:管理员数据流去向:销书处理模块数据流组成:图书编号+图书名称+入库日期+管理员编号+日期+数量等数据流量:1张/6个月高峰流量:1张/月数据流编号:D12数据流名称:销书清单简述:通过销书处理刚从书库中撤除的图书信息单数据流来源:销书处理模块数据流去向:图书库存情况存档数据流组成:图书编号+图书名称+入库日期+管理员编号+出库日期+数量+总价等数据流量:1张/6个月高峰流量:1张/月数据流编号:D13数据流名称:借书单简述:借阅者所要借书的信息单数据流来源:借阅者数据流去向:审核处理模块数据流组成:图书编号+图书名+借阅证号等数据流量:200张/天高峰流量:400张/天数据流编号:D14数据流名称:不合格借书单简述:经审核处理模块处理后,不合格的借书单数据流来源:审核处理模块数据流去向:借阅者数据流组成:图书编号+图书名+借阅证号等数据流量:50张/天高峰流量:100张/天数据流编号:D15数据流名称:合格的借书单简述:经审核处理后符合规定的借书单数据流来源:审核处理模块数据流去向:书借出处理模块数据流组成:图书编号+图书名+借阅证号等数据流量:200张/天高峰流量:400张/天数据流编号:D16数据流名称:借书清单简述:图书馆所借出图书信息单数据流来源:图书借出处理模块数据流去向:图书库存情况存档数据流组成:图书编号+图书名+借阅证号+管理员编号+日期等数据流量:200张/天高峰流量:400张/天数据流编号:D17数据流名称:借书清单简述:图书馆所借出图书信息单数据流来源:图书借出处理模块数据流去向:借阅者借阅情况存档数据流组成:图书编号+图书名+借阅证号+管理员编号+日期等数据流量:200张/天高峰流量:200张/天数据流编号:D18数据流名称:图书简述:借阅者从图书馆借出的图书数据流来源:图书借出处理模块数据流去向:借阅者数据流组成:图书编号+图书名+条形码号+出版社+出版日期+入库日期+作者+单价等数据流量:300本/天高峰流量:500本/天数据流编号:D19数据流名称:图书简述:借阅者准备归还给图书馆的图书数据流来源:借阅者数据流去向:审核处理模块数据流组成:图书编号+图书名+条形码号+出版社+出版日期+入库日期+作者+单价等数据流量:150本/天高峰流量:400本/天数据流编号:D20数据流名称:罚款通知单简述:审核处理后,发现借阅超期或损坏要求罚款的通知单数据流来源:审核处理模块数据流去向:罚款处理模块数据流组成:借阅证号+管理员编号+金额+日期数据流量:20张/月高峰流量:50张/月数据流编号:D21数据流名称:罚款单简述:对借阅者进行罚款的信息单数据流来源:罚款处理模块数据流去向:借阅者数据流组成:借阅证号+管理员编号+金额+日期数据流量:20张/月高峰流量:50张/月数据流编号:D22数据流名称:应付罚款简述:借阅者因借书超期或损坏图书应该作的赔偿数据流来源:借阅者数据流去向:罚款处理模块数据流组成:金额数据流量:40元/月高峰流量:100元/月数据流编号:D23数据流名称:图书简述:罚款处理后准备入库的图书数据流来源:罚款处理模块数据流去向:图书入库处理模块数据流组成:图书编号+图书名+条形码号+出版社+出版日期+入库日期+作者+单价等数据流量:20本/月高峰流量:50本/月数据流编号:D24数据流名称:图书简述:审核处理后合格的图书数据流来源:审核处理模块数据流去向:图书入库处理模块数据流组成:图书编号+图书名+条形码号+出版社+出版日期+入库日期+作者+单价等数据流量:150本/天高峰流量:400本/天数据流编号:D25数据流名称:还书清单简述:所还图书进行入库信息单数据流来源:图书入库处理模块数据流去向:图书库存情况存档数据流组成:图书编号+图书名+管理员编号+日期等数据流量:150本/天高峰流量:400本/天数据流编号:D26数据流名称:还书清单简述:所还图书进行入库信息单数据流来源:图书入库处理模块数据流去向:借阅者借阅情况存档数据流组成:图书编号+图书名+管理员编号+日期等数据流量:150本/天高峰流量:400本/天数据流编号:D27数据流名称:订书单简述:购买图书计划单数据流来源:采购员数据流去向:判定定货处理模块数据流组成:图书名+图书数量+价格+采购员姓名+采购单位名称+图书出版社+出版日期等数据流量:1张/3个月高峰流量:1张/月数据流编号:D28数据流名称:订书单简述:购买图书计划单数据流来源:判定定货处理模块数据流去向:开付款通知单数据流组成:图书名+图书数量+价格+采购员姓名+采购单位名称+图书出版社+出版日期等数据流量: 1张/3个月高峰流量:1张/月数据流编号:D29数据流名称:付款通知单简述:通知采购方支付货款的信息单数据流来源:开付款通知单数据流去向:采购员数据流组成:货物编号+数量+价格+总金额+供货商编号+供货商名+日期数据流量:1张/3个月高峰流量:1张/月数据流编号:D30数据流名称:订书单简述:购买图书计划单数据流来源:判定订货处理模块数据流去向:开发货票模块数据流组成:图书名+图书数量+价格+采购员姓名+采购单位名称+图书出版社+出版日期等数据流量:1张/3个月高峰流量:1张/月数据流编号:D31数据流名称:订书单简述:购买图书计划单数据流来源:开发货票模块数据流去向:仓库数据流组成:图书名+图书数量+价格+采购员姓名+采购单位名称+图书出版社+出版日期等数据流量:1张/3个月高峰流量:1张月数据流编号:D32数据流名称:发货单简述:通知采购方供货单位开始发货的信息单数据流来源:仓库数据流去向:采购员数据流组成:货物编号+数量+价格+总金额+供货商编号+供货商名+发货日期+采购员编号+采购员姓名等数据流量:1张/3个月高峰流量:1张/月4。
完整的简单jsp网上书店详细实例计算机web编程jsp毕业论文、考试复习资料必备其中包括的详细需求、业务分析、数据库、源代码我们使用JSP和Java Bean来构建一个网上书店。
介绍的例子可以分成两大部分,第一部分是普通程序,用于客户在网上选购图书,第二部分是管理程序,用于在服务器端处理客户的定单。
客户端程序由以下几个部分构成:default.jsp:会员登录界面(首页);checklogon.jsp:检测登录代码和密码是否一致,根据由JavaBean返回的结果显示不同的信息。
BuyerBean:会员的合法性检验所用的Bean;booklist.jsp:给登录会员显示当前书店中可供选择的图书;addcart.jsp:将所选的图书加入购物车;shoppingcart.jsp:查看购物车的内容;本例的数据库采用Access(.MDB数据库),对数据库的访问采用便于理解的JDBC-ODBC方式,在使用本例前先在本地数据库建立一个ODBC数据源:bookstore。
设置步骤如下:(1)在开始->设置->控制面版(Win98、NT4.0)中选取“数据源(ODBC)”;在Win 2000 Professional和Server中分别位于“开始->设置->控制面版->管理工具”和“开始->程序->管理工具”下。
(2)启动“数据源(ODBC)”配置程序,界面如图15-1所示。
图15-1 ODBC数据源管理界面(3)在图15-1中“系统DSN”选项下单击“添加”按钮,来添加一个系统的数据源(DSN),则出现如图15-2所示数据源驱动程序选择界面:图15-2 数据源驱动程序选择界面(4)在图15-2中选择“Microsoft Access Driver (*.mdb)”单击“完成”加载Access数据库的驱动,则出现如图15-3所示数据库ODBC安装界面:图15-3 数据库ODBC安装界面(5)在图15-3中单击“选择(S)…”按钮,启动一个类似资源管理器的界面来选择数据库,如图15-4所示,在图15-4所示的界面中选择bookstore.mdb。
数据库设计关于图书馆管理系统的设计(有完整代码,史上最全!)《数据库》课程设计(2008/2009学年第2学期第18-19 周)数据库课程设计任务书⼀、⽬的1.掌握计算机管理信息系统设计的⼀般⽅法,主要包括系统分析、系统设计的组织和实施。
2.关系型数据库管理系统的编程技术,并能独⽴完成⼀般⼩系统的程序设计、调试运⾏等⼯作。
3.培养把所学知识运⽤到具体对象,并能求出解决⽅案的能⼒。
⼆、任务(任选其⼀)A.运⽤关系型数据库管理系统,实现本院图书馆管理信息系统。
具体要求如下:—图书、资料的登记、注销和查询。
—借书证管理,包括申请、注销借书证,查询借书证持有⼈等。
—借还图书、资料的登记、超期处理,超期拒借等。
—图书、资料查询,借、还图书和资料情况查询。
—图书、资料借阅情况的统计分析,拒此作为图书馆图书、资料订够的依据之⼀。
(本项不作为基本要求)B.运⽤关系型数据库管理系统,实现服务电话管理系统向客户现场派技术⼈员的服务公司可以⽤服务电话管理系统跟踪客户、员⼯、⼯作订单、发票、付款等等。
要求:数据库要存储以下信息:—客户信息—客户⼯需单信息—完成⼯需单所需⼈⼯—完成⼯需单所需部件—部件信息—付款信息—雇员信息完成的功能:—输⼊/查看客户⼯需单信息—输⼊/查看部件、雇员等其它信息—付款—打印发票等三、结果形式1.设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL 实现的查询语⾔及查询结果。
2.上机实现。
四、考核1.课程设计态度(20分)。
2.递交的书⾯材料(40分)。
3.上机运⾏情况(40分)⽬录1.问题描述 (2)1.1背景 (2)1.2数据需求 (2)1.3事物需求 (3)1.4关系模式 (3)2.⽅案图表设计 (3)2.1E-R图 (3)2.2数据流程图 (8)2.3数据字典 (9)2.4关系图: (11)3.数据库源代码 (12)3.1数据库建⽴ (12)3.2数据初始化 (14)4.结果数据处理 (17)4.1单表查询 (17)4.2超期处理 (19)4.3还书操作 (20)4.4借书操作 (22)4.5书籍状态 (24)4.6读者状态 (24)5.结束语 (26)5.1课程设计⼼得 (26)1.问题描述1.1背景随着图书馆规模的不断扩⼤,图书数量也相应的增加,有关图书的各种信息量也成倍增加,⾯对着庞⼤的信息量,传统的⼈⼯⽅式管理会导致图书馆管理上的混乱,⼈⼒与物⼒过多浪费,图书馆管理费⽤的增加,从⽽使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定⼀套合理、有效,规范和实⽤的图书管理系统,对图书资料进⾏集中统⼀的管理。
目录一.概述1.编写目的2。
项目背景3。
定义4。
参考资料5.开发环境二.需求分析1。
问题提出2。
系统的业务功能分析3。
需完成的功能三.系统需求说明1。
对功能的规定2。
对性能的规定3。
输入输出要求四.新系统的逻辑模型1。
图书馆组织机构分析2。
系统功能结构图3。
业务流程图4.数据流程图5.数据字典一.概述1、编写目的按照关系型数据库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的图书管理系统。
通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容2、项目背景数据处理手工操作,工作量大,出错率高,出错后不易更改。
图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了。
造成查询费时、费力.如要对很长时间以前的图书进行更改就更加困难了。
.a。
待开发的软件系统的名称是《图书管理系统》b。
本软件适用于教育界,他是比较完善的系统管理软件,对图书馆的书籍、读者资料、借还书等可以进行方便的管理。
C。
开发员:蔚奇秀,曹海花,李小峰,祁乐3、定义数据流程图(DFD):为描述软件系统中的信息流提供了一个图形方法。
箭头代表数据流,方框代表数据的源点或终点,圆框代表数据流的交换,双杠代表数据存储的地方.数据字典是对数据流程图中的数据,变换等进行精确的定义.4、参考资料1.萨师煊、王珊《数据库系统概论》高等教育出版社2000。
22.俞盘祥、沈金发《数据库系统原理》清华大学出版社2000。
63.王珊、陈红《数据库系统原理教程》清华大学出版社1998.74.施伯乐、丁宝康《数据库系统教程》高等教育出版社1999.125、开发环境WindowXP,/7 Microsoft Visual C++, SQLSerevr2000.一、需求分析1、问题的提出:图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
《数据库应用系统》实验报告院系:班级:学号:姓名:一、功能需求说明和分析本实验要求实现一个图书管理系统,系统功能需求说明如下:系统设置:参数、读者类型、图书类型、出版社、预约天数、管理员权限等的设置;系统管理:书籍资料、读者资料的管理和数据导入;基本操作:书籍借阅、续借、归还,新增书籍、读者,读者挂失、注销、退卡,书籍注销,丢失罚款;系统查询:书籍资料、借阅、归还等的查询,读者资料、超期未还、书籍注销的查询;统计分析:书籍、读者资料分类统计,书籍、读者借阅排行榜;罚款租金:可以进行罚款或租金的操作,并进行统计汇总;系统维护:备份、还原数据库,管理员登录密码修改。
针对上述需求说明,对该系统的需求进行进一步的分析如下:管理员权限:1.图书的录入,查询,修改和注销;2.读者信息的添加,修改,查询和注销;3.个人账号登录,查看个人信息,修改密码,退出登录;4.管理和授予读者借书权限;5.正常还书和违规还书。
读者权限:1.图书检索;2.登录,查看个人信息,查看借阅记录,退出登录;3.借书,还书;4.续借已借书籍,预约书籍;5.挂失和退卡注销。
书籍检索:1.读者可检索到自己想要的书籍的基本信息2.可以按照书籍排行榜查看书籍相关书籍二、需求分析数据流图(DFD)表达了数据和处理过程的关系,根据需求分析得到数据流图如下图所示。
数据字典(DD)是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。
因此,图书馆信息管理系统数据流程图中,数据信息和处理过程需要通过数据字典才能描述清楚。
在我们定义的图书馆信息管理系统数据字典中,主要对数据流程图中的数据结构、数据存储和处理过程进行说明。
1、数据结构反应了数据之间的组合关系,主要数据结构定义如下:1)数据结构名称:管理员信息含义说明:管理员信息反应了管理员的一些相关信息组成:编号+姓名+登录密码2)数据结构名称:读者信息含义说明:读者信息反应了读者的一些相关信息组成:卡号+姓名+性别+类别+单位3)数据结构名称:图书信息含义说明:图书信息反应了图书的一些相关信息组成:书号+书名+作者+分类+出版社+状态+入库日期+数量4)数据结构名称:借阅记录含义说明:借阅记录反应了每一本书的被借阅历史和每一位读者的借阅历史组成:书号+卡号+借出日期+归还日期2、数据存储是数据结构停留或者保存的地方,主要数据存储定义如下:1)数据存储名称:管理员信息表输入:管理员的工作编号输出:管理员的基本信息数据结构:编号+姓名+登录密码说明:编号是唯一的,且不能为空,作为主码2)数据存储名称:读者信息表输入:读者的借书卡卡号输出:读者的基本信息以及借阅记录数据结构:卡号+姓名+性别+类别+单位说明:卡号是唯一的,且不能为空,作为主码3)数据存储名称:图书信息表输入:图书的书号输出:该图书的状态(已借出/馆内阅读/在架上)和被借阅历史数据结构:书号+书名+作者+分类+出版社+状态+入库日期+数量说明:书号是唯一的,且不能为空,作为主码4)数据存储名称:借阅记录表输入:书籍的书号,或者读者的借书卡卡号输出:相应的借阅记录数据结构:书号+卡号+借出日期+归还日期说明:书号-卡号作为主码;在读者-书籍关系中,卡号为主码,书号为外码;在书籍读者关系中,书号为主码,卡号为外码3、处理过程的具体处理逻辑一般用判定表或者判定树来描述,在数据字典中只需要描述处理过程的说明性信心。
练习题33.1解释下列名词1.函数依赖:设有关系模式R (U ),X 和Y 是属性集U 的子集,函数依赖(functional dependency ,简记为FD )是形为X →Y 的一个命题,只要r 是R 的当前关系,对r 中任意两个元组t 和s ,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FD X →Y 在关系模式R (U )中成立。
这里t[X]表示元组t 在属性集X 上的值,其余类同。
X →Y 读作“X 函数决定Y ”,或“Y 函数依赖于X ”。
FD 是对关系模式R 的一切可能的关系r 定义的。
对于当前关系r 的任意两个元组,如果X 值相同,则要求Y 值也相同,即有一个X 值就有一个Y 值与之对应,或者说Y 值由X 值决定。
因而这种依赖称为函数依赖。
2.平凡的函数依赖对于FD X →Y ,如果Y ⊆X ,那么称X →Y 是一个“平凡的FD ”,否则称为“非平凡的FD ”。
正如名称所示,平凡的FD 并没有实际意义,根据规则A1就可推出。
人们感兴趣的是非平凡的FD 。
只有非平凡的FD 才和“真正的”完整性约束条件相关。
从规则A4和A5,立即可得到下面的定理。
定理 3.3 如果A 1……An 是关系模式R 的属性集,那么X →A 1……An 成立的充分必要条件是X →Ai (i=1,…,n )成立。
3.函数依赖集F 的闭包F +(Closure )设F 是函数依赖集,被F 逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F 的闭包(Closure ),记为F +。
即F +={ X →Y | F|=X →Y }。
4.属性集X 的闭包X +设F 是属性集U 上的FD 集,X 是U 的子集,那么(相对于F )属性集X 的闭包用X +表示,它是一个从F 集使用FD 推理规则推出的所有满足X →A 的属性A 的集合:X +={属性A | F|=X →A }5.函数依赖的逻辑蕴含设F 是在关系模式R 上成立的函数依赖的集合,X →Y 是一个函数依赖。
目录一.需求描述和系统边界数据库技术和Internet的飞速发展,使它们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。
对于任何一个企业来说,数据是企业重要的资产,如何有效利用这些数据,对于企业发展起着极其重要的作用。
随着我国市场经济的迅速发展和人们生活水平的不断提高,图书馆藏书的数目逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,创建图书管理系统可以让管理人员方便而快捷的进行管理、查询、借阅、录入等工作。
该图书管理系统支持2类用户:管理员和读者。
读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者的增加,删除和修改以及对读者,借阅、续借、归还的确认。
二.需求分析1.业务需求图书管理系统的主要业务包括:包括图书馆内书籍的信息,读者信息,以及借阅信息。
此系统功能分为面向读者和面向管理员两部分,其中读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者的增加,删除和修改以及对读者,借阅、续借、归还的确认。
2.功能需求及数据需求分析(1)注册管理管理员注册。
管理员注册时要求填写基本信息,包括管理员编号、姓名、性别、联系电话、家庭住址。
系统检查所有信息填写正确后管理员注册成功。
读者注册。
读者注册时要求填写基本信息,包括读者编号、姓名、性别、联系电话、学院等。
系统检查所有信息填写正确后读者注册成功。
(2)图书管理增加图书信息。
当有新的图书入库时,管理员负责添加图书信息,包括书名、分类、图书编号、作者、出版社、出版时间、简介等。
图书信息查询。
管理系统需提供方便快捷的方式进行图书检索。
如可以输入指定的关键词进行简单查询,也可以根据书名、分类、图书编号、作者、出版社、出版时间、简介等单一或组合条件进行查询。
图书信息更新及删除。
图书信息发布后,管理员可以随时更新和删除图书信息。
(3)借阅图书读者登入图书管理系统之后,将需要的图书的信息输入,可以借阅图书。
由管理员将图书信息修改为“不在馆”。
(4)续借图书读者借书之后,一个月后应归还。
如有需要可以续借图书30天。
此操作由管理员完成。
(5)归还图书读者将已借图书归还给图书馆时,需要管理员确认信息。
并将图书信息修改为“在馆”3.业务规则分析基于功能需求,通过进一步了解,图书管理业务需求如下:(1)所有用户均可以搜索图书信息。
但只有管理员可以对图书信息进行修改。
(2)管理员由管理员编号唯一标识。
(3)每位读者由读者编号唯一标识。
(4)图书编号是图书的唯一标识。
(5)借阅图书后需记录图书当前状态包括在馆、不在馆、已归还、未归还、是否续借。
(6)同一图书分类中可以有多本图书,但是每本图书只能在一种个图书分类中。
三.实体集及属性图3-1图书实体集E-R图图3-2管理员实体集E-R图图3-3读者实体集E-R图图3-4图书分类实体集E-R图四.联系集及E-R图五.逻辑数据库设计表3-1 BookClass表3-4 Admin表3-7 Admin_Reader六.数据库编程1.创建表(1)创建图书分类表BookClassCREATE TABLE BookClass(classNo varchar(3)not null, className varchar(20)null, CONSTRAINT BookClassPK PRIMARY KEY(classNo) )(2)创建图书表BookCREATE TABLE Book(bookNo varchar(20)not null,classNo varchar(3)not null,bookName varchar(50) not null,author varchar(12)not null,publishName varchar(50),publishDate datetime,introduction varchar(200),CONSTRAINT BookPK PRIMARY KEY(bookNo),CONSTRAINT BookPK1 FOREIGN KEY(classNo)REFERENCES BookClass (classNo))(3)创建管理员表AdminCREATE TABLE Admin(adminNo varchar(12)not null,adminName varchar(12)not null,aSex varchar(2) not null,aPhoneNumber varchar(12) null,address varchar(40) null,CONSTRAINT AdminPK PRIMARY KEY(adminNo))(4)创建读者表ReaderCREATE TABLE Reader(readerNo varchar(12) not null,readerName varchar(10) not null,rSex varchar(2)not null,rPhoneNumber varchar(12) null,institute varchar(20) not null,effectDate datetime,lostEffectDate datetime,breakRules char(2),borrowAdd int,CONSTRAINT ReaderPK PRIMARY KEY(readerNo))(5)创建借阅表BorrowCREATE TABLE Borrow(adminNo varchar(12) not null,bookNo varchar(20)not null,readerNo varchar(12) not null,borrowDate datetime not null,shouldDate datetime not null,renewal char(4) not null,CONSTRAINT BorrowPK PRIMARY KEY(adminNo,readerNo,bookNo), CONSTRAINT BorrowPK1 FOREIGN KEY(adminNo)REFERENCES Admin(adminNo),CONSTRAINT BorrowPK2 FOREIGN KEY(readerNo)REFERENCES Reader(readerNo),CONSTRAINT BorrowPK3 FOREIGN KEY(bookNo)REFERENCESBook(bookNo),)(6)创建管理员_图书表Admin_BookCREATE TABLE Admin_Book(adminNo varchar(12) not null,bookNo varchar(20) not null,shopTime datetime,inLibrary char(4)CONSTRAINT Admin_BookPK PRIMARY KEY(adminNo,bookNo), CONSTRAINT Admin_BookPK1 FOREIGN KEY(adminNo)REFERENCES Admin(adminNo),)(7)创建管理员_读者 Admin_ReaderCREATE TABLE Admin_Reader(adminNo varchar(12) not null,readerNo varchar(12) not null,bookNo varchar(20) not null,brCheck char(4) not null,CONSTRAINT Admin_readerPK PRIMARY KEY(adminNo,readerNo,bookNo), CONSTRAINT Admin_readerPK1 FOREIGN KEY(adminNo)REFERENCES Admin(adminNo),CONSTRAINT Admin_readerPK2 FOREIGN KEY(readerNo)REFERENCES Reader(readerNo),CONSTRAINT Admin_readerPK3 FOREIGN KEY(bookNo)REFERENCES Book(bookNo))2.创建触发器Create Trigger RENEWOn Borrowfor UpdateAsIf Update(renewal)beginUpdate BorrowSet shouldDate=shouldDate+30Where adminNo=1001end3.管理员操作(1)注册INSERT INTO Admin (adminNo, adminName, aSex, aPhoneNumber, address) V ALUES(#adminNo, #adminName, #aSex, #aPhoneNumber, #address)(2)注销DELETE FROM AdminWHERE(adminNo =#adminNo);(3)修改个人信息UPDATE AdminSET(adminNo=#adminNo, adminName= #adminName, aSex=#aSex, aPhoneNumber #aPhoneNumber, address#address);(4)增加图书INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)V ALUES(#bookNo, #classNo,#bookName, #author, #publishName, #publishDate,#introduction)(5)删除图书DELETE FROM BookWHERE(bookNo=#bookNo)(6)修改图书信息UPDATE Book (bookNo=#bookNo, classNo=#classNo,bookName=#bookName, author=#author, publishName=#publishName, publishDate=#publishDate, introduction=#introduction)(7)增加图书分类INSERT INTO BookClass(classNo,className)V ALUES(#classNo,#className)(8)删除图书分类DELETE FROM BookClassWHERE(classNo=#classNo)(9)更新图书分类UPDATE BookClass(classNo=#classNo,className=#className)4.读者操作(1)注册INSERT INTO Reader (readerNo, readerName, rSex, rPhoneNumber , institute, effectDate, lostEffectDate, breakRules,borrowAdd)V ALUES(#readerNo, #readerName, #rSex,# rPhoneNumber , #institute,#effectDate,# lostEffectDate, #breakRules,#borrowAdd)(2)注销DELETE ReaderWHERE(readerNo=#readerNo)(3)修改个人信息UPDATE ReaderSET (readerNo =#readerNo, readerName =#readerName, rSex= #rSex, rPhoneNumber =# rPhoneNumber , institute= #institute, effectDate=#effectDate ,lostEffectDate=# lostEffectDate, breakRules =#breakRules, borrowAdd =#borrowAdd)(4)查询SELECT * FROM BookWHERE bookNo=#bookNo OR bookName=#bookName5. 管理员对借阅关系的操作(1) 插入读者的信息INSERT INTO Borrow(adminNo, bookNo,readerNo,borrowDate,shouldDate,renewal)V ALUES(#adminNo, #bookNo,# readerNo,#borrowDate,#shouldDate,#renewal)(2) 更新信息①更新借出信息UPDATE BorrowSET(borrowDate =# borrowDate, shouldDate = shouldDate +30,renewal=’0’) WHERE(adminNo =# adminNo AND readerNo =#readerNo AND bookNo =#bookNo)UPDATE Admin_BookSET(inLibrary=’0’)WHERE(bookNo=#bookNo)UPDATA ReaderSET (borrowAdd= borrowAdd +1)WHERE(readerNo=#readerNo)INSERT INTO Admin_Reader (adminNo, readerNo, bookNo, brCheck)V ALUES(#adminNo, #readerNo, #bookNo, #brCheck)②更新续借信息UPDATE BorrowSET (renewal=#renewal)WHERE (adminNo=# adminNo AND readerNo=#readerNo AND bookNo=#bookNo) ③更新还书信息UPDATE Admin_BookSET(inLibrary=1)WHERE(bookNo =#bookNo)UPDATE Admin_ReaderSET(brCheck =’1’)WHERE(adminNo =# adminNo AND readerNo =# readerNo AND bookNo =# bookNo)七.代码实现1.输入数据设计(1)插入图书分类INSERT INTO BookClass (classNo,className)VALUES('C01','信息技术教材')INSERT INTO BookClass (classNo,className)VALUES('C02','小说')INSERT INTO BookClass (classNo,className)VALUES('C03','外语')INSERT INTO BookClass (classNo,className)VALUES('C04','漫画')(2)插入管理员INSERT INTO Admin (adminNo, adminName, aSex, aPhoneNumber, address) VALUES('1001','王子','女','012345678','北京')(3)插入读者INSERT INTO Reader (readerNo, readerName, rSex, rPhoneNumber , institute, effectDate, lostEffectDate, breakRules,borrowAdd)VALUES('11111','李瑞','男','123456789','软件','2010-09-02','2014-06-30','1','10')(4)插入图书INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1234','C01','数据库系统原理与设计','万常选','清华大学出版社','2009-03-05','数据库教程')INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1235','C01','JAVA','吴京','清华大学出版社','2007-05-07','JAVA基础教程')INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1236','C02','红楼梦','曹雪芹','清华大学出版社','2009-09-04','中国四大名著之一')INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1237','C03','英语写作','刘平惠','浙江大学出版社','2006-10-21','基础英语写作教程')INSERT INTO Book (bookNo, classNo,bookName, author, publishName, publishDate, introduction)VALUES('S1238','C04','最漫画','郭敬明','长江出版社','2011-03-17','漫画连载')(5)插入管理员_书籍表INSERT INTO Admin_Book (adminNo, bookNo ,shopTime, inLibrary) VALUES('1001','S1234','2010-7-7','0')INSERT INTO Admin_Book (adminNo, bookNo, shopTime, inLibrary) VALUES('1001','S1235','2008-7-8','1')(6)插入借阅信息INSERT INTO Borrow (adminNo,bookNo,readerNo,borrowDate,shouldDate ,renewal)VALUES('1001','S1234','11111','2012-6-1','2010-7-1','0')INSERT INTO Admin_Reader (adminNo, readerNo, bookNo,brCheck ) VALUES('1001','11111','S1234','0')2.完成借阅、续借、归还的操作设计假设读者想借书籍名为《JAVA》且不知道bookNo(1)借阅操作如下:if((select bookName from Book where bookNo='S1235')='JAVA')beginINSERT INTO Borrow (adminNo, bookNo,readerNo,borrowDate,shouldDate ,renewal)VALUES('1001','S1235','11111','2012-6-8','2012-7-8','0')UPDATE Admin_BookSET inLibrary ='0'WHERE bookNo='S1235'UPDATE ReaderSET borrowAdd=borrowAdd+1WHERE readerNo ='11111'INSERT INTO Admin_Reader (adminNo, readerNo, bookNo, brCheck)VALUES('1001','11111','S1235','0')print'借阅成功!'endelseprint'借阅失败!'(2)续借操作如下:if((SELECT renewalFROM BorrowWHERE adminNo ='1001'AND readerNo ='11111'AND bookNo ='S1235')='0') beginUPDATE BorrowSET renewal='1'WHERE adminNo ='1001'AND readerNo ='11111'AND bookNo ='S1235'print'续借成功!'endelseprint'续借失败!'(3)归还操作如下:If((SELECT brCheckFROM Admin_ReaderWHERE adminNo ='1001'AND readerNo ='11111'AND bookNo ='S1235')='0') BEGINUPDATE Admin_BookSET inLibrary ='1'WHERE bookNo ='S1235'print'还书成功!'endelseprint'还书失败!'八.模式求精Admin_Book (adminNo, bookNo, shopTime, inLibrary)依据BCNF, Admin_Book可以分解为以下两个模式:Admin_ Book (bookNo, shopTime, inLibrary)Admin_s(adminNo,bookNo)可以验证,关系模式满足BCNF要求,且分解是无损分解。