取款机系统数据库设计.ppt
《取款机系统数据库设计.ppt》由会员分享,可在线阅读,更多相关《取款机系统数据库设计.ppt(43页珍藏版)》请在三一办公上搜索。
1、ATM取款机系统数据库设计,2,问题描述,某银行拟开发一套ATM取款机系统,实现如下功能:1、开户(到银行填写开户申请单,卡号自动生成)2、取钱3、存钱4、查询余额5、转账(如使用一卡通代缴手机话费、个人股票交易等)现要求对“ATM柜员机系统”进行数据库的设计并实现,数据库保存在D:bank目录下,文件增长率为15%。,3,问题分析-1,用户信息表:userInfo:,4,问题分析-2,银行卡信息表:cardInfo,5,问题分析-3,交易信息表:transInfo,6,难点分析-1,设计ER图、建库、建表、加约束、建关系部分,建库语句:CREATE DATABASE bankDB ON(NA
2、ME=,FILENAME=,SIZE=,FILEGROWTH=)LOG ON(.),建表语句:CREATE TABLE 表名(customerID INT IDENTITY(1,1),customerName CHAR(8)NOT NULL,.),文件增长率,数据文件,日志文件,自动编号,从1开始,非空/必填,7,难点分析-2,设计ER图、建库、建表、加约束、建关系部分,建约束语句:ALTER TABLE cardInfo ADD CONSTRAINT PK_cardID PRIMARY KEY(cardID),CONSTRAINT CK_cardID CHECK(cardID LIKE 10
3、10 3576 0-9),CONSTRAINT DF_curType DEFAULT(RMB)FOR curType CONSTRAINT FK_customerID FOREIGN KEY(customerID)REFERENCES userInfo(customerID),CONSTRAINT UQ_PID UNIQUE(PID),.,主键约束,检查约束,外键约束(建关系),唯一约束,默认约束,8,难点分析-3,建表时:IDENTITY(1,1),check约束:len()函数,建表时:NOT NULL,check约束:like 0-90-9,设计ER图、建库、建表、加约束、建关系部分,9
4、,子查询:SELECT.FROM WHERE transMoney=(SELECT FROM)内部连接:SELECT FROM userInfo INNER JOIN cardInfo ON.SQL编程:DECLARE inMoney moneySELECT inMoney=sum(transMoney)from.where(transType=存入)视图:CREATE VIEW view_userInfo AS-SQL语句GO,难点分析-4,声明变量,插入测试数据、常规业务模拟、创建索引视图部分,给变量赋值的两种方法:SELECT或SET,测试视图:SELECT.FROM view_user
5、Info,10,CREATE TRIGGER trig_trans ON transInfo FOR INSERT AS.select myTransType=transType,outMoney=transMoney,myCardID=cardID from inserted if(.)begin raiserror(交易失败!余额不足!,16,1)rollback tran-取消交易 end GO,难点分析-5,插入的数据临时表:inserted,创建触发器部分,错误提示:raiserror()函数,取消交易,撤销事务:rollback trans,插入触发器,11,创建存储过程:CREA
6、TE PROCEDURE proc_takeMoney card char(19),type char(4),inputPass char(6)=AS.SQL语句GO调用存储过程:EXEC proc_openAccount 李四,321245678912345678,0478-44443333,1,定期,难点分析-6,存储过程部分1:,存储过程的参数,有默认值的参数,放在最后,12,创建存储过程:CREATE PROCEDURE proc_randCardID randCardID char(19)OUTPUT SELECT r=RAND(随机种子)例如:0.08233262 3215.set
7、 randCardID=.SUBSTRING(tempStr,3,4).GO 调用存储过程:DECLARE mycardID char(19)EXECUTE proc_randCardID mycardID OUTPUT,难点分析-7,存储过程部分2:,OUTPUT表示传出的参数,产生0-1的随机数,字符串截取函数,截取小数点后8位作为卡号的后八为数卡号(4位一组,用空格隔开):1010 3576 0823 3262,调用带output输出参数的存储过程,13,阶段划分,第一阶段(30分钟)利用PowerDesigner设计E-R图第二阶段(50分钟)利用SQL语句实现建库、建表、加约束、建关
8、系第三阶段(30分钟)利用SQL语句插入测试数据、模拟常规业务操作 第四阶段(40分钟)利用SQL语句创建索引和视图、创建触发器 第五阶段(60分钟)利用SQL语句创建3个存储过程并测试 第六阶段(20分钟)利用SQL语句创建转帐事务并测试 第七阶段(20分钟)利用SQL语句创建系统维护帐号并授权,14,第一阶段,第一阶段(50分钟)利用PowerDesigner设计E-R图要求学员自己动手操作,教员巡视,解答学员提出的问题,15,阶段检查,针对第一阶段抽查学员的操作结果教员给出点评或集中演示难点部分,16,第一阶段结果演示1,第一阶段操作的结果:?加吗?,17,第二阶段,第二阶段(50分钟)
9、利用SQL语句实现建库、建表、加约束、建关系要求学员自己动手编写SQL语句,教员巡视,解答学员提出的问题,18,阶段检查,针对第二阶段抽查学员的编码结果教员给出点评或集中演示难点部分,19,第二阶段标准代码演示-1,建库,IF exists(SELECT*FROM sysdatabases WHERE name=bankDB)DROP DATABASE bankDBGOCREATE DATABASE bankDB ON(NAME=bankDB_data,FILENAME=d:bankbankDB_data.mdf,SIZE=1mb,FILEGROWTH=15%)LOG ON(.,检验数据库是否
10、存在,如果为真,删除此数据库,创建建库bankDB,20,第二阶段标准代码演示-2,建表:,USE bankDBGOCREATE TABLE userInfo 用户信息表(customerID INT IDENTITY(1,1),customerName CHAR(8)NOT NULL,PID CHAR(18)NOT NULL,telephone CHAR(13)NOT NULL,address VARCHAR(50)GO,CREATE TABLE cardInfo-银行卡信息表(cardID CHAR(19)NOT NULL,curType CHAR(5)NOT NULL,savingTyp
11、e CHAR(8)NOT NULL,openDate DATETIME NOT NULL,openMoney MONEY NOT NULL,balance MONEY NOT NULL,pass CHAR(6)NOT NULL,IsReportLoss BIT NOT NULL,customerID INT NOT NULL),CREATE TABLE transInfo-交易信息表(transDate DATETIME NOT NULL,transType CHAR(4)NOT NULL,cardID CHAR(19)NOT NULL,transMoney MONEY NOT NULL,re
12、mark TEXT)GO,21,第三阶段,第三阶段(60分钟):利用SQL语句实现插入测试数据、常规业务操作 要求学员自己动手操作,教员巡视,解答学员提出的问题,22,阶段检查,针对第三阶段抽查学员的编码结果抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果教员给出点评,23,第三阶段标准代码演示-1,张三和李四开户:,SET NOCOUNT ON-不显示受影响的条数信息INSERT INTO userInfo(customerName,PID,telephone,address)VALUES(张三,123456789012345,010-67898978,北京海淀)INSERT INT
13、O cardInfo(cardID,savingType,openMoney,balance,customerID)VALUES(1010 3576 1234 5678,活期,1000,1000,1)INSERT INTO userInfo(customerName,PID,telephone)VALUES(李四,321245678912345678,0478-44443333)INSERT INTO cardInfo(cardID,savingType,openMoney,balance,customerID)VALUES(1010 3576 1212 1134,定期,1,1,2)SELEC
14、T*FROM userInfoSELECT*FROM cardInfoGO,24,第三阶段标准代码演示-2,张三的卡号取款900元,李四的卡号存款5000元,/*-交易信息表插入交易记录-*/INSERT INTO transInfo(transType,cardID,transMoney)VALUES(支取,1010 3576 1234 5678,900)/*-更新银行卡信息表中的现有余额-*/UPDATE cardInfo SET balance=balance-900 WHERE cardID=1010 3576 1234 5678/*-交易信息表插入交易记录-*/INSERT INTO
15、 transInfo(transType,cardID,transMoney)VALUES(存入,1010 3576 1212 1134,5000)/*-更新银行卡信息表中的现有余额-*/UPDATE cardInfo SET balance=balance+5000 WHERE cardID=1010 3576 1212 1134GO,25,第三阶段标准代码演示-3,修改密码和挂失帐号,/*-修改密码-*/-1.张三(卡号为1010 3576 1234 5678)修改银行卡密码为123456-2.李四(卡号为1010 3576 1212 1134)修改银行卡密码为123123update c
16、ardInfo set pass=123456 WHERE cardID=1010 3576 1234 5678 update cardInfo set pass=123123 WHERE cardID=1010 3576 1212 1134 SELECT*FROM cardInfo/*-李四的卡号挂失-*/update cardInfo set IsReportLoss=1 WHERE cardID=1010 3576 1212 1134 SELECT*FROM cardInfoGO,26,第三阶段标准代码演示-4,统计银行的资金流通余额和盈利结算,DECLARE inMoney money
17、DECLARE outMoney moneyDECLARE profit moneySELECT inMoney=sum(transMoney)FROM transInfo WHERE(transType=存入)SELECT outMoney=sum(transMoney)FROM transInfo WHERE(transType=支取)print 银行流通余额总计为:+convert(varchar(20),inMoney-outMoney)+RMBset profit=outMoney*0.008-inMoney*0.003print 盈利结算为:+convert(varchar(20)
18、,profit)+RMBGO,27,第三阶段标准代码演示-5,其他操作,/*-查询本周开户的卡号,显示该卡相关信息-*/SELECT*FROM cardInfo WHERE(DATEDIFF(Day,getDate(),openDate)DATEPART(weekday,openDate)/*-查询本月交易金额最高的卡号-*/SELECT DISTINCT cardID FROM transInfo WHERE transMoney=(SELECT Max(transMoney)FROM transInfo)/*-查询挂失帐号的客户信息-*/SELECT customerName as 客户姓
19、名,telephone as 联系电话 FROM userInfo WHERE customerID IN(SELECT customerID FROM cardInfo WHERE IsReportLoss=1)/*-催款提醒:如果发现用户帐上余额少于200元,将致电催款。-*/SELECT,.,FROM userInfo INNER JOIN cardInfo ON userInfo.customerID=cardInfo.customerID WHERE balance200,28,第四阶段,第四阶段(60分钟):利用SQL语句创建索引和视图 要求学员自己动手操作,教员巡视,解答学员提出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 取款 系统 数据库 设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5398592.html