`
shootyou
  • 浏览: 82378 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

支付系统数据库设计的关键问题

 
阅读更多

支付系统的核心无疑就是充值、扣费、转账。

假设现在是一个这样的账户表account(InnoDB):

 

filed type info
id bigint 用户id
balance decimal 余额
update_time datetime 数据更新时间

 

充值的时候那么下面这条语句就可以解决:

UPDATE account SET balance = balance + 10.00, update_time = NOW() WHERE id=1;

 

但是扣费和转账这种操作就比较麻烦了。不是下面这条语句就可以解决的:

UPDATE account SET balance = balance- 10.00, update_time = NOW() WHERE id=1;

我们首先得判断账户余额是否足够,不够的话当然不能扣费,这意味着在UPDATE之前还得SELECT一遍。也就是:

1.SELECT FROM account WHERE id=1;

2.程序判断balance是否足够

3.UPDATE account SET balance = balance- 10.00, update_time = NOW() WHERE id=1;

但是这个余额判断过程在高并发不加锁的情况下是不可靠的。

 

我们下面只讨论下面的情况:

扣费考虑到并发扣费的情况,允许让其并发扣费,但是不应该允许账户余额为负数。

转账的话也是一样,相当于先从一个账户扣费,再给另一个账户充值,在一个事务内完成。

 

使用存储过程来解决问题:

 

这样的话可以保证在更新时不会出现余额为负数的情况。

分享到:
评论

相关推荐

    机票预订系统(详细设计说明书.pdf

    机票预订系统详细设计说明书 本机票预订系统详细设计说明书旨在对机票预订系统进行详细...该方案涵盖了系统架构、系统功能、系统设计、算法设计、数据结构设计、模块接口设计、数据库设计、界面设计和系统测试等方面。

    如何设计数据库.doc

    因为,良好的数据库设计能够: q 节省数据的存储空间 q 能够保证数据的完整性 q 方便进行数据库应用系统的开发 糟糕的数据库设计: q 数据冗余、存储空间浪费 q 内存空间浪费 q 数据更新和插入的异常 软件项目开发...

    网上订餐系统的设计与实现_论文.doc

    在设计网上订餐系统时,需要考虑到多个方面的因素,如用户界面、数据库设计、系统安全等。用户界面设计需要考虑到美观性、易用性和可访问性,以便用户能够轻松地浏览和订餐。数据库设计需要考虑到数据的存储、检索和...

    微信小程序电影票订票小程序软件源码数据库.doc

    同时,我们还提供了一个安全的支付系统,使得用户可以安全地进行支付。 该系统是一个基于微信小程序的电影票订票系统,旨在解决电影票订票过程中的各种问题,具有很高的便捷性和可移植性。该系统的设计是基于现实...

    基于Java的农村电子商务系统的设计与实现

    确立出系统具体的功能模块,并进行数据库设计。整个系统分为前台和后台两部分,前 台功能集缴费支付、商品展示、购物车、订单生成、会员登录注册等为一体,包括便民 服务、电子报刊、同城购物、采购配送、终端管理...

    Redis水果商城,基于Redis实现订单超时未支付自动销毁

    详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结。 包括程序毕设程序源代码一份,数据库一份,完美运行。如有问题可私信我

    基于智能手机的医院服务客户端设计与实现(论文+源码)-kaic.doc

    本人原创毕业设计,未抄袭他人,请人工审核,如出现版权问题,个人承担责任,感谢!...5.6 系统数据库设计 5.6.1 数据库E-R模型 5.6.2 数据库表关系 6 系统测试 6.1 系统测试概述 6.2 系统功能测试 参考文献 谢辞

    会员消费积分管理系统设计方案.doc

    在线支付系统实现了平台可统计各个商铺当天营业金额,进行抽成后支付给商家。 该系统具有多种优势,如充分表达了数据的同步更新,保障了连锁机构合法利益和会员的合法利益,具有个性化的查询管理平台,完善的会员...

    计算机专业毕设ASP+ACCESS网上答疑管理系统毕业设计(源代码+论文).rar

    计算机专业毕设ASP+ACCESS网上答疑管理系统毕业设计(源代码+论文)是一个完整的毕业设计项目,旨在帮助计算机专业的学生掌握ASP(Active Server Pages)和ACCESS数据库技术,并通过实践应用来提高编程能力和解决实际...

    高校工资管理系统课程设计报告

    (四)工资管理系统数据库分析 6 (五)数据库设计 7 5.1创建创建“部门表” 7 5.2创建“当月个人工资明细表”用户表 7 5.3创建“个人工资汇总表”用户表 8 5.4其他关键数据表的创建 8 (六)系统功能描述.............

    数据库资料

    详细设计阶段:将E-R图转换为多张表,进行逻辑设计, 并应用数据库设计的三大范式进行审核; 代码编写阶段:选择具体数据库进行物理实现,并编写 代码实现前端应用; 软件测试阶段:…… 安装部署:…… 设计数据库的...

    计算机专业毕设精选-ASP.NET基于web的订餐系统的设计与实现(源代码+论文).rar

    2. 系统设计:根据需求分析结果,设计了系统的整体架构、数据库结构、模块划分及接口定义。 3. 系统实现:使用ASP.NET技术,结合C#编程语言,实现了订餐系统的各个功能模块,包括前端页面展示、后端逻辑处理、...

    毕业设计基于-RFID-的校园一卡通系统设计总结与展望.doc

    并通过对射频卡、读写器硬件选择与分析、系统防碰撞软件设计流程 的探讨,阐述了设计中的关键技术分析。在本次设计中,自己完成了如下工作: (1)系统的分析了 RFID 无线射频识别技术的工作原理及理论基础。根据子...

    基于Springboot+mysql的网吧管理系统设计与实现(源码+设计文档+部署说明+视频演示).zip

    资源名字:基于Springboot+mysql的网吧管理系统设计与实现(源码+设计文档+部署说明+视频演示).zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 基于Spring Boot...

    网上书店的设计与实现

    其次用面向对象的方法分析并设计了一个网上书店系统,其中涉及了网上书店系统开发的模式、后台关系型数据库的设计、工具及环境的说明。本网站开发过程中将依照软件生命周期法则,在需求分析阶段进行了功能需求分析、...

    美团酒店订单交易系统架构实践.26e5c3b0-ab0f-11e6-8c82-637c94010502.pdf

    酒店订单交易系统的数据存储包括了数据库设计、数据存储结构、数据备份等多个方面。该数据存储旨在确保酒店订单交易系统的数据安全性和高效性。 九、业务架构梳理 酒店订单交易系统的业务架构梳理包括了业务架构、...

    JSP网上拍卖平台系统设计(源代码+论文).rar

    该资料包包含了实现一个功能齐全的网上拍卖平台所需的所有关键组件,从前端用户界面设计到后端数据库管理,以及相关的文档和研究论文。源代码部分涵盖了平台的核心功能,例如商品列表展示、用户注册与登录、商品上传...

    jsp网上购书系统设计(源代码+论文).rar

    源代码部分为用户提供了一个功能齐全的网上书店的后端实现,涵盖了用户注册、登录、浏览书籍、加入购物车、在线支付等关键功能。这些代码示例遵循了良好的编程实践,并展示了如何结合JSP与数据库进行高效的数据交换...

    计算机专业毕设精选-ASP.NET网络商店设计与实现(论文+源代码+开题+文献综述+外文翻译).rar

    通过该项目,学生可以深入理解ASP.NET Web开发的核心概念和技术,掌握数据库设计、用户界面设计、系统安全等关键技能。 **项目内容与特点**: 1. **需求分析**:详细分析了网络商店的业务需求,包括用户管理、商品...

    计算机专业毕设ASP+ACCESS网上花店毕业设计全套(论文+源代码+说明).rar

    通过对市场需求和用户需求的深入分析,我们提出了切实可行的设计方案,并对系统实现过程中遇到的关键技术问题进行了深入探讨。论文内容详实、条理清晰,为毕业生提供了宝贵的参考资料。 源代码部分包含了系统的全部...

Global site tag (gtag.js) - Google Analytics