目录1绪论1.1 选题目的及意义 (2)1.2 设计内容 (2)2需求分析2.1 功能需求 (2)2.2 数据需求 (2)3数据库设计3.1概念结构设计 (7)3.2逻辑结构设计 (9)3.3物理结构设计 (11)4.设计结果及分析4.1查询与结果分析 (24)5.设计体会 (29)参考文献参与设计人员:姓名学号班级负责项目陈盛业20114419 信管(2)需求分析李宁20114432 信管(2)数据库设计、分析向绍鹏20114462 信管(2)绪论、设计体会阳治安20114466 信管(2)数据库设计、分析1.1选题的目的及意义银行管理系统:该系统要求建立的用户表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,该系统对数据库表的设计要求会很高,所以完成这个题目,能更好的训练数据库设计和VC的编程能力,选择该题目就是充分训练数据库表设计的能力和运用VC的能力。
1.2 设计内容用户管理模块:建立新用户、删除老用户、更改用户操作;账户操作模块:账户信息、活期存取款操作、查询活期操作记录、定期存款、定期取款、查询定期操作记录;数据库模块:数据库备份、数据库恢复;2需求分析2.1功能需求对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。
2.2数据需求2.21数据字典银行管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述清楚。
在定义的银行数据库管理系统数据字典中,主要对数据流图中的账户信息定期历史操作记录定期存款定期取款活期操作进行说明。
【1】数据需求的描述(1)数据项名称:帐号含义说明:惟一标识一个用户类型:数字型长度:20逻辑关系:不允许为空(2)数据项名称:开户人姓名类型:字符型长度:20逻辑关系:不允许为空(3)数据项名称:账户密码类型:数字型长度:6逻辑关系:不允许为空(4)数据项名称:身分证号类型:数字型长度:20逻辑关系:不允许为空(5)数据项名称:账户余额类型:数字型逻辑关系:不允许为空(6)数据项名称:开户日期类型:数字型逻辑关系:不允许为空(7)数据项名称:开户地址类型:字符型长度:30逻辑关系:不允许为空(8)数据项名称:利息类型:数字型逻辑关系:不允许为空(9)数据项名称:金额含义说明:可以表示为存入和支出类型:数字型逻辑关系:不允许为空(10)数据项名称:存入日期类型:数字型逻辑关系:不允许为空(11)数据项名称:存款人姓名类型:字符型长度:10逻辑关系:不允许为空(12) 数据项名称:存储年份类型:数字型逻辑关系:不允许为空(13) 数据项名称:存储利率类型:float型逻辑关系:不允许为空(14)数据项名称:取款人姓名类型:字符型长度:10逻辑关系:不允许为空【2】.数据结构的描述(1)数据名字:注册申请表数据来源:储户数据目的:储户信息数据组成:姓名+密码+住址+身份证号码(2)数据名字:储户信息表数据来源:储户数据目的:身份验证数据组成:姓名+密码+住址+身份证号码+现有金额(3)数据名字:利息清单数据来源:系统数据目的:储户数据组成:利息+姓名+取款时间(4)数据名字:存单数据来源:存款信息表数据目的:储户数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额(5)数据名字:取款单数据来源:储户数据目的:取款信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+取款金额+身份证号(6)数据名字:存款单数据来源:储户数据目的:存款信息表数据组成:姓名+到期时间+存入类型+存入时间+利率+存入金额+身份证号【3】. 数据存储描述(1)数据存储名称:储户基本表含义说明:存放储户的有关信息组成结构:储户信息包括账号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址。
说明:储户帐号具有惟一性和非空性。
(2)数据存储名称:活期存取款表含义说明:存放活期存取款的信息组成结构:活期存取款包括帐号,金额,办理日期,利息,账户余额;说明:帐号具有惟一性和非空性.(3)数据存储名称:定期存款表;含义说明:存放定期存款的信息组成结构:帐号,存款人姓名,金额,存储年份,年利率,存储日期说明:帐号,存储日期,存储年份,年利率具有惟一性和非空性. (4)数据存储名称:定期取款表; 含义说明:存放定期取款的信息组成结构:帐号,取款人姓名,取款金额,取款日期. 说明:帐号,取款人姓名,取款日期具有惟一性和非空性. (5)数据存储名称:定期记录表 含义说明:存放定期存取款的信息组成结构:帐号,存取款人姓名,操作金额,年份,操作日期 说明:帐号,操作日期具有惟一性和非空性.3. 数据库设计3.1概念结构设计图1银行基本信息实体图 图2储户基本信息实体图图3定期记录基本信息实体图图4 合并部分视图生成E-R图3.2 逻辑结构设计3.2.1 E-R图向关系模型的转换(1)一个1:1联系可转换为一个独立的关系模式,可以与任意一端对应的关系模式合并;(2)一个1:n联系可以转换为独立的关系模式,也可以与n端对应的关系模式合并;(3)一个m:n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分;将实体转化为关系模式。
由E-R 图转换成关系模式储户(帐号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址);活期存取款(nID,帐号,金额,办理日期,利息,账户余额);定期存款(nID,帐号,存款人姓名,金额,存储年份,年利率,存储日期);定期取款(nID,帐号,取款人姓名,取款金额,取款日期);定期记录(nID,帐号,存取款人姓名,操作金额,操作类型,操作日期)3.2.2判断每个表分别属于第几范式(1)由储户表(姓名,账号,密码,身份证号,性别,帐户余额,开户日期,开户地址)写出数据依赖:储户姓名→身份证号,储户姓名→账号,储户姓名→地址该表中的各个元组都不可再分、并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表满足BCNF范式。
(2)由活期存取款表(序号,利息,帐号,金额,办理日期,账户余额);写出数据依赖:利息→帐号,利息→办理日期,利息→金额该表中的每个元组都不可再分、并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表也满足BCNF范式。
(3)由定期存款表 (序号,年利率,帐号,存款人姓名,金额,存储年份,存储日期)写出数据依赖:年利率→存储年份,年利率→存储日期,该表中每个元组都不可再分并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表同样满足BCNF范式。
(4)由定期取款表 (序号,取款人姓名,帐号,取款金额,取款日期)写出数据依赖:取款人姓名→帐号该表中各个元组都不可再分同样无部分函数依赖和传递函数依赖并且主码都是候选码,所以该表同样满足BCNF范式。
(5)由定期记录表(序号,存取款人姓名,帐号,操作金额,操作类型,操作日期)写出数据依赖:存取款人姓名→帐号储户(帐号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址);活期存取款(nID,帐号,金额,类型,办理日期,利息,账户余额);定期存款(nID,帐号,存款人姓名,金额,存储年份,年利率,存储日期);定期取款(nID,帐号,取款人姓名,取款金额,取款日期);定期记录(nID,帐号,存取款人姓名,类型,操作金额,年份,操作日期)3.3 物理结构设计储户表主键:帐号;约束条件:各属性均非空,密码长度为6位;活期存取款表主键:nID;外键:帐号;被参照表:储户表约束条件:各属性均非空;定期存款表主键:nID;外键:帐号;被参照表:储户表约束条件:各属性均非空;定期取款表主键:nID;外键:nID;被参照表:定期存款表约束条件:各属性非空定期操作记录表主键:nID;外键:nID;被参照表:定期存款表,定期取款表约束条件:各属性非空3.4创建基本表提高查询速度,分别为各表经常查询的列建立索引。
(1)为chuhu(储户表)中的cno属性建立唯一索引cno:CREATE UNIQUE INDEX cno_index on chuhutable(cno);(2)为Hcq(活期存取款表)中nid属性建立唯一索引nid:CREATE UNIQUE INDEX nid_index ON Hcq(nid);(3)为dqcun (定期存款表)中nid属性建立降序唯一索引niddesc:CREATE UNIQUE INDEX niddesc ON dqcun(nid desc); (4)为dqqu (定期取款表)中nid属性建立升序唯一索引nidasc:CREATE UNIQUE INDEX nidasc ON dqqu(nid asc);(5)为dqjilu (定期记录表)中nid属性建立降序唯一索引niddesc:CREATE UNIQUE INDEX niddesc ON dqjilu n (nid desc);数据的载入是一个非常繁杂和重要的过程需要很大的工作量,可分为人工输入与其它格式数据文件导入。
该系统只是一个简单的实验系统,所以采用手工输入少量的数据可满足实验要求即可。
分别给储户基本信息表,活期存取款基本信息表,定期存款基本信息表,定期取款基本信息表和定期操作记录基本信息表输入数据。
下面若干个表分别显示了所要求的表基本信息息的录入和显示的结果(1)创建储户表Create table chuhu(CNo int primary key,CName char(20) not null,CPassword int not null,CID int not null,CAddress char(20) not null,CBalance int not null,CDate datetime not null,CSex char(2) not null,)图5利用查询编辑器创建储户信息表图6储户信息表(2)创建活期存取款表Create table Hcq(nID int primary key,CNo int not null,CMoney int not null,CBalance int not null,CDate datetime not null,CInterest int not null,)图7利用查询编辑器创建活期存取款表图8活期存取款表(3)创建定期存款表Create table dqcun(nID int primary key,CNo int not null,CName char(10) not null,CMoney int not null,Crate float not null,CYear int not null,CDate datetime not null,)图9利用查询编辑器创建定期存款表图10定期存款表(4)创建定期取款表Create table dqqu(nID int primary key,CNo int not null,CDate datetime not null,CMoney int not null,CName char(20) not null,)图11利用查询编辑器创建定期取款表图12定期取款表(5)定期操作记录表Create table dqjilu(nID int primary key,CNo int not null,CDate datetime not null,CStyle char(4) not null,CMoney int not null,CName char(8) not null,)图13利用查询编辑器创建定期操作记录表图14定期操作记录表3.4.1为系统创建视图(1)储户表的视图图15 储户表的视图(2)活期存取款表的视图图16活期存取款表的视图(3)定期存款表的视图图17 定期存款表的视图(4)定期取款表的视图图18 定期取款表的视图(5)定期操作记录的视图图19 定期操作记录的视图4.设计结果及分析4.1 查询与结果分析(1)查询储户姓名为王刚的用户的信息结果为:图20查询储户姓名为王刚的用户的信息(2)查询操作金额为85000元用户的帐号结果为:图21查询操作金额为85000元用户的帐号(3)查询定期存取款表中序号为1的用户的名字结果为:图22查询定期存取款表中序号为1的用户的名字(4)为储户表插入一条数据(10012365,张朋,000236,31426003017,鞍山,64,2003-12-20,男)的信息结果为:图23为储户表插入一条数据信息(5)创建角色u1并将对储户表查询,修改和插入的功能赋给角色u1create role u1grant select,update,inserton chuhuto u1结果为:图24创建角色u1并将对储户表查询,修改和插入的功能赋给角色u1(6)收回角色u1储户表修改的功能revoke updateon chuhufrom u1结果为:图25收回角色u1储户表修改的功能(7)删除角色u1结果为:图26删除角色u1(8)建立触发器,当向储户表插入新信息后,打印出又添加了一个供应商信息字样结果为:图27建立触发器(9)创建查看一个储户的基本信息的存储过程结果为:图28创建存储过程5.设计体会这次银行管理系统课程设计,我主要采用是Microsoft SQLSevere2005数据库设计软件。