图书管理系统大数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库原理与应用教程》实验报告
数据库分析与设计
------图书管理系统
一、需求说明
要实现一个简化的图书管理系统,在此图书管理系统中只涉及学生信息、借阅信息和管理者信息的管理。此系统要求能够记住书籍的基本信息、学生的信息和管理者的信息。该系统的业务要求为:
◆一名学生可以在不同的日期多次借阅同一本书。
◆一名学生可以同时借阅多本不同的图书。
◆一本书可以在不同的时间借给不同的学生。
◆一名学生不能在同一天对同一本书借阅多次。
◆一名管理员可以同时管理多本图书。
该系统的基本信息包括:
◆学生信息:姓名,学号,学院,专业,年级。
◆图书信息:图书名称,图书编号,出版社名称,出版日期,作者,是否可借。
◆管理员信息:管理员姓名,管理员编号。
除上述要求外,该系统还需产生如下报表:
◆学生借阅图书信息表:学号,图书编号,图书名称,借阅日期,应归还日期。
◆图书管理表:管理日期,管理员编号,管理员姓名。
二、数据库结构设计
2.1 概念结构设计
概念结构设计是根据需求分析的结果产生概念结构设计的E-R模型。由于这个系统比较简单,因此这里采用自顶向下的设计方法。自顶向下设计的关键是首先要确定系统的核心活动。所谓核心活动就是系统中的其他活动都要围绕这个活动展开或与此活动密切相关。确定了核心活动之后,系统就有了可扩展的余地。对于这个图书管理系统,其核心活动是图书,学生与图书之间是通过学生借阅图书发生联系的,管理员与图书之间是通过管理员管理图书发生联系的。至此,此系统包含的实体有:
◆图书:用于描述课程的基本信息,用图书编号标识。
◆学生:用于描述学生的基本信息,用学号标识。
◆管理员:用于描述管理员的基本信息,用管理员编号标识。
由于一名学生可以借阅多本图书,并且一本书可以在不同时间借给不同的学
生。因此,学生与图书之间是多对多的联系。又由于一本图书可以由多名管理员
管理,而且一名管理员可以管理多本图书。因此,管理员与图书之间也是多对多
的联系。
其基本E-R模型如图1所示:
m n m n
学生借阅图书管理管理员
根据需求分析的结果,该E-R模型模型中个实体所包含的属性如下:
◆学生:姓名,学号,学院,专业,年级。
◆图书:图书名称,图书编号,出版社名称,出版日期,作者,是否可借。
◆管理员:管理员姓名,管理员编号。
各联系本身应具有的属性为:
◆借阅:学号,图书编号,图书名称,借阅日期,应归还日期。
◆管理:管理日期,管理员编号,管理员姓名。
2.2逻辑结果设计
这个E-R模型转换出的关系模式如下,其中主码用下划线标识:
◆学生(学号,姓名,学院,专业,年级)
◆图书(图书编号,图书名称,出版社名称,出版日期,作者,是否可借)
◆管理员(管理员编号,管理员姓名)
◆借阅(学号,图书标号,图书名称,借阅日期,应归还日期),其中图书
编号为引用“图书”关系模式的外码;学号为引用“学生”关系模式的外码。
◆管理(管理日期,管理员编号,管理员姓名),其中管理员编号为引用“管
理员”关系模式的外码。
(1)确定各管是模式是否属于第三范式
经过分析发现,“学生”、“图书”、“管理员”、“借阅”和“管理”5个关系
模式中,都不存在部分依赖和传递依赖关系,因此都属于第三范式。
(2)确定信息的完整性
该教学管理系统要产生:学生借阅图书信息、图书管理2个报表,分别分析
如下:
◆“学生借阅图书信息表”包括学号、图书编号、图书名称、借阅日期、应归
还日期。其中“学号”可由“学生”关系模式得到,“图书编号”、“图书名称”、“借阅日期”、“应归还日期”可由“借阅”关系模式得到,因此可以满足学生借阅图书信息表的要求。
◆“图书管理表”包括管理日期、管理员编号、管理员姓名。其中“管理日期”
可由“管理”关系模式得到,“管理员编号”,“管理员姓名”可由“管理员”
关系模式得到。
因此,所有关系模式满足所有报表的信息要求。
至此,关系模式设计完毕。
下面给出创建这些关系表的SQL语句示例,其中的数据类型可根据实际情况调整,为方便理解,表名、列名均用中文表示。
CREATE TABLE 学生表(
学号 char(10) PRIMARY KEY,
姓名 char(10) NOT NULL ,
学院 char(20) NOT NULL ,
专业 char(20) NOT NULL ,
年级 char(8) NOT NULL
)
CREATE TABLE 图书表(
图书编号 char(20) PRIMARY KEY,
图书名称 char(20) NOT NULL ,
出版社名称 char(20) NOT NULL ,
出版日期 datetime NOT NULL ,
作者 char(10) NOT NULL
)
CREATE TABLE管理员表(
管理员编号 char(10) PRIMARY KEY,
管理员姓名 char(10) NOT NULL
)
CREATE TABLE借阅表(
学号 char(10) NOT NULL ,
姓名 char(10) NOT NULL ,
图书编号 char(20) NOT NULL ,
图书名称 char(20) NOT NULL ,
借阅日期 datetime NOT NULL ,