摘 要
对我们每个人来说,随着生活水平的提高,物价水平也在日益提高,为了
更好的控制收支平衡和调节家庭储蓄,我们在保证取得高收入的前提下还得保
证低支出,这就需要我们建立一个家庭财务管理系统。财管系统是一个家庭收
支或者家庭不可缺少的部分,家庭收支很早就实施了理财的集中管理,而家庭
使用的小型理财系统却只是凤毛麟角,理财是很小的一个部分,但从到家庭收
支,到家庭投资都有十分重要的意义。
本文运行的操作环境主要是 db2 , 可以了解到“家庭财务管理系统”的规
划、设计过程,掌握系统的功能。
关键词:IBM DB2;数据库设计;家庭财务管理系统
目录
第一章 绪论 ........................................................................................1
课题简介 ........................................................................................................1
设计目的 ........................................................................................................1
设计内容 ........................................................................................................1
第二章 需求分析 ................................................................................2
需求分析的任务 ...........................................................................................2
需求分析的过程 ...........................................................................................2
数据字典与流程图 ........................................................................................2
第三章 概念结构设计 ........................................................................5
概念结构设计的方法与步骤 .......................................................................5
数据抽象与局部视图设计 ...........................................................................5
视图的集成 ....................................................................................................7
第四章 逻辑结构设计 ........................................................................8
E-R 图向关系模型的转换 .............................................................................8
数据库的结构 ...............................................................................................8
触发器的设计 ..............................................................................................10
视图的设计 ..................................................................................................11
约束的设计 ..................................................................................................13
第五章 数据库的实施 ......................................................................15
表空间的建立 ..............................................................................................15
索引的建立 .................................................................................................17
表的建立与数据的载入 ..............................................................................18
数据库的运行 .............................................................................................23
大连交通大学数据库课程设计
1
第一章 绪论
课题简介
经过三年的学习,我们对计算机方面的知识有了很大的提升,本着理论联系实际的宗
旨,通过学校提供的这次课程设计实践的机会,在指导教师的帮助下,历经两周时间,我
自行设计一套家庭财务管理系统,在下面的各章中,我将以这套家庭财务管理系统为例,
谈谈其开发过程和所涉及到的问题。
设计目的
实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识、DB2 的有关知识和
数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理
系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维
护以及系统评价的一般过程,为毕业设计打下基础。
设计内容
选择课题并且对课题的相关信息有一定的了解,对于我选的课题来说,我必须了解家
庭财务管理系统的构造以及收入支出的信息还有银行的相关信息。将这些信息输入到数据
库中,使之能够进行查询、修改、删除并且与家庭财务管理系统执行相同的操作。在需求
分析阶段,需要完成家庭财务管理系统的具体分类和实施过程流图。概念设计阶段要完成
数据抽象与局部视图设计以及视图的集成。逻辑结构设计阶段要把 E-R 图转化为关系模式。
最后是数据库的实施和运行。
大连交通大学数据库课程设计
2
第二章 需求分析
需求分析的任务
调查家庭财务管理系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和
操作要求进行详细分析,形成需求分析说明书。最重要的是调查、收集信息、分析家人作
为管理员登陆供其他家人进行查阅流程。处理要求、数据的安全性与完整性要求。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机(即查阅
人)的界面要简单明了,易于操作,服务器程序利于维护。
需求分析的过程
为方便其他家人查阅家庭财务信息,需开发一个财务管理系统。包括登录时间、存取
信息、存取的金额、收支差、管理员编号,输入家庭财务管理系统的客户端程序,系统经
过处理后,为其他家人提供更新后的数据。相对于银行,本系统与银行管理系统和资产账
户系统保持一致。如果本系统出现问题,家人可以凭借银行提供的账户单更改。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要
简单明了,易于操作,服务器程序利于维护。
数据字典与流程图
1.业务流程分析
经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,
给出家庭成员,管理员信息、家庭财务信息和银行账户参考信息的具体需求。
① 调查家庭成员需求
① 管理家庭成员需求
查询功能:
每个家庭成员对应一组个人基本信息
大连交通大学数据库课程设计
3
成员编号
个人姓名
个人性别
密码
① 设置家庭财务管理员需求
登陆功能:
分配给每个家庭成员各自的管理员编号
输入账号登陆财务管理系统
输入密码登陆财务管理系统
① 更新查阅家庭财务信息需求
记录功能:
记录更新财务信息的登陆时间
更新功能
录入存取信类型
录入存取金额
根据假设的每个人月收入 5000 元更改当月收支差
查询功能
根据登陆时间查询相关财务信息
查询每组财务信息对应的管理员编号,进一步了解管理员编号对应的家庭
成员财务信息的情况
① 银行管理需求
查询功能:
查询银行编号
查询银行名称
查询银行的缩写简称
查询银行在国际上的编号
① 资产账户参照需求
查询功能
查询该笔资产的编号
查询有关银行账号
查询该笔资金的类型
查询开户人的编号
查询与资产编号和银行账号相对应的银行编号
更新功能
根据假设的每个家庭成员原资产总额为 10000 元修改变化后的资产总额,
大连交通大学数据库课程设计
4
并供修改财务信息时参考
2.系统模块分析
在调查完了家庭成员需求之后,就要开始分析家庭成员需求。在此,我们采用自顶向
下的结构化分析方法(SA 方法)。首先,定义全局概念结构的框架,
3.数据字典
将所有子系统全部细化。将所有用户需求分析完毕之后,就要开始构造数据字典了。
经分析之后,本系统要用到五个基本表:家庭成员表,管理员,财务信息表,银行表,资
产账户表。数据结构定义如表所示。
数据结构定义
数据结构名 含义说明 组成
家庭成员 定义了家庭成员的有关信息 姓名,性别,出生日期,手
机,工作单位,管理员编号
管理员 定义了管理员的有关信息 管理员编号,登陆账户,登
陆密码
财务信息 定义了财务信息的有关信息 存取,时间,金额,收支差,
管理员编号
银行 定义了银行的有关信息 银行编号,名称,简称,国
际编号
资产账户 定义了资产账户的有关信息 编号,银行账号,资金类型,
开户人编号,开户日期,存
款类型,资金总额,备注,
大连交通大学数据库课程设计
5
银行编号
第三章 概念结构设计
概念结构设计的方法与步骤
概念设计阶段我也采用自顶向下的方法,即自顶向下的进行需求分析,然后再次自顶
向下的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个
全局概念模式。
数据抽象与局部视图设计
按照家庭财务管理系统总框架图,设计实体属性图以及局部 E-R 图。
大连交通大学数据库课程设计
6
……….
大连交通大学数据库课程设计
7
视图的集成
经过逐步细化再进行每两个一集成初步形成一个 E-R 图,最后得到家庭财务管理总体
概念结构 E-R 图。
大连交通大学数据库课程设计
8
大连交通大学数据库课程设计
9
第四章 逻辑结构设计
E-R 图向关系模型的转换
将图 总体概念结构 E-R 图转化成关系模型。将转化的关系模式进行优化,最终达
到第三范式。(至少包括 5 张表,每个表都有主键,设必要的外键。)
家庭成员表(姓名,性别,出生日期,手机,工作单位,管理员编号)
管理员表(管理员编号,登陆账户,登陆密码)
财务信息表(时间,存取,金额,收支是否平横,管理员编号)
银行表(银行编号,名称,简称,国际编号)
资产账户表(编号,银行账号,资金类型,开户人编号,开户日期,存款类型,资金总额,
备注,银行编号)
数据库的结构
根据总体结构图设计各表的结构,其相应表的定义如下:
家庭成员表的结构(member)
字段名 数据类型 长度 是否为空 主/外键 描述
name varchar 50 否 主 姓名
sex varchar 50 否 性别
birthdate date 否 出生日期
phonenumber decimal 否 手机
workplace varchar 50 否 工作单位
administratornumber decimal 否 外 管 理 员 编
号
管理员表的结构(administrator)
字段名 数据类型 长度 是否为空 主/外键 描述
administratornumber decimal 否 主 管 理 员 编
号
logname varchar 50 否 登录账户
password decimal 否 登陆密码
大连交通大学数据库课程设计
10
财务信息表的结构(finance)
字段名 数据类型 长度 是否为空 主/外键 描述
logtime timestamp 否 主 时间
depositandwithdrawal varchar 50 否 存取
money decimal 否 金额
gap decimal 否 收支差
administratornumber decimal 否 外 管 理 员 编
号
银行表的结构(bank)
字段名 数据类型 长度 是否为空 主/外键 描述
banknumber decimal 否 主 银行编号
bankname varchar 50 否 名称
nickname varchar 50 否 简称
inso decimal 否 国际编号
资产账户表的结构(asset)
字段名 数据类型 长度 是否为空 主/外键 描述
number decimal 否 编号
bankaccount decimal 否
主
银行账号
capitaltype varchar 50 否 资金类型
openernumber decimal 否 开户人账号
opendate date 否 开户日期
savingtype varchar 50 否 存款类型
totalcapital decimal 否 资金总额
remark varchar 50 否 备注
banknumber decimal 否 外 银行编号
大连交通大学数据库课程设计
11
触发器的设计
根据应用要求,设计一个触发器,写出 SQL 语句。
建立触发器 GAP_TRIGGER
CREATE TRIGGER _TRIGGER NO CASCADE BEFORE INSERT ON
REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL
WHEN(<0)
BEGIN ATOMIC
Declare overage decimal(30,0);
set overage=(*(-1));
If ='withdrawal' then
set =overage;
else SIGNAL SQLSTATE '7500' ('Exception');
End IF;
End 触发触发器 GAP_TRIGGER 条件的操作:
触发后的结果:
大连交通大学数据库课程设计
12
视图的设计
根据应用要求,至少设计一个视图,写出 SQL 语句。
① 创建视图 inventory
create view inventory(name,logtime,deposit or withdrawal,money,balance)
as select name,logtime, depositandwithdrawal,money,gap
from ,
where . administratornumber =. administratornumber;
创建视图后查询的结果:
大连交通大学数据库课程设计
13
① 创建视图 inventory
create view inventory2
(number,bankname,bankaccount,capitaltype,openernumber,opendate,savingtype,
totalcapital)as select
number,bankname,bankaccount,capitaltype,openernumber,opendate,savingtype,
totalcapital
from ,
where =;
创建视图后查询的结果:
大连交通大学数据库课程设计
14
约束的设计
根据应用要求,至少设计一个 check 约束,写出 SQL 语句。
① 创建 password_check 约束条件
constraint password_check check(PASSWORD>=1 and PASSWORD<=9999);
添加结果:
① 创建 sex_check check 约束条件
constraint sex_check check(SEX in(‘male’,’female’));
添加结果:
大连交通大学数据库课程设计
15
① 创建 dandw_check check 约束条件
constraint dandw_check
check(DEPOSITANDWITHDRAWAL in(‘deposit’,’withdrawal’));
添加结果:
大连交通大学数据库课程设计
16
第五章 数据库的实施
表空间的建立
建立表空间(至少两个以上,存放在目录容器(SMS 表空间)和文件容器(DMS 表空
间)中),写出相关的 SQL 语句。
① 建立 DMS 表空间 dms01
create rugular tablespace dms01 pagesize 4 k managed by database using(FILE 'D:\DMS\dms01'
5120) extentsize 16 overhead prefetchsize 16 transferrate
bufferpool ibmdefaultbp dropped table recovery on;
(2) 建立 DMS 表空间 dms02
create rugular tablespace dms02 pagesize 4 k managed by database using(FILE 'D:\DMS\dms02'
5120) extentsize 16 overhead prefetchsize 16 transferrate
bufferpool ibmdefaultbp dropped table recovery on;
(3) 建立 DMS 表空间 dms03
create rugular tablespace dms03 pagesize 4 k managed by database using(FILE 'D:\DMS\dms03'
5120) extentsize 16 overhead prefetchsize 16 transferrate
bufferpool ibmdefaultbp dropped table recovery on;
(4) 建立 DMS 表空间 dms04
create rugular tablespace dms04 pagesize 4 k managed by database using(FILE 'D:\DMS\dms04'
5120) extentsize 16 overhead prefetchsize 16 transferrate
bufferpool ibmdefaultbp dropped table recovery on;
(5) 建立 DMS 表空间 dms05
create rugular tablespace dms05 pagesize 4 k managed by database using(FILE 'D:\DMS\dms05'
5120) extentsize 16 overhead prefetchsize 16 transferrate
bufferpool ibmdefaultbp dropped table recovery on;
(6) 建立 SMS 表空间 sms
CREATE REGULAR TABLESPACE SMS PAGESIZE 4 K MANAGED BY SYSTEM
USING ('D:\SMS' ) EXTENTSIZE 16 OVERHEAD PREFETCHSIZE 16
TRANSFERRATE BUFFERPOOL IBMDEFAULTBP DROPPED TABLE
RECOVERY ON;
大连交通大学数据库课程设计
17
创建结果:
大连交通大学数据库课程设计
18
索引的建立
建立索引(至少一个唯一索引、一个聚簇索引),要求表和索引存储在不同的表空间里,
写出相关的 SQL 语句。
① 建立索引 administratornumber_index
create unique index administratornumber_index on member(administratornumber);
创建结果:
(2)建立索引 banknumber_index
create cluster index banknumber_index on asset(banknumber);
创建结果:
大连交通大学数据库课程设计
19
表的建立与数据的载入
建立设计好的表,触发器、视图和约束。
每个基本表一个抓图。
① 家庭成员表(member)
创建的 SQL 语句:
create table member
(name varchar(50) NOT NULL,
sex varchar(50) NOT NULL,
birthdate date NOT NULL,
phonenumber decimal(30,0) NOT NULL,
workplace varchar(50) NOT NULL,
administratornumber decimal(30,0) NOT NULL,
primary key(name),
foreign key(administratornumber)
references administrator(administratornumber));
家庭成员表(member)表
收录了 10 位家庭成员的个人信息,包括姓名,性别,出生日期,手机号,工作单位。
大连交通大学数据库课程设计
20
① 管理员表(administrator)
创建的 SQL 语句:
create table administrator
(administratornumber decimal(30,0) NOT NULL,
logname varchar(50) NOT NULL,
password decimal(30,0) NOT NULL,
primary key(administratornumber),
constraint password_check check(password>=1 and password<=9999));
管理员表(administrator)
收录了 10 位家庭成员的管理员信息,包括管理员编号,登录账户,登陆密码。
大连交通大学数据库课程设计
21
① 财务信息表(finance)
创建的 SQL 语句:
create table finance
(logtime timestamp NOT NULL,
depositandwithdrawal varchar(50) NOT NULL,
money decimal(30,0) NOT NULL,
gap decimal(30,0) NOT NULL,
administratornumber decimal(30,0) NOT NULL,
primary key(logtime),
foreign key(administratornumber)
references administrator(administratornumber));
财务信息表(finance)
收录了 10 位家庭成员最近的财务信息,包括登陆时间,存取类型,金额,收支差,
管理员编号。
大连交通大学数据库课程设计
22
① 银行表(bank)
创建的 SQL 语句
create table bank
(banknumber decimal(30,0) NOT NULL,
bankname varchar(50) NOT NULL,
nickname varchar(50) NOT NULL,
inso decimal(30,0) NOT NULL,
primary key(banknumber));
银行表(bank)
收录了最近交易过的 10 间银行的信息(可重复),包括银行编号,名称,简称,国际编号。
① 资产账户表(asset)
大连交通大学数据库课程设计
23
创建的 SQL 语句
create table asset
(number decimal(30,0) NOT NULL,
bankaccount decimal(30,0) NOT NULL,
capitaltype varchar(50) NOT NULL,
openernumber decimal(30,0) NOT NULL,
opendate date NOT NULL,
savingtype varchar(50) NOT NULL,
totalcapital decimal(30,0) NOT NULL,
remark varchar(50) NOT NULL,
banknumber decimal(30,0) NOT NULL,
primary key(number,bankaccount),
foreign key(banknumber) references bank(banknumber));
资产账户表(asset)
收录了最近十笔在不同银行交易过的资产账户信息,包括资产交易编号,银行账
号,资金类型,开户人账号,开户日期,存款类型,资金总额,备注,银行编号
大连交通大学数据库课程设计
24
数据库的运行
抓一些查询结果的界面,至少五个,对每个查询的图,写出相应得查询语句。
① 插入操作
①
对 bank 表进行插入操作
插入结果
大连交通大学数据库课程设计
25
①
对 asset 表进行插入操作
插入结果
① 查询操作
①
对 name,sex,birthdate,phonenumber,workplace 进行查询操作
查询结果
大连交通大学数据库课程设计
26
①
对 name,depositandwithdrawal,money 进行查询操作
查询结果
大连交通大学数据库课程设计
27
① 更新操作
①
对 administrator 进行更新操作
更新结果
大连交通大学数据库课程设计
28
①
对 administrator 进行更新操作
更新结果
① 删除操作
①
对 financ 进行删除操作
删除结果
①
对 member 进行删除操作
大连交通大学数据库课程设计
29
删除结果