数据库设计实例(需求分析、概念结构、逻辑结构)
数据库设计实例分析
一、需求分析实例
现要开发高校图书管理系统。经过可行性分析和初步的需求调查,确定了系统的功能边界,该系统应能完成下面的功能:
(1)读者注册。
(2)读者借书。
(3)读者还书。
(4)图书查询。
1、数据流图
顶层数据流图反映了图书管理系统与外界的接口,但未表明数据的加工要求,需要进一步细化。根据前面图书管理系统功能边界的确定,再对图书管理系统顶层数据流图中的处理功能做进一步分解,可分解为读者注册、借书、还书和查询四个子功能,这样就得到了图书管理系统的第0层数据流图
从图书管理系统第0层数据流图中可以看出,在图书管理的不同业务中,借书、还书、查询这几个处理较为复杂,使用到不同的数据较多,因此有必要对其进行更深层次的分析,即构建这些处理的第1层数据流图。下面的图8-7分别给出了借书、还书、查询子功能的第1层数据流图
2、数据字典
2.1 数据项
数据项名称:借书证号
别名:卡号
含义说明:惟一标识一个借书证 类型:字符型
长度:20
……
2.2 数据结构
(1)名称:读者类别
含义说明:定义了一个读者类别的有关信息 组成结构:类别代码+类别名称+可借阅数量+借阅天数+超期罚款额
(2)名称:读者
含义说明:定义了一个读者的有关信息 组成结构:姓名+性别+所在部门+读者类型 (3)名称:图书
含义说明:定义了一本图书的有关信息 组成结构:图书编号+图书名称+作者+出版社+价格
……
2.3 数据流
(1)数据流名称:借书单
含义:读者借书时填写的单据
来源:读者
去向:审核借书
数据流量:250份/天
组成:借书证编号+借阅日期+图书编号 (2)数据流名称:还书单
含义:读者还书时填写的单据
来源:读者
去向:审核还书
数据流量:250份/天
组成:借书证编号+还书日期+图书编号 ……
2.4 数据存储
(1)数据存储名称:图书信息表
含义说明:存放图书有关信息
组成结构:图书+库存数量
说明:数量用来说明图书在仓库中的存放数
(2)数据存储名称:读者信息表
含义说明:存放读者的注册信息
组成结构:读者+卡号+卡状态+办卡日期
说明:卡状态是指借书证当前被锁定还是正常使用 (3)数据存储名称:借书
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
含义说明:存放读者的借书、还书信息
组成结构:卡号+书号+借书日期+还书日期
说明:要求能立即查询并修改
……
2.5 处理过程
(1)处理过程名称:审核借书证
输入:借书证
输出:认定合格的借书证
加工逻辑:根据读者信息表和读者借书证,如果借书证在读者信息表中存在并且没有被锁定,
那么借书证是有效的借书证,否则是无效的借书证。 ……
二、概念结构设计实例 1(标识图书管理系统中的实体和属性 参照数据字典中对数据存储的描述,可初步确定三个实体的属性为: 读者:,卡号,姓名,性别,部门,类别、办卡日期,卡状态, 读者类别:{类别代码,类别名称,可借阅天数、可借阅数量,超期罚款额}
图书:,书号,书名,作者,价格,出版社,库存数量, 借还记录:,卡号,书名,借书日期,还书日期, 其中有下划线的属性为实体的码。
2(确定实体间的联系
三、逻辑结构设计实例
1、图书管理系统的关系模型
将在概念结构阶段得到的基本E-R图转换成关系模型,如下表所示:
关系名 属性及码 其他约束条件 读者 借书证号,姓名,性别,部门,类别1、 类别代码引用读者类别关系
代码,办证日期,借书证状态 中的类别代码;
2、 姓名不允许为空;
3、 类别代码不允许为空 读者类别 类别代码,类别名称,可借阅数量,类别名称不允为空
可借阅天数,超期罚款额
图书 书号,书名,作者,价格,出版社,1、 书名不允许为空;
库存数量 2、 库存数量不允许为空 借还 借书证号,书号,借书日期,还书日1、 借书证号引用读者关系中的
期 借书证号;
2、 书号引用图书关系中的书号
2、将关系设计成SQL Server 2005下相应的表 reader(读者表)
字段名 字段含义 字段类型 长度 小数 是否为空 列级约束 CardID 借书证号Char 20 NOT Primarykey
(卡号) NULL
Name 姓名 Char 16 NOT
NULL
Sex 性别 Bit NULL Dept 部门 Char 30 NULL ClassID 类别代码 Int NOT Foreign key
NULL references
dzclass(ClassID) Bzdate 办证日期 datetime NULL Cardstate 借书证状bit NULL
态(卡状
态)
表级约束
dzclass(读者类别表)
字段名 字段含义 字段类型 长度 小数 是否为空 列级约束 ClassID 类别代码 Int NOT Primarykey
NULL ClassName 类别名称 Char 16 NOT
NULL PermitDay 可借阅天Int NULL
数
PermitQty 可借阅数Int NULL
量
Penalty 超期罚款Money NULL
额
表级约束
book(图书表)
字段名 字段含义 字段类型 长度 小数 是否为空 列级约束 BookID 书号 Char 20 NOT Primarykey
NULL BookName 书名 varchar 20 NOT
NULL Editer 作者 Varchar 8 NULL Price 价格 Money NULL Publisher 出版社 Varchar 20 NULL Qty 库存数量 Int NOT
NULL 表级约束
borrow(借还表)
字段名 字段含义 字段类型 长度 小数 是否为空 列级约束 CardID 借书证号 Char 20 NOT Foreign key
NULL references
reader(CardID) BookID 书号 char 20 NOT Foreign key
NULL references
book(BookID) Bdate 借书日期 Datetime NOT
NULL
Sdate 还书日期 Datetime NULL
表级约束 Primarykey(CardID,BookID,Bdate)