《数据库技术与开发》工程实训指导书
实训项目二:《银行ATM存取款机系统设计
与实现》
一、项目背景 1、项目任务
? ? ? ? ? ?
使用PowerDesigner完成数据库设计 创建数据库、创建表、创建约束 使用触发器和插入测试数据 模拟常规业务、创建视图 使用存储过程实现业务处理
利用事务实现较复杂的数据更新
2、项目技能目标
? ? ? ? ? ? ?
使用PowerDesigner完成数据库概念模型和数据库物理模型设计。 使用T-SQL语句创建数据库、表和各种约束。 使用T-SQL语句编程实现常见业务。 使用触发器实现多表之间的级联更新。 使用事务和存储过程封装业务逻辑。 使用视图简化复杂的数据查询。
使用游标技术实现结果集的行集操作。
3、需求概述
某银行是一家民办的小型银行企业,现有十多万客户,公司将为该银行开发一套ATM存取款机系统,对银行日常的存取款业务进行计算机管理,以便保证数据的安全性,提高工作效率。
要求根据银行存取款业务需求设计出符合第三范式的数据库结构,使用T-SQL语言创建数据库和表,并添加表约束,进行数据的增删改查,运用逻辑结构语句、事务、视图和存储过程,按照银行的业务需求,实现各项银行日常存款、取款和转账业务。
4、开发环境
? 数据库:SQL SERVER 2008开发版 ? 数据库建模工具:PowerDesigner15
5、问题分析
该项目的ATM存取款机业务如下:
26
《数据库技术与开发》工程实训指导书
(1) 银行存取款业务介绍
银行为客户提供了各种银行存取款业务。详见表1
表14.银行存取款业务 业务 活期 定活两便 通知 描述 无固定存期,可随时存取,存取金额不限的一种比较灵活的存款 事先不约定存期,一次性存入,一次性支取的存款 不约定存期,支取时需提前通知银行,约定支取日期和金额方能支取的存款 整存整取 选择存款期限,整笔存入,到期提取本息的一种定期储蓄。银行提供的存款期限有1年、2年和3年 零存整取 一种事先原定金额,逐月按约定金额存入,到期支取本息的定期储蓄。银行提供的存款期限由1年、2年和3年 自助转账 在ATM存取款机上办理同一币种账户的银行卡之间互相划转 (2) 客户信息
每个客户凭个人身份证在银行可以开设多个银行卡账户,开设账户时,客户需要提供的开户数据如表2所示:
表15.开设银行卡账户的客户信息 数据 姓名 身份证号 描述 必须提供 唯一确定客户,如果是二代身份证,则是由17位数字和1位数字或者字符X构成。如果是一代身份证,则身份证号全部是15位数字。 联系电话 分为座机号码和手机号码:座机号码由数字和“-”构成,由以下两种格式:XXX-XXXXXXXX或者XXXX-XXXXXXX。手机号码由11位数字构成,且前2位必须是13或者15开头。 居住地址 可以选择 (3) 银行卡账户信息 银行为每个账户提供一个银行卡,每个银行卡可以存入一种币种的存款,银行保存账户如表3所示:
表16.银行卡账户信息
数据 卡号 描述 银行的卡号由16位数字组成,其中:一般前8位代表特俗含义,如代表某总行某支行等,假定该行要求其营业厅的卡号格式为1010 3576 XXXX XXXX,后8位必须是随机产生且唯一,每4位号码后有空格。 密码 由6位数字构成,开户时默认为“888888” 币种 默认为RMB,目前该银行尚未开设其他币种存款业务。 存款类型 必须选择 开户日期 客户开设银行卡账户的日期,默认为当日 开户金额 客户开设银行卡账户时存入的金额,规定不得小于1元。 是否挂失 默认为“否” ? 客户持银行卡在ATM机上输入密码,经系统验证身份后办理存款、取款和转账等银行业务。银行规定,每个账户当前的存款金额不得小于1元。 (4) 银行卡交易信息
27
《数据库技术与开发》工程实训指导书
银行在为客户办理业务时,需要记录每一笔账目,账目交易信息如表4所示:
表17.银行卡交易信息 数据 描述 卡号 银行的卡号由16位数字组成 交易日期 默认为当日 交易金额 必须大于0元 交易类型 包括:存入和支取两种 备注 对每笔交易做必要的说明 (5) 银行卡手工账户和存取款单据信息 该银行要求这套软件实现银行客户的开户、存款、取款、转账和余额查询等业务,使得银行储蓄业务方便、快捷,同事保证银行业务数据的安全性。
为使开发人员尽快了解银行业务,该银行提供了银行卡手工账户和存取款单据的样本数据,以供项目开发时参考,参加表5和表6。
表18.银行卡手工账户样本数据
表19.存取款单据样本数据
6、实训进度安排
实训进度安排如下表所示:
表20.实训进度安排 实训内容 实训一:制定数据库设计与编程规范 实训二:数据库分析设计与建模
所需学时 4 8 28
提交文档 1份数据库设计与编程规范 数据库分析设计文档及数据库概念模《数据库技术与开发》工程实训指导书
型、物理模型。 实训三:创建数据库 实训四:创建触发器和插入测试数据 实训五:模拟常规业务 实训六:创建和使用视图 实训七:存储过程实现业务处理 实训八:利用事务实现转账业务 4 4 4 4 6 6 T-SQL源文件 T-SQL源文件 T-SQL源文件 T-SQL源文件 T-SQL源文件 T-SQL源文件 7、成绩考核
? 实训项目最终成绩由3部分构成:平日考勤20%+实训文档30%+实训项目完
成质量50%,
? 凡是报优的同学需参加公开答辩,讲解答辩10-15分钟。 ? 凡实训项目雷同,或者考勤不合格直接视同不及格。
二、项目实训内容
实训内容由5个实训项目构成,建议在参考代码和实现步骤基础上进行改进,每个实训子项目的T-SQL语句写成1个T-SQL源文件,如item1.sql。
1、实训一:制定《数据库设计与编程规范》
? 参考技术文档:《数据库设计规范 (1)》、《数据库设计规范(修订)》、《数据库
设计及编写规范》、《编程规范(T-SQL)》、《Transact-SQL_数据库编程命名规范》、《SQL_Server数据库编程规范》等技术文档,
? 制定一份10-15页,不少于3000字的《数据库设计与SQL编程规范》,要求
至少包含各个数据库对象的命名规范、编程规范及注释规范。
? 该实训项目的设计与编程要求遵循该实训制定的《数据库设计与编程规范》。
2、实训二:数据库分析设计与建模
阅读项目背景相关内容,在8学时内按下述推荐步骤完成下述实训内容: (1) 分析银行ATM存取款系统实体(2学时)
根据问题分析,明确银行ATM存取款系统的实体、实体属性及实体之间的关系:
? 在充分理解银行业务需求后,围绕银行的需求进行分析,确认与银行ATM
存取款有紧密关系的实体,并得到每个实体的必要属性。
? 根据业务,分析多个实体之间的关系。实体之间的关系可以是一对一、一对
多和多对多。
? 要求使用Visio绘制出ATM存取款系统ER图。 ? 参考资料:《ER设计》、《基本ER图要点》 (2) 规范数据库结构设计(2学时)
使用数据库设计范式对数据库表结构进行规范优化,规范数据库的表结构同时,要考虑软件运行性能。必要时,可以有悖于第三范式的要求,适当增加冗余数据、减少表间链接,以空间换取时间。
要求以上述数据库设计举例说明3种数据库设计范式的具体应用实例,每
29
《数据库技术与开发》工程实训指导书
个设计范式至少举例说明其中1个实例。
如所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
如在银行客户表BankCustomer中,不能将客户信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;客户信息表的每一行只表示一个员工的信息,一个员工的信息在表中只出现一次。简而言之,第一范式就是无重复的列。 (3) 安装并演示PowerDesigner建模示例(2学时)
参考《PowerDesigner系统分析与建模》,安装PowerDesigner及破解步骤、演示创建数据库概念模型CDM、数据库物理模型PDM和自动生成T-SQL语句等操作。
(4) 绘制CDM模型、生成PDM模型和生成T-SQL语句(2学时)
使用PowerDesigner,把设计数据库第一步结果(即分析得到的银行ATM存取款系统的实体、实体属性、以及实体之间的关系)用CDM表示,要求CDM要体现出各实体之间的关系以及各实体的实体属性。
创建如下图1所示的数据库概念模型:
银行卡#银行卡号Characters (19)*密码Characters (6)*货币类型Characters (5)*开户日期Date*开户金额Money*是否挂失Characters (10)o卡内余额Money...客户-银行卡银行卡-交易信息ooooo客户信息IntegerCharacters (20)Characters (18)Characters (20)Variable characters (100)交易编号交易日期交易金额交易类型交易备注...银行交易信息IntegerDateMoneyCharacters (10)Variable characters (100)业务类型#业务编号Integer*业务名称Characters (20)o业务描述Variable characters (100)业务类型-银行卡#oooo客户编号客户姓名身份证号客户电话客户住址...
图12.银行存取款系统数据概念模型CDM
检查所创建CDM模型无误后,自动生成相应的CDM设计文档和银行存取款系统数据物理模型PDM。参考PDM模型如图2所示:
30