数据库设计报告题目:家庭财务管理班级: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图主要在于进行实体与属性的区分及找出实体与实体之间的联系。实体是一个存在着显著的、易辨认的属性的客观对象。现实世界中一组具有某些共同特性和行为的对象就可以抽象为一个实体。属性是对象类型的组成成分,组成成分和对象类型之间是“ispartof”的关系。属性具有以下两个特点:1.属性必须是不可分的数据项,不能包含其他属性。2.属性不能和其他实体具有联系,与其他实体有联系的属性一般应按照实体处理。实体与实体之间的联系还包括一对一联系(1:1)、一对多(1:n)、多对一联系(n:1)和多对多联系(n:n)根据家庭财政管理分析,得出家庭成员、收入、支出、收入项目和支出项目5实体,收入项目与收入之间存在属于关系、支出项目与支出之间存在属于关系、家庭成员与支出、收入之间存在管理关系,对应的E-R图如图5所示,图5E-R图四、逻辑结构设计逻辑结构设计阶段的任务是将概念结构转化为关系、网状或层次模型,将转化来的关系、网状或层次模型向特定DBMS支持下的数据模型转化,最后对数据模型进行优化。关系模型是当前最流行的数据模型。E-R图向关系模型的转换的主要规则为:1.一个实体型转换为一个关系模式2.一个1:1联系可以转换一个独立的关系模式,也可以与任意一端对应的关系模式合并。3.一个1:n联系可以转换一个独立的关系模式,也可以与n端对应的关系模式合并。家庭成员编号姓名性别收入时间金额支出金额时间收入项目名称编号管理1属于编号名称1n1n权限管理2属于支出项目1nn14.一个m:n联系转换一个关系模式。根据如前绘制的E-R图及转换规则,得出以下几个关系模式:1.家庭成员表(编号、姓名、性别、权限)2.收入表(编号、时间、金额)3.支出表(编号、时间、金额)4.收入项目表(编号、名称)5.支出项目表(编号、名称)五、数据库表结构及SQL定义语句在确定系统逻辑结构之后,我们首先要为系统确定一个合适应用的物理环境,根据课程所学,我们选择了Oracle10g。表结构的设计主要在于确定各个字段的数据类型、字段宽度及是否包括约束等。这里主要包括5个表:家庭成员表、收入表、支出表、收入项目表、支出项目表,表达结构如下所示。1.family(家庭成员表)字段名字段意义数据类型字段宽度字段约束snamen姓名Varchar28Notnullsex性别Varchar22Notnullspower权限Varchar215Notnullsno编号Varchar210Primarykey2.income(收入表)字段名字段意义数据类型字段宽度字段约束itime时间Varchar220Notnullimony金额Varchar29Notnullisno编号Varchar210Primarykey3.expenses(支出)字段名字段意义数据类型字段宽度字段约束etime时间Varchar220Notnullemony金额Varchar29Notnullesno编号Varchar210Primarykey4.outgo(支出项目)字段名字段意义数据类型字段宽度字段约束osno编号Varchar210Primarykeyoname名称Varchar218Notnull5.receive(收入项目)字段名字段意义数据类型字段宽度字段约束rsno编号Varchar210Primarykeyrname名称Varchar218Notnull对应与以上表结构,创建表的SQL语句如下:1.创建family(家庭成员表)createtablefamily(snovarchar2(10)constraintpk_familyprimarykey,smanevarchar2(8)notnull,sexvarchar2(2)notnull,spowervarchar2(15)notnull);2.创建income(收入)createtableincome(isnovarchar2(10)constraintpk_incomeprimarykey,timevarchar2(20)notnull,imonyvarchar2(9)notnull);3.创建expenses(支出)createtableincome(esnovarchar2(10)constraintpk_expensesprimarykey,etimevarchar2(20)notnull,emonyvarchar2(9)notnull);4.创建outgo(支出项目)createtableincome(osnovarchar2(20)notnull,onamevarchar2(9)notnull);5.创建receive(收入项目)createtableincome(rsnovarchar2(20)notnull,rnamevarchar2(9)notnull);六、小结通过本次数据库设计,我了解了怎么样来设计一个数据库,通过本次设计我发现自己在课本上所学的东西并不是全部,在掌握课本知识的同时还要实践不然你还是不懂,这次数据库设计有老师在一般指点我们才能完成,要不然以我们的基础完成它有难度。