管理信息系统(MIS)设计

一、实验环境

1. 操作系统:Windows 10

2. 数据库管理软件(含版本号):PostgreSQL 13.12-1-windows-x64

3. 其他工具:无

  • 实验内容及其完成情况

1.需求分析

系统应该实现以下功能:图书管理员可以维护图书信息,包括增加新书、修改图书信息、办理图书借阅登记、图书归还登记、过期图书处理、丢失图书处理及读者借阅证件信息的维护等;而读者可以实现借书、还书、查阅图书信息、查询借书信息等。

具体要求如下所示:

图书信息管理:录人各种图书信息、维护图书信息等。图书信息具体包括图书编号、图书名称、图书类型、作者、出版社、价格等,其中图书类型将由图书分类号进行说明,每个图书分类号对应一种图书类型。

读者信息管理:维护读者信息,并根据实际情况的需要修改、更新或删除读者信息。读者信息包括证件号、姓名、证件状态 (包括有效和失效)、联系方式等。

借阅管理:包括借书、还书、过期图书归还处理等。借书时登记借阅时间,还书时登记归还时间,并检查借阅时间是否超期,以及进行相应的处理。

图书管理系统主要有如下三种用户:

1)系统管理员:拥有系统的最高权限,可设置图书管理员等。

2)图书管理员:维护图书的基本数据,包括图书种类处理、更新图书信息,进行读者的图书借阅和归还处理等。

3)读者:可以查阅图书信息、借阅图书。

图书馆的图书情况和管理规定如下: 每种图书类型都包括很多本不同的图书,同样的图书可以购买多本:每本图书可以被多次借阅;每位读者可以借阅多本图书;每本图书的借阅期限是一个月。

2.概念结构设计

确定实体;

确定的实体有:图书类型、图书和读者。

②确定联系;

一名读者可以借阅多本图书,而一本图书也可以被不同的读者借阅,所以读者与图书之间存在着多对多的借阅关系,读者与图书之间存在着多对多的联系,即m:n的联系。每一种图书属于一种图书类型,而一种图书类型可以包含很多本图书,因此可以得到图书类型与图书之间也存在着一种一对多的联系,即图书类型与图书是1:n的联系。

③确定实体的属性和码(或称“键”)。

实体、联系的属性及主键具体如下:

1)图书类型,属性包括图书分类号、图书分类名称、描述信息,其中图书分类号是主键。

2)图书,属性包括图书编号、图书名称、图书分类号、作者、出版社、价格,其中图书编号是主键。

3)读者,属性包括证件号、姓名、证件状态(包括有效和失效)、联系方式等,其中证件号是主键。

4)针对读者与图书之间的“借阅”联系进行分析。这种联系是读者借阅图书产生的,是多对多的联系,其属性应该包括借阅日期、应还日期、归还日期及超期归还时的罚款金等。

抽象出系统的实体

图书类型、图书信息和读者三个实体,如图1、图2和图3所示。

图1 图书类型实体及属性

图2 图书实体及属性

图3 读者实体及属性

设计初步E-R图

图书借阅系统的初步E-R图,如图4所示。

图4 图书借阅系统初步E-R图

设计全局E-R图

图书借阅系统全局E-R图,如图5所示。

图5 图书借阅系统全局E-R图

3.逻辑结构设计

图书借阅管理的关系模式具体如下:

图书类型(图书分类号,图书分类名称,描述信息)

图书(图书编号,图书名称,图书分类号,价格,出版社,作者)

读者(证件号,联系方式,证件状态,姓名)

借阅(证件号图书编号借阅日期,应还日期,归还日期,罚款金)

4.物理设计与实施

4.1 创建“图书借阅系统数据库

1)交互向导方式,如图6所示

图6

2)使用SQL建立数据库,如图7所示。

图7

4.2 建立和管理基本表

1)建立基本表
建立图书信息表:图书,如图8所示

图8

建立读者信息表:读者,如图9所示

图9

建立图书类型信息表:图书类型,如图10所示

图10

建立借阅信息表:借阅,如图11所示

图11

2)管理基本表

例3-1 添加价格默认值10.00,如图12所示

图12

例3-2 给读者表中的属性列“证件状态”添加默认值“可用”,如图13所示

图13

例3-3 删除读者表中的“联系方式”字段,如图14所示

图14

例3-5 修改“图书”表中“图书名称”字段的属性,将数据类型改为VARCHAR(50),允许为空值如图15所示

图15

例3-6 删除“图书类型”表,如图16所示

图16

4.3 建立和管理视图

例3-7 为类型是“计算机”的图书建立视图,如图18

(3-6图书类型删了,如图17)

图17

图18

例3-8 建立视图“读者借书情况表,如图19

图19

例3-9 删除“计算机图书”视图,如图20

图20

4.4 建立和管理索引

例3-10 为“借阅表”中的“证件号”和“借阅日期”建立组合次索引,如图21

图21

例3-11 为“图书”表中的图书分类号、图书名称、出版社字段分别建立次级索引,如图22

图22

5.数据库访问

插入数据:

图书类型表数据插入,如图23所示

图23

图书信息表数据插入,如图24所示

图24

读者信息表数据插入,如图25所示

图25

借阅信息表数据插入,如图26所示

图26

5.1 数据查询

例3-12 查询作者“杨万华”编写的图书名称、出版社和价格,如图27

图27

例3-13 查询图书“计算机主板维修从业技能全程通”的价格,如图28

图28

例3-14 统计图书馆每本图书(图书名称相同)的馆藏量,并按照馆藏量由多到少排列,如图29

图29

例3-15 查询读者“王小虎”所借图书的情况,如图30

图30

例3-16 统计每位读者的借书数量,如图31

图31

例3-17 查询不可以借阅图书的读者,如图32

图32

例3-18 查询借阅图书超期归还的读者信息,包括读者的证件号和姓名,如图33

图33

例3-19 查询借阅图书已超期但未归还的读者信息,包括读者的证件号和姓名,无getdate(),报错如图34;改为date(now())就可以了,如图35所示

图34

图35

例3-20 统计截止到2015年9月共借出多少本书,如图36

图36

5.2数据更新

例3-21 将读者“陈晓琪”的证件状态设置为“可用”,如图37

图37

例3-22 删除姓名为“李涵”的读者的借阅信息,如图38

图38

例3-23 增加一条图书信息,如图39

图39

例3-24 “王潮”在“2015/10/13”借了一本“模拟电子技术”,并且应该在一个月后还书,添加借阅信息。如图40

图40

例3-25 更新借阅表中证件号='W200912004'和图书编号='9787115224996'的罚款金。如图41所示。

图41

6.数据库维护(可选)

例3-26 在“借阅”表中建立一个插入触发器,如图42

图42

例3-27 在“借阅表”中建立一个更新触发器,如图43

图43

例3-28 在“读者”表中建立删除触发器,如图44

图44

三、实验总结

(可以总结实验中出现的问题以及解决的思路,也可以列出没有解决的问题)

问题1:

1.问题描述

2.问题分析(可能的原因、难点、挑战)

这个错误表明在第8行的CHECK约束中,涉及到了一个 MONEY 类型的列(罚款金),而这里的检查条件涉及到了一个 numeric 类型的值(0.0)。在 PostgreSQL 中,对于不同的数据类型之间进行比较时,需要确保存在合适的运算符。在这里,出错的原因是没有找到 MONEY 类型和 numeric 类型之间的比较运算符。

3.解决方案

(如该问题没有被解决可以不写具体的解决方案,而给出大致的思路和方向)

使用相同的数据类型:尽量确保比较的两个值具有相同的数据类型。在这种情况下,可以考虑将罚款金列的数据类型更改为 numeric 或者确保 CHECK 约束中的值使用 MONEY 数据类型。

问题2:

1.问题描述

2.问题分析(可能的原因、难点、挑战)

在PostgreSQL中,添加列的默认值的语法和PDF中不一样。

3.解决方案

(如该问题没有被解决可以不写具体的解决方案,而给出大致的思路和方向)

正确语法:

ALTER TABLE 表名

ALTER COLUMN列名 SET DEFAULT '默认值';

问题3

1.问题描述

无getdate()

2.问题分析(可能的原因、难点、挑战)

在PostgreSQL中,添加列的默认值的语法和PDF中不一样。

3.解决方案

(如该问题没有被解决可以不写具体的解决方案,而给出大致的思路和方向)

改为date(now())

问题4:

1.问题描述

因为“图书类型”表与其他表有关联,所以删除被限制了

2.问题分析(可能的原因、难点、挑战)

存在依赖表的对象,默认restrict的情况下表不能被删除

3.解决方案

(如该问题没有被解决可以不写具体的解决方案,而给出大致的思路和方向)

改为级联删除

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值