当前位置:文档之家› 数据库课程设计

数据库课程设计

数据库课程设计

项目报告

设计题目:银行核心业务管理系统

一、课程设计目的

本小组主要针对《数据库原理与应用》这门课程进行设计。数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。通过本次课程设计,能够培养我们在课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,进一步掌握数据库系统的理论和方法,培养和锻炼开发管理信息系统的能力,为今后信息系统开发、毕业设计及今后从事专业工作打下良好的基础。

本课程设计要求了解银行核心业务管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。主要包括:需求分析、数据分析、概念模型建立,系统逻辑模型设计方法;功能设计、物理模型设计方法;系统的实现等方法。完成一个小型系统后台数据库的设计与配置。

二、课程设计任务与要求

(一)任务

任现有一商业银行需要开发信息系统完成其核心业务。该银行接受储蓄和支票存款业务,储户采用实名存款,需登记真实姓名,并出具身份证号码。储户可以办理多张银行卡。系统管理存取款业务和转账业务,储蓄存款客户依法支付扣税后利息,支票存款账户有按约有一定透支额度。客户可以销户,存折或卡丢失后,可以申请挂失,挂失后该帐户即被冻结,直到储户补办新折或卡后。根据上述描述,设计并开发一个银行存款业务管理系统。

(二)设计要求

1.实现开户业务流程:

(1)用户填写基本信息

(2)根据用户身份证号查询该用户是否已经是本行客户

(3)如果不是,先登记基本信息,再开户;如果是,则直接开户

(4)确定存款账户类型及金额;填写账户相关信息;用户预留密码;打印存折或发卡。假设一个账户只有一个户主。

2.实现办卡业务流程

3.实现销户业务流程

4.实现挂失业务流程

5.实现存款业务流程

6.实现取款业务

7.实现转账业务

8.实现信息查询功能

能够查询用户信息(包括客户ID(ID),姓名(NAME),性别(SEX),联系方式(PHONE),职业(JOB),家庭地址(ADDRESS)),账户信息(包括账户ID(AC_ID),客户ID(CUS_ID),密码(PSW),账户余额(BALANCE),账户所属分行ID(BRANCH_ID),利率(INTEREST_RATE),开户时间(O_DATE))以及银行信息(包括分行编号(BRANCH_ID),分行名称(BRANCH_NAME),分行地址(ADDRESS))

三、课程设计说明

(一)需求分析

1.数据需求

银行核心业务管理系统需要完成的功能主要有:

客户基本信息的输入、查询、更新,包括客户ID(ID),姓名(NAME),性别(SEX),联系方式(PHONE),职业(JOB),家庭地址(ADDRESS)。

储蓄存款账户信息的输入、查询、更新,包括账户ID(AC_ID),客户

ID(CUS_ID),密码(PSW),账户余额(BALANCE),账户所属分行

ID(BRANCH_ID),利率(INTEREST_RATE),开户时间(O_DATE)。

支票存款账户信息的输入、查询、更新,包括账户ID(AC_ID),客户

ID(CUS_ID),密码(PSW),账户余额(BALANCE),账户所属分行

ID(BRANCH_ID),透支额度(OVERDRAFT_AMOUNT),开户时间(O_DATE)。核心业务办理信息(分储蓄存款账户和支票存款账户两类)的输入、查询、更新,包括业务编号(ITEM_NUM),账户ID(AC_ID),金额(AMOUNT),业务类型(TYPE),备注(REMARK),业务办理时间(DATE)

银行分支信息的输入、查询、更新,包括分行编号(BRANCH_ID),分行名

称(BRANCH_NAME),分行地址(ADDRESS)

管理员管理:包括录入客户基本信息、按照客户业务需求办理相关业务,更新管理信息系统的相关数据。

2.业务需求

在客户信息管理部分,要求:

(1)可以查询客户的基本信息。

(2)可以进行添加及删除的操作。

(3)可以对联系方式(PHONE),职业(JOB),家庭地址(ADDRESS)信息进

行更新的操作。

在业务办理信息管理部分,要求:

(1)可以查询业务办理的相关信息。

(2)可以进行添加及删除的操作。

(3)可以对密码(PSW),账户余额(BALANCE)信息进行更新的操作。

在银行分行信息管理部分,要求:

(1)可以查询分行的相关信息。

(2)可以进行添加及删除的操作。(分行设点/撤点)

(3)可以对分行名称(BRANCH_NAME),分行地址(ADDRESS)信息进行

更新的操作。

3.关系模式

(1)客户(客户ID,姓名,性别,联系方式,职业,家庭地址)

(2)储蓄存款账户(账户ID,客户ID,密码,账户余额,账户所属分行ID,利率,开户时间)

(3)支票存款账户(账户ID,客户ID,密码,账户余额,账户所属分行ID,透支额度,开户时间)

(4)储蓄存款核心业务(业务编号,账户ID,金额,业务类型,备注,业务办理时间)

(5)支票存款核心业务(业务编号,账户ID,金额,业务类型,备注,业务办理时间)

(6)银行分支(分行编号,分行名称,分行地址)

4.数据字典

为了使各数据流,数据处理过程,存储过程不能反映其中的数据项目,数据特性,所以用数据字典来对数据流程图中的各成份进行具体的定义,为系统的分析,设计

(二) 概念结构设计

1.实体图

根据课程设计所要实现的功能,建立它们之间的关系,进而实现逻辑结构功能。银行核心业务管理系统可以划分的实体有:客户实体,储蓄存款账户实体,支票存款账户实体,核心业务实体,银行分支实体,用E-R一一描述这些实体:

(1)客户实体:

(2)储蓄存款账户实体:

(3)支票存款账户实体:

(4)核心业务实体(分储蓄存款账户和支票存款账户两类):

(5)银行分支实体:

2.总E-R图:

(三)逻辑结构设计

1.关系模式

表3-3-1 客户基本信息表CUSTOMER

表3-3-2 储蓄存款账户信息表ACCOUNT_SAV

表3-3-3 支票存款账户信息表ACCOUNT_CHE

表3-3-4 储蓄存款账户核心业务办理信息表ITEM_SAV

表3-3-5储蓄存款账户核心业务办理信息表ITEM_CHE

表3-3-6 银行分行基本信息表BRANCH

(四) 物理结构设计

数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。

1.建立索引:

①对表在属性列上建立聚集索引,在属性列上建立非聚集索引上建立非聚集索引。

2.存储结构

确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。

将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统的性能。所以系统将日志

文件和数据文件存放在不同磁盘上。

(二)数据库建立

1.创建数据库

2.创建表(通过Oracle Enterprise Manager)

(1)创建客户基本信息表CUSTOMER

(2)储蓄存款账户信息表ACCOUNT_SAV

(3)支票存款账户信息表ACCOUNT_SAV

(4)储蓄存款账户核心业务办理信息表ITEM_SAV

(5)支票存款账户核心业务办理信息表ITEM_SAV

(6)银行分行基本信息表BRANCH

3.数据初始化

(1)将客户信息加入表customer中

(2)将银行分支信息加入表BRANCH中

insert into branch

values('建行','西南','00000');

4.数据库用户权限管理

该系统设置两种类型的用户,客户(customers)和管理员(manager)

(1)客户customers

【创建】

create user customers

identified by mysc

default tablespace users

quota 10M on users;

【授权】

grant connect to customers; //授予登陆权限

//授予的操作权限

Grant execute on deposit_sav to customers;

Grant execute on deposit_che to customers;

Grant execute on withdrawal_sav to customers;

Grant execute on withdrawal_che to customers;

Grant execute on transfer_sav to customers;

Grant execute on transfer_che to customers;

【测试】

connect customers / mysc

setserveroutput on;

call sys.deposit_sav('0000000000000000000','123456',10000);(授权成功) insert into account_sav

values ('0000000000000000002','510122199604788729','123456',100000,'建行',1.21,sysdate); //不成功,因为未授权

select * from sys.item_sav; //成功

(2)管理员manager

【创建】

create user manager

identified by 1234

default tablespace users

quota 10M on users;

【授权】

grant connect to manager; //授予登陆权限

//授予的操作权限

Grant execute on deposit_sav to manager;

Grant execute on deposit_che to manager;

Grant execute on withdrawal_sav to manager;

Grant execute on withdrawal_che to manager;

Grant execute on transfer_sav to manager;

Grant execute on transfer_che to manager;

Grant execute on creat_save to manager;

Grant execute on creat_che to manager;

Grant execute on lost_sav to manager;

Grant execute on lost_che to manager;

Grant execute on deleteCus to manager;

***********

grantselect,update,insert on customer to manager;

grant select on item_sav to manager;

grant select on item_che to manager;

5.建立存储过程

(1)建立办卡记录存储过程

存储存款账户办卡

create or replace procedure creat_save(cu_numchar,psdchar,br_na char)

as

temp char(18);

temp_br char(5);

begin

select id into temp from customer where id=cu_num;

select BR_ID into temp_br from branch where BRANCH_NAME = br_na;

insert into account_sav values(temp_br||to_char(sysdate,

'yyyymmddhh24miss'),cu_num,psd,10,br_na,1.21,sysdate);

commit;

exception

whenno_data_found then

dbms_output.put_line('该用户不存在');

end;

测试:

call creat_save('510122199604788729','156789','建行');

支票存款账户办卡

create or replace procedure creat_che(cu_numchar,psdchar,br_na char)

as

temp char(18);

temp_br char(5);

begin

select id into temp from customer where id=cu_num;

select BR_ID into temp_br from branch where BRANCH_NAME = br_na;

insert into account_che values(temp_br||to_char(sysdate,

'yyyymmddhh24miss'),cu_num,psd,10,br_na,1.21,sysdate);

commit;

exception

whenno_data_found then

dbms_output.put_line('该用户不存在');

end;

(2)建立销户记录存储过程deleteCus(cu_id char)

create or replace procedure deleteCus(cu_id char)

as

begin

delete from item_sav where ac_id in

(selectac_id from account_sav where cus_id=cu_id);

delete from item_che where ac_id in

(selectac_id from account_che where cus_id=cu_id);

delete from account_sav where cus_id = cu_id;

delete from account_che where cus_id = cu_id;

delete from customer where id = cu_id;

dbms_output.put_line('删除成功!');

commit;

exception

whenno_data_found then

dbms_output.put_line('该用户不存在');

end;

【测试】

setserveroutput on;

calldeleteCus('510122199604788729');

(3)建立挂失记录存储过程

储蓄存款账户挂失

create or replace procedure lost_sav(cus_numchar,ac_numchar,br_na char) as

temp char(5);

begin

select BR_ID into temp from branch where BRANCH_NAME = br_na;

相关主题
文本预览
相关文档 最新文档