数据库设计报告
题 目: 家庭财务管理
班 级: 09 信管 1 班
组 长: 邵崇洁
组 员: 丁特战~沈颖杰
指导老师: 胡秋芬
完成日期: 2010 年 6 月 21 日
一、引言
家庭财务管理系统是每一个家庭管理家庭财务收入和支出的不可缺少的一个管理信息系统,它的内容
对于家庭的管理者来说是至关重要的,所以家庭财务管理系统应该能够为每一个家庭的管理者提供充足的
信息和快捷的查询手段,大大方便了家庭的管理者的合理理财。
二、需求分析
家庭财务管理系统是对家庭成员、往来人员信息的规划,对家庭成员财政实际收入、财政支出这些方
面的计划,对于往来人员详细得记录使用资产、资金互补情况。
1. 功能分析
经过分析财务管理的过程,系统的功能可用图 1 表示。
图 1 功能结构图
2. 数据流图
我们采用自顶向下的数据流图设计方法。顶层的数据流程图如图 2 所示。
家庭财务管理系统
家庭成员管理员
家庭成员管理 收入管理 支出录入 收入项目录入 收入录入支出项目管理 收入项目管理支出管理 支出项目录入
家庭成员管理包括家庭成员信息的查询、添加、删除和修改功能
收入管理包括收入信息的查询、添加、删除和修改功能
支出管理包括支出信息的查询、添加、删除和修改功能
收入项目管理包括收入项目信息的查询、添加、删除和修改功能
支出项目管理包括支出项目信息的查询、添加、删除和修改功能
其中:
图 2 顶层的数据流图
接着对顶层数据流程图进一步细化,得出第 1 层数据流程图如图 3 所示。
图 3 第 1 层的数据流图
家庭财务管理系统
管理员
家
庭
成
信
息
收
入
信
息
支
出
信
息
收
入
项
目
信
息
支
出
项
目
信
息
家庭成员
收
入
收
入
项
目
支
出
支
出
项
目
家庭成员信息
收入信息
支出信息
收入项目
支出项目
收入项目信息
支出项目信息
支出信息
收入信息
家庭成员信息
管理员
1
家庭成员管
理
2
收入管理
3
支出管理
4
收入项目管
理
5
支出项目管
理
家庭成员信息
收入信息
支出信息
收入项目信息
支出项目信息
家庭成员
信息
收入信息
支出信息
收 入 项
目信息
支 出 项
目信息
三、概念结构设计
概念结构设计阶段的主要任务就是将需求分析阶段得到的用户需求抽象为概念模型,它
独立于具体的 DBMS,通常用 E-R 图的形式表示。
绘制 E-R 图主要在于进行实体与属性的区分及找出实体与实体之间的联系。
实体是一个存在着显著的、易辨认的属性的客观对象。现实世界中一组具有某些共同特
性和行为的对象就可以抽象为一个实体。
属性是对象类型的组成成分,组成成分和对象类型之间是“is part of”的关系。属性具有
以下两个特点:
1.属性必须是不可分的数据项,不能包含其他属性。
2.属性不能和其他实体具有联系,与其他实体有联系的属性一般应按照实体处理。
实体与实体之间的联系还包括一对一联系(1:1)、一对多(1:n)、多对一联系
(n:1)和多对多联系(n:n)
根据家庭财政管理分析,得出家庭成员、收入、支出、收入项目和支出项目 5 实体,收
入项目与收入之间存在属于关系、支出项目与支出之间存在属于关系、家庭成员与支出、收
入之间存在管理关系,对应的 E-R 图如图 5 所示,
图 5 E-R 图
四、逻辑结构设计
逻辑结构设计阶段的任务是将概念结构转化为关系、网状或层次模型,将转化来的关系、
网状或层次模型向特定 DBMS 支持下的数据模型转化,最后对数据模型进行优化。关系模
型是当前最流行的数据模型。
E-R 图向关系模型的转换的主要规则为:
1.一个实体型转换为一个关系模式
2.一个 1:1 联系可以转换一个独立的关系模式,也可以与任意一端对应的关系模式合
并。
3.一个 1:n 联系可以转换一个独立的关系模式,也可以与 n 端对应的关系模式合并。
家庭成员
编号
姓名 性别
收入
时间
金额
支出
金额
时间
收入项目
名称编号
管理 1
属于
编号 名称
1
n
1
n
权限
管理 2
属于
支出项目
1
n
n
1
4.一个 m:n 联系转换一个关系模式。
根据如前绘制的 E-R 图及转换规则,得出以下几个关系模式:
1. 家庭成员表(编号、姓名、性别、权限)
2.收入表(编号、时间、金额)
3.支出表(编号、时间、金额)
4.收入项目表(编号、名称)
5.支出项目表(编号、名称)
五、数据库表结构及 SQL 定义语句
在确定系统逻辑结构之后,我们首先要为系统确定一个合适应用的物理环境,根据课程
所学,我们选择了 Oracle 10g。
表结构的设计主要在于确定各个字段的数据类型、字段宽度及是否包括约束等。这里主
要包括 5 个表:家庭成员表、收入表、支出表、收入项目表、支出项目表,表达结构如下所
示。
(家庭成员表)
字段名 字段意义 数据类型 字段宽度 字段约束
snamen 姓名 Varchar2 8 Not null
sex 性别 Varchar2 2 Not null
spower 权限 Varchar2 15 Not null
sno 编号 Varchar2 10 Primary key
(收入表)
字段名 字段意义 数据类型 字段宽度 字段约束
itime 时间 Varchar2 20 Not null
imony 金额 Varchar2 9 Not null
isno 编号 Varchar2 10 Primary key
(支出)
字段名 字段意义 数据类型 字段宽度 字段约束
etime 时间 Varchar2 20 Not null
emony 金额 Varchar2 9 Not null
esno 编号 Varchar2 10 Primary key
(支出项目)
字段名 字段意义 数据类型 字段宽度 字段约束
osno 编号 Varchar2 10 Primary key
oname 名称 Varchar2 18 Not null
(收入项目)
字段名 字段意义 数据类型 字段宽度 字段约束
rsno 编号 Varchar2 10 Primary key
rname 名称 Varchar2 18 Not null
对应与以上表结构,创建表的 SQL 语句如下:
1.创建 family(家庭成员表)
create table family(sno varchar2(10) constraint pk_family primary key, smane varchar2(8)
not null, sex varchar2(2) not null, spower varchar2(15) not null);
2.创建 income(收入)
create table income(isno varchar2(10) constraint pk_income primary key,time varchar2(20)
not null, imony varchar2(9) not null);
3.创建 expenses(支出)
create table income(esno varchar2(10) constraint pk_expenses primary key,etime
varchar2(20) not null, emony varchar2(9) not null);
4.创建 outgo(支出项目)
create table income(osno varchar2(20) not null, oname varchar2(9) not null);
5.创建 receive(收入项目)
create table income(rsno varchar2(20) not null, rname varchar2(9) not null);
六、小结
通过本次数据库设计,我了解了怎么样来设计一个数据库,通过本次设计我发现自己在
课本上所学的东西并不是全部,在掌握课本知识的同时还要实践不然你还是不懂,这次数据
库设计有老师在一般指点我们才能完成,要不然以我们的基础完成它有难度。