银行ATM数据库设计.ppt_第1页
银行ATM数据库设计.ppt_第2页
银行ATM数据库设计.ppt_第3页
银行ATM数据库设计.ppt_第4页
银行ATM数据库设计.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ATM取款机系统数据库设计 问题描述 某银行拟开发一套ATM取款机系统 实现如下功能 1 开户 到银行填写开户申请单 卡号自动生成 2 取钱3 存钱4 查询余额5 转账 如使用一卡通代缴手机话费 个人股票交易等 现要求对 ATM柜员机系统 进行数据库的设计并实现 数据库保存在D bank目录下 文件增长率为15 问题分析 1 用户信息表 userInfo 问题分析 2 银行卡信息表 cardInfo 问题分析 3 交易信息表 transInfo 难点分析 1 设计ER图 建库 建表 加约束 建关系部分 建库语句 CREATEDATABASEbankDBON NAME FILENAME SIZE FILEGROWTH LOGON 建表语句 CREATETABLE表名 customerIDINTIDENTITY 1 1 customerNameCHAR 8 NOTNULL 文件增长率 数据文件 日志文件 自动编号 从1开始 非空 必填 难点分析 2 设计ER图 建库 建表 加约束 建关系部分 建约束语句 ALTERTABLEcardInfoADDCONSTRAINTPK cardIDPRIMARYKEY cardID CONSTRAINTCK cardIDCHECK cardIDLIKE 10103576 0 9 CONSTRAINTDF curTypeDEFAULT RMB FORcurTypeCONSTRAINTFK customerIDFOREIGNKEY customerID REFERENCESuserInfo customerID CONSTRAINTUQ PIDUNIQUE PID 主键约束 检查约束 外键约束 建关系 唯一约束 默认约束 难点分析 3 建表时 IDENTITY 1 1 check约束 len 函数 建表时 NOTNULL check约束 like 0 9 0 9 设计ER图 建库 建表 加约束 建关系部分 子查询 SELECT FROM WHEREtransMoney SELECT FROM 内部连接 SELECT FROMuserInfoINNERJOINcardInfoON SQL编程 DECLARE inMoneymoneySELECT inMoney sum transMoney from where transType 存入 视图 CREATEVIEWview userInfoAS SQL语句GO 难点分析 4 声明变量 插入测试数据 常规业务模拟 创建索引视图部分 给变量赋值的两种方法 SELECT或SET 测试视图 SELECT FROMview userInfo 创建存储过程 CREATEPROCEDUREproc takeMoney cardchar 19 typechar 4 inputPasschar 6 AS SQL语句GO调用存储过程 EXECproc openAccount 李四 321245678912345678 0478 44443333 1 定期 难点分析 5 存储过程部分1 存储过程的参数 有默认值的参数 放在最后 创建存储过程 CREATEPROCEDUREproc randCardID randCardIDchar 19 OUTPUT SELECT r RAND 随机种子 例如 0 082332623215 set randCardID SUBSTRING tempStr 3 4 GO调用存储过程 DECLARE mycardIDchar 19 EXECUTEproc randCardID mycardIDOUTPUT 难点分析 6 存储过程部分2 OUTPUT表示传出的参数 产生0 1的随机数 截取小数点后8位作为卡号的后八为数卡号 4位一组 用空格隔开 1010357608233262 调用带output输出参数的存储过程 字符串截取函数 第一阶段结果演示1 第一阶段操作的结果 第二阶段标准代码演示 1 建库 IFexists SELECT FROMsysdatabasesWHEREname bankDB DROPDATABASEbankDBGOCREATEDATABASEbankDBON NAME bankDB data FILENAME d bank bankDB data mdf SIZE 3mb FILEGROWTH 15 LOGON 检验数据库是否存在 如果为真 删除此数据库 创建建库bankDB 第二阶段标准代码演示 2 建表 USEbankDBGOCREATETABLEuserInfo 用户信息表 customerIDINTIDENTITY 1 1 customerNameCHAR 8 NOTNULL PIDCHAR 18 NOTNULL telephoneCHAR 13 NOTNULL addressVARCHAR 50 GO CREATETABLEcardInfo 银行卡信息表 cardIDCHAR 19 NOTNULL curTypeCHAR 5 NOTNULL savingTypeCHAR 8 NOTNULL openDateDATETIMENOTNULL openMoneyMONEYNOTNULL balanceMONEYNOTNULL passCHAR 6 NOTNULL IsReportLossBITNOTNULL customerIDINTNOTNULL CREATETABLEtransInfo 交易信息表 transDateDATETIMENOTNULL transTypeCHAR 4 NOTNULL cardIDCHAR 19 NOTNULL transMoneyMONEYNOTNULL remarkTEXT GO 第三阶段标准代码演示 1 张三和李四开户 SETNOCOUNTON 不显示受影响的条数信息INSERTINTOuserInfo customerName PID telephone address VALUES 张三 123456789012345 010 67898978 北京海淀 INSERTINTOcardInfo cardID savingType openMoney balance customerID VALUES 1010357612345678 活期 1000 1000 1 INSERTINTOuserInfo customerName PID telephone VALUES 李四 321245678912345678 0478 44443333 INSERTINTOcardInfo cardID savingType openMoney balance customerID VALUES 1010357612121134 定期 1 1 2 SELECT FROMuserInfoSELECT FROMcardInfoGO 第三阶段标准代码演示 2 张三的卡号取款900元 李四的卡号存款5000元 交易信息表插入交易记录 INSERTINTOtransInfo transType cardID transMoney VALUES 支取 1010357612345678 900 更新银行卡信息表中的现有余额 UPDATEcardInfoSETbalance balance 900WHEREcardID 1010357612345678 交易信息表插入交易记录 INSERTINTOtransInfo transType cardID transMoney VALUES 存入 1010357612121134 5000 更新银行卡信息表中的现有余额 UPDATEcardInfoSETbalance balance 5000WHEREcardID 1010357612121134 GO 第三阶段标准代码演示 3 修改密码和挂失账号 修改密码 1 张三 卡号为1010357612345678 修改银行卡密码为123456 2 李四 卡号为1010357612121134 修改银行卡密码为123123updatecardInfosetpass 123456 WHEREcardID 1010357612345678 updatecardInfosetpass 123123 WHEREcardID 1010357612121134 SELECT FROMcardInfo 李四的卡号挂失 updatecardInfosetIsReportLoss 1WHEREcardID 1010357612121134 SELECT FROMcardInfoGO 第三阶段标准代码演示 4 统计银行的资金流通余额和盈利结算 DECLARE inMoneymoneyDECLARE outMoneymoneyDECLARE profitmoneySELECT inMoney sum transMoney FROMtransInfoWHERE transType 存入 SELECT outMoney sum transMoney FROMtransInfoWHERE transType 支取 print 银行流通余额总计为 convert varchar 20 inMoney outMoney RMB set profit outMoney 0 008 inMoney 0 003print 盈利结算为 convert varchar 20 profit RMB GO 第三阶段标准代码演示 5 其他操作 查询本周开户的卡号 显示该卡相关信息 SELECT FROMcardInfoWHERE DATEDIFF Day getDate openDate DATEPART weekday openDate 查询本月交易金额最高的卡号 SELECTDISTINCTcardIDFROMtransInfoWHEREtransMoney SELECTMax transMoney FROMtransInfo 查询挂失账号的客户信息 SELECTcustomerNameas客户姓名 telephoneas联系电话FROMuserInfoWHEREcustomerIDIN SELECTcustomerIDFROMcardInfoWHEREIsReportLoss 1 催款提醒 如果发现用户账上余额少于200元 将致电催款 SELECT FROMuserInfoINNERJOINcardInfoONuserInfo customerID cardInfo customerIDWHEREbalance 200 第四阶段标准代码演示 1 创建索引和视图 1 创建索引 给交易表的卡号cardID字段创建重复索引createNONCLUSTEREDINDEXindex cardIDONtransInfo cardID WITHFILLFACTOR 70GO 2 按指定索引查询张三 卡号为1010357612121134 的交易记录SELECT FROMtransInfo INDEX index cardID WHEREcardID 1010357612345678 GO 3 创建视图 查询各表要求字段全为中文字段名 createVIEWview userInfo 银行卡信息表视图 其他表同理 ASselectcustomerIDas客户编号 customerNameas开户名 PIDas身份证号 telephoneas电话号码 addressas居住地址fromuserInfoGO 第五阶段标准代码演示 1 取钱或存钱的存储过程 createprocedureproc takeMoney cardchar 19 mmoney typechar 4 inputPasschar 6 ASprint 交易正进行 请稍后 if type 支取 if SELECTpassFROMcardInfoWHEREcardID card inputPass beginraiserror 密码错误 16 1 returnendDECLARE myTransTypechar 4 outMoneyMONEY myCardIDchar 19 SELECT myTransType transType outMoney transMoney myCardID cardIDFROMtransInfowherecardID cardDECLARE mybalancemoneySELECT mybalance balanceFROMcardInfoWHEREcardID card 未完待续 2 调用存储过程取钱或存钱张三取300 李四存500现实中的ATM依靠读卡器读出张三的卡号 这里根据张三的名字查出考号模拟declare cardchar 19 select card cardIDfromcardInfoInnerJoinuserInfoONcardInfo customerID userInfo customerIDwherecustomerName 张三 EXECproc takeMoney card 300 支取 123456 GO 李四同理declare cardchar 19 select card cardIDfromcardInfoInnerJoinuserInfoONcardInfo customerID userInfo customerIDwherecustomerName 李四 EXECproc takeMoney card 500 存入 select fromview cardInfoselect fromview transInfo if type 支取 if mybalance m 1 updatecardInfosetbalance balance mWHEREcardID myCardIDelsebeginraiserror 交易失败 余额不足 16 1 print 卡号 card 余额 convert varchar 20 mybalance returnendelseupdatecardInfosetbalance balance mWHEREcardID cardprint 交易成功 交易金额 convert varchar 20 m SELECT mybalance balanceFROMcardInfoWHEREcardID cardprint 卡号 card 余额 convert varchar 20 mybalance INSERTINTOtransInfo transType cardID transMoney VALUES type card m GO 第五阶段标准代码演示 2 产生随机卡号的存储过程 createprocedureproc randCardID randCardIDchar 19 OUTPUTASDECLARE rnumeric 15 8 DECLARE tempStrchar 10 SELECT r RAND DATEPART mm GETDATE 100000 DATEPART ss GETDATE 1000 DATEPART ms GETDATE set tempStr convert char 10 r set randCardID 10103576 SUBSTRING tempStr 3 4 SUBSTRING tempStr 7 4 GO 测试产生随机卡号DECLARE mycardIDchar 19 EXECUTEproc randCardID mycardIDOUTPUTprint 产生的随机卡号为 mycardIDGO 测试 产生随机卡号代码 DECLARE mycardIDchar 19 EXECUTEproc randCardID mycardIDOUTPUTprint 产生的随机卡号为 mycardIDGO 第五阶段标准代码演示 3 开户的存储过程 createprocedureproc openAccount customerNamechar 8 PIDchar 18 telephonechar 13 openMoneymoney savingTypechar 8 addressvarchar 50 ASDECLARE mycardIDchar 19 cur customerIDint 调用产生随机卡号的存储过程获得随机卡号EXECUTEproc randCardID mycardIDOUTPUTwhileexists SELECT FROMcardInfoWHEREcardID mycardID EXECUTEproc randCardID mycardIDOUTPUTprint 尊敬的客户 开户成功 系统为您产生的随机卡号为 mycardIDprint 开户日期 convert char 10 getdate 111 开户金额 convert varchar 20 openMoney 未完待续 IFnotexists select fromuserInfowherePID PID INSERTINTOuserInfo customerName PID telephone address VALUES customerName PID telephone address select cur customerID customerIDfromuserInfowherePID PIDINSERTINTOcardInfo cardID savingType openMoney balance customerID VALUES mycardID savingType openMoney openMoney cur customerID GO 调用存储过程开户EXECproc openAccount 王五 334456889012678 2222 63598978 1000 活期 河南新乡 EXECproc openAccount 李四 213445678912342222 0760 44446666 1 定期 第六阶段标准代码演示 1 转账事务的存储过程 createprocedureproc transfer card1char 19 card2char 19 outmoneymoneyASbegintranprint 开始转账 请稍后 DECLARE errorsintset errors 0EXECproc takeMoney card1 outmoney 支取 123123 set errors errors errorEXECproc takeMoney card2 outmoney 存入 set errors errors errorif errors 0 beginprint 转账失败 rollbacktranendelsebeginprint 转账成功 committranendGO 调用上述事务过程转账declare card1char 19 card2char 19 select c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论