`
oraclestudy
  • 浏览: 477090 次
文章分类
社区版块
存档分类

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

 
阅读更多

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

假设现在是一个这样的账户表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;

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

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

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

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

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

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

分享到:
评论

相关推荐

    如何设计数据库.doc

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

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

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

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

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

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

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

    计算机专业毕设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...

    网上书店的设计与实现

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

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

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

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

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

    基于Android的服装个性化定制电商平台厂家模块的设计与实现.zip

    支付系统集成:整合第三方支付服务,如支付宝、微信支付等,为用户提供安全便捷的在线支付解决方案。安全性考虑:平台采取了加密传输、数据备份和防止SQL注入等措施,确保用户数据的安全。多语言支持:为了扩大市场...

    2009计算机 毕业设计 诚信体育用品

    (4) 高安全性:在设计中,将充分利用网络软、硬件提供的各种安全措施,既可以保证用户共享资源,同时也可保证关键数据的安全性。 (5) 可扩展性及灵活性:系统的设计以方便未来业务的扩展和系统扩充为目标,系统要求...

    校园二手交易平台设计文档

    校园二手物品交易系统主要用于解决处理学生在校期间遗留下各种二手物品的交易问题,同时,交易平台也给在校学生提供新物品需求。广交地稀人广,宿舍资源更是供不应求。有些闲置物品食之无味,弃之可惜,关键是极大地...

    通用商城(小程序,微信,app,网站)支付项目(支付宝支付,微信支付).zip

    如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要...

    《校园二手交易平台》电商项目

    校园二手物品交易系统主要用于解决处理学生在校期间遗留下各种二手物品的交易问题,同时,交易平台也给在校学生提供新物品需求。广交地稀人广,宿舍资源更是供不应求。有些闲置物品食之无味,弃之可惜,关键是极大地...

    B2B网站管理系统(Destoon) v6.0 GBK.zip

    创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性 1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等 2、跨浏览器。基于最新Web标准构建,在各主流浏览器(IE/FireFox/Opera...

Global site tag (gtag.js) - Google Analytics