《7.银行ATM存取款机系统.pptx》由会员分享,可在线阅读,更多相关《7.银行ATM存取款机系统.pptx(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、银行ATM存取款机系统线上线下平台预习2/50学完本次课程后,你能够:使用SQL语句创建数据库和表结构使用事务处理保障数据的完整性使用视图简化复杂的数据查询MySQL用户管理和授权3/50任务描述系统功能概述系统概述开户模拟常规业务创建友好视图存取款4/50补充技能点MySQL用户管理创建普通用户执行GRANT语句创建用户并授权使用mysqladmin命令修改root账户密码使用SET命令修改用户密码删除普通用户5/50为什么需要用户管理 root是超级管理员用户,很容易引发由于误操作所导致的数据不安全问题,怎么办?数据库管理员(数据库管理员(DBA)一般用户、项目开发者一般用户、项目开发者超
2、级管理员用户超级管理员用户普通用户普通用户针对不同用户进行合理的用户角色权限分配,即针对不同用户进行合理的用户角色权限分配,即用户管理用户管理全部数据库权限全部数据库权限指定数据库对象权限指定数据库对象权限指定操作权限指定操作权限问题6/50创建普通用户创建本地用户teacher,密码为123456,本地用户student,无密码CREATE USER userhost IDENTIFIED password;用户名主机名密码CREATE USER teacherlocalhost IDENTIFIED BY 123456;CREATE USER studentlocalhost;本地用户,允
3、许登录其他主机可省略语法示例演示示例1:CREATE USER创建普通用户7/50创建普通用户通过查看系统数据库mysql中的user表查看存在用户USE mysql;SELECT *FROM user;CREATE USER语句创建的用户是未授权的 如何为用户授权?示例8/50创建用户并授权GRANT语句可实现创建用户同时授权或为已存在的用户授权常用操作权限CREATE和DROP权限INSERT、DELETE、SELECT和UPDATE权限ALTER权限GRANT priv_type ON databasename.tablename TO userhostIDENTIFIED BY pas
4、swordWITH GRANT OPTION;用户操作权限列表权限范围,即库名.表名赋予GRANT权限1.如果授予所有权限,如果授予所有权限,priv_type可使用可使用ALL2.为所有数据库和表授权,权限范围可使用为所有数据库和表授权,权限范围可使用*.*提示语法9/50创建用户并授权创建本地用户xiaoming,密码123456,赋予myschool数据库中student表增加和查询权限为studentlocalhost用户授予myschool数据库中view_student视图的查询权限GRANT INSERT,SELECT ON myschool.student TO xiaomin
5、glocalhost IDENTIFIED BY 123456;GRANT SELECT ON myschool.view_student TO studentlocalhost;示例演示示例2:GRANT语句创建用户并授权示例10/50使用mysqladmin命令修改root账户密码mysqladmin u username p password newpassword新密码mysqladmin u root p password 1234 Enter password:*mysqladmin需在DOS命令行执行,回车后输入原密码将root密码修改为1234演示示例3:mysqladmin修
6、改密码并使用新密码登录 示例注意11/50使用SET命令修改用户密码登录MySQL服务器后,使用SET命令修改当前用户密码SET PASSWORD FOR usernamehost=PASSWORD(newpassword)可指定修改其他用户密码只有超级管理员用户(如root用户)才能修改其他用户密码,如果是普通用户,可修改自己的密码#修改当前用户密码修改当前用户密码SET PASSWORD=PASSWORD(0000);#修改其他用户密码修改其他用户密码SET PASSWORD FOR teacherlocalhost=PASSWORD(8888);语法示例注意演示示例4:SET修改密码并使
7、用新密码登录 12/50删除用户DROP USER username1host,username2host;DROP USER studentlocalhost;语法示例演示示例5:删除用户13/50小结创建本地用户tom,密码0000,赋予bookDB数据库book表全部权限,以下语句正确的是()。A.CREATE USER tomlocalhost IDENTIFIED BY 0000;B.CREATE USER tomlocalhost IDENTIFIED BY 0000 FOR bookDB.*;C.GRANT ALL ON bookdb.book TO tomlocalhost;D
8、.GRANT *.*ON bookdb.book TO tomlocalhost;以下说法正确的是()。A.修改root账户密码可使用mysqladmin语句,需登录MySQL后使用B.任何用户都可以修改其他用户密码C.可从系统数据库mysql中查看所有用户信息D.删除用户需使用DELETE USER语句CC14/50系统开发步骤问题分析:整体开发思路2-1明确需求数据库设计编码实现功能测试绘制E-R图绘制数据库模型图使用三大范式规范数据库结构15/50问题分析:整体开发思路2-2银行业务处理每个用户可以开设多个银行卡账户每个银行卡账户可以有多笔交易设计符合第三范式的数据库结构根据银行业务绘制
9、E-R图绘制数据库模型图使用三大范式规范数据库结构实现“ATM取款机系统”的相关业务16/50难点分析:数据库设计数据库设计步骤E-R图要素实体关系一对一关系一对多关系多对多关系数据库模型图数据库设计的三大规范17/50开发用例用例1:数据库设计 用例2:创建数据库及登录用户并授权用例3:建表、建约束 用例4:插入测试数据 用例5:模拟常规业务 用例6:创建、使用客户友好信息视图用例7:使用事务完成存款或取款业务18/50用例1:数据库设计8-1 需求说明根据银行ATM取款机业务处理流程设计数据库绘制E-R图15分钟绘制数据库模型图15分钟使用第三范式规范数据库表结构10分钟思路分析按照数据库
10、设计步骤确定实体及实体关系使用Visio绘制E-R图使用Visio绘制数据库模型图使用第三范式规范数据库设计19/50用例1:数据库设计8-2 难点提示寻找、确定ATM取款机系统的实体及实体间关系根据业务确定实体确定实体之间关系使用三大范式规范数据库设计表内的每一个值都只能被表达一次表内的每一行都应该被唯一的标识(主键)表内不应该存储依赖于其他键的非键信息20/50用例1:数据库设计8-3提交设计文档小组讨论确定实体及实体关系绘制E-R图绘制数据库模型图使用第三范式规范数据库设计要求互相验证完成的程序功能小组长检查本组完成情况功能测试21/50用例1:数据库设计8-4绘制E-R图、数据库模型图
11、、规范数据库表结构22/50用例1:数据库设计8-5客户信息表结构(userInfo)列名称类型说明customerIDINT客户编号自动编号(标识列),从1开始,主键customerNameCHAR开户名必填PIDCHAR身份证号必填,只能是18位或15位,身份证号唯一约束telephoneCHAR联系电话必填,手机号11位addressVARCHAR居住地址可选输入23/50列名称类型说明cardIDCHAR卡号必填,主键,银行的卡号curIDVARCHAR货币种类外键,必填,默认为RMBsavingIDVARCHAR存款类型外键,必填openDateTIMESTAMP开户日期必填,默认为
12、系统当前日期openMoneyDECIMAL开户金额必填,不低于1元balanceDECIMAL余额必填,不低于1元passwordVARCHAR密码必填,6位数字,开户时默认为6个“8”IsReportLossBIT是否挂失必填,是/否值,默认为“否”customerIDINT客户编号外键,必填用例1:数据库设计8-6银行卡信息表结构(cardInfo)24/50用例1:数据库设计8-7交易信息表结构(tradeInfo)字段名称类型说明transDateTIMESTAMP交易日期必填,默认为系统当前日期cardIDCHAR卡号外键,必填transTypeCHAR交易类型必填transMon
13、eyDECIMAL交易金额必填remarkTEXT备注可选输入,其他说明25/50用例1:数据库设计8-8存款类型表结构(deposit)字段名称类型说明savingIDINT存款类型号自动编号(标识列)从1开始,主键savingNameVARCHAR存款类型名称必填descripVARCHAR描述可空26/50用例2:创建数据库及登录用户并授权2-1需求说明创建ATM存取款机系统数据库bankDB创建登录用户并授权普通用户bankMaster,密码为1234可以在任意主机登录MySQL服务器具有数据库bankDB的所有权限思路分析创建数据库使用CREATE DATABASE创建普通用户语句C
14、REATE USER创建用户并授权使用GRANT27/50用例2:创建数据库及登录用户并授权2-2代码审查使用新创建的普通用户登录mybankDB数据库通过系统数据库mysql的user表查看用户信息要求互相验证完成的程序功能小组长检查本组完成情况功能测试28/50用例3:建表、建约束4-1 需求说明使用SQL语句创建表存款类型表(deposit)客户信息表(userInfo)银行卡信息表(cardInfo)交易信息表(tradeInfo)根据银行业务,为相应表添加外键约束29/50用例3:建表、建约束4-2 建表-建库语句:建库语句:CREATE TABLE userInfo#用户信息表用户
15、信息表(customerID INT(4)PRIMARY KEY AUTO_INCREMENT COMMENT 用户编号用户编号,customerName CHAR(8)NOT NULL COMMENT 用户编号用户编号,PID CHAR(18)UNIQUE NOT NULL COMMENT 身份证号身份证号,telephone CHAR(20)NOT NULL COMMENT 手机号码手机号码,address VARCHAR(50)COMMENT 居住地址居住地址)ENGINE=INNODB,COMMENT=用户表用户表;主键主键自增列自增列表存储类型表存储类型30/50建约束#建约束建约束
16、ALTER TABLE tradeInfo ADD CONSTRAINT FK_cardID FOREIGN KEY(cardID)REFERENCES cardInfo(cardID);31/50用例3:建表、建约束4-3 用例3:建表、建约束4-4 代码审查审查创建表的SQL代码审查添加约束的SQL代码要求互相验证完成的程序功能小组长检查本组完成情况功能测试32/50用例4:插入测试数据4-1 需求说明使用SQL语句向每个表中插入至少5条记录思路分析先插入主表的记录,后插入子表的记录难点提示插入数据表的先后顺序插入客户记录时,先要查询33/50用例4:插入测试数据4-2张三和李四开户INS
17、ERT INTO userInfo(customerName,PID,telephone,address)VALUES(张三张三,123456789012345,010-67898978,北京海淀北京海淀);INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)VALUES(1010357612345678,1,1000,1000,1);INSERT INTO userInfo(customerName,PID,telephone)VALUES(李四李四,321245678912345678,0478-4444333
18、3);INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)VALUES(1010357612121134,2,1,1,2);34/50用例4:插入测试数据4-3张三的卡号取款900元,李四的卡号存款5000元/*-交易信息表插入交易记录交易信息表插入交易记录-*/INSERT INTO tradeInfo(tradeType,cardID,tradeMoney)VALUES(支取支取,1010357612345678,900);/*-更新银行卡信息表中的现有余额更新银行卡信息表中的现有余额-*/UPDATE car
19、dInfo SET balance=balance-900 WHERE cardID=1010357612345678;/*-交易信息表插入交易记录交易信息表插入交易记录-*/INSERT INTO tradeInfo(tradeType,cardID,tradeMoney)VALUES(存入存入,1010357612121134,5000);/*-更新银行卡信息表中的现有余额更新银行卡信息表中的现有余额-*/UPDATE cardInfo SET balance=balance+5000 WHERE cardID=1010357612121134;35/50用例4:插入测试数据4-4功能测试
20、使用查询语句测试插入的数据是否正确代码审查审查插入测试数据的SQL代码要求互相验证完成的程序功能小组长检查本组完成情况功能测试36/50用例5:模拟常规业务5-1需求说明修改客户密码办理银行卡挂失统计银行总存入金额和总支取金额查询本周开户信息查询本月交易金额最高的卡号查询挂失客户催款提醒业务37/50用例5:模拟常规业务5-2思路分析修改客户密码办理银行卡挂失使用UPDATE语句实现密码变更和卡挂失UPDATE WHERE 统计银行总存入金额和总支取金额使用聚合函数SUM()SELECT tradeType 资金流向资金流向,SUM(tradeMoney)总金额总金额 FROM查询本周开户的卡
21、号,显示该卡相关信息SELECT FROMWHERE WEEK(NOW()=WEEK(openDate);38/50用例5:模拟常规业务5-3思路分析查询本月交易金额最高的卡号使用子查询和DISTINCT关键字去掉重复的卡号SELECT DISTINCT cardID FROM transInfo WHERE transMoney=(SELECT FROM )查询挂失账号的客户信息使用子查询IN 或内联接查询INNER JOINSELECT FROM userInfo WHERE customerID IN (SELECT FROM )39/50用例5:模拟常规业务5-4催款提醒业务使用子查询
22、IN 或内联接查询INNER JOINSELECT FROM userInfo INNER JOIN 40/50用例5:模拟常规业务5-5功能测试检查点 正确修改客户密码正确办理银行卡挂失,查询获得挂失账号的客户信息正确查询本月交易金额最高的卡号正确统计银行总存入金额和总支取金额正确查询本周开户的卡号,显示该卡相关信息正确催款提醒业务要求互相验证完成的程序功能小组长检查本组完成情况功能测试41/50用例6:创建、使用客户友好信息视图3-1需求说明为客户提供以下3个视图供其查询该客户数据输出银行客户记录:view_userInfo输出银行卡记录:view _cardInfo银行卡的交易记录:vi
23、ew _transInfo提供友好界面,要求各列名称为中文描述调用创建的视图获得查询结果42/50用例6:创建、使用客户友好信息视图3-2思路分析创建视图调用视图CREATE VIEW AS ;SELECT FROM;43/50用例6:创建、使用客户友好信息视图3-3功能测试检查点 正确创建视图正确使用视图获得查询数据要求互相验证完成的程序功能小组长检查本组完成情况功能测试44/50用例7:使用事务完成存款或取款业务2-1需求说明使用事务实现转账业务思路分析模拟转账成功时,提交事务模拟转账失败时,回滚事务45/50用例7:使用事务完成存款或取款业务2-2功能测试检查点正确使用事务以保证数据的完整性事务提交或回滚后,查看相关表数据的变化要求互相验证完成的程序功能小组长检查本组完成情况功能测试46/50项目总结讲解要点完成情况、技能总结、经验分享、项目收获表达要求清晰流畅、有条理、重点突出47/50技能总结巩固的知识点用户管理:创建普通用户并设置权限SQL语句:建库、建表、建主外键约束高级查询:内部连接、子查询、视图:限制数据访问范围,提供友好界面事务:显示事务的应用48/50问题及作业集中问题&课后作业49/50扫我有更多精彩课程呦50/50