`
shootyou
  • 浏览: 84235 次
  • 性别: 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;

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

 

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

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

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

 

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

 

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

分享到:
评论

相关推荐

    点菜系统数据库设计说明书

    编写点菜系统数据库设计说明书的目的是为了解决餐厅点菜过程中的效率问题,通过数字化手段优化点菜流程,提高餐厅运营效率,提升顾客满意度。 1.2 定义 在文档中可能会定义一些关键术语,例如“点菜系统”、...

    支付系统数据库设计思考.pdf

    在设计支付系统的数据库时,...总体来说,支付系统数据库设计需考虑支付流程的复杂性,保证数据一致性,处理并发支付场景,并确保交易的安全性。通过合理的表结构和业务流程设计,可以有效地支持各种支付方式和场景。

    仓库管理系统数据库设计报告

    《仓库管理系统数据库设计报告》是一份综合性的学习资源,旨在帮助进行建桥数据库实训的学生深入理解和实践数据库系统设计。这份报告包含丰富的图文信息,数据库文件以及详细的文档,为学弟学妹们提供了一站式的实训...

    数据库课程设计超市管理系统完整版

    总的来说,这个超市管理系统完整版是一个综合性的项目,涵盖了数据库设计、C++编程和系统集成等多个方面的知识。对于参与课程设计的学生而言,这是一次宝贵的实践经验,能够提升他们的实际操作能力和问题解决能力,...

    机票销售系统【数据库课程设计】

    **数据库设计**是机票销售系统的核心部分,SQL语句用于创建和管理数据库。数据库通常包含用户表、航班表、订单表、座位表等,其中可能包含字段如用户ID、航班号、出发时间、到达时间、座位号、票价等。数据库设计...

    数据库课程设计---报刊订阅管理系统的设计与实现.pdf

    3.1 **系统数据库设计** - 设计数据库表结构,包括用户信息表、报刊信息表、订阅记录表等,确保满足业务需求。 - 定义数据之间的关系,如外键约束,保证数据的一致性。 3.2 **系统主要功能模块设计** - **登录...

    滴滴打车系统数据库实现

    数据库设计的关键在于合理的数据建模,通过实体关系模型(ER模型)来规划这些表之间的关联。例如,用户表和订单表之间有一对多的关系,一个用户可以发起多个订单;订单表和司机表之间也是一对一或一对多的关系,一个...

    网上购物系统 用.NET写的数据库设计

    网上购物系统数据库设计 在二十一世纪,人们的消费观念发生了明显的改变,越来越多的人选择网上购物。在网上,人们总能快速地找到自己想要的东西。因此,在未来,网上购物应该是大势所趋。本系统使用C#语言和SQL ...

    数据库网上服装系统设计

    【数据库网上服装系统设计...综上所述,"数据库网上服装系统设计"不仅涵盖了数据库设计和管理,还涉及到软件工程的多个领域,包括前端开发、后端开发、用户体验设计、安全性、性能优化等,是综合实践IT知识的绝佳平台。

    食堂系统 数据库 论文

    综上所述,该论文详细介绍了一个基于ASP.NET和SQL Server 2000的食堂系统数据库设计与实现过程,涵盖了从项目背景、技术选型、系统分析、设计实现到测试维护等多个方面,为读者提供了丰富的知识和技术指导。

    租房系统数据库文件

    【租房系统数据库】是针对房屋租赁业务而设计的一种信息化管理系统,它主要负责存储和管理与租房相关的各种数据,包括房源信息、租户信息、租赁合同、租金支付等关键要素。在Java开发环境中,数据库源代码通常涉及到...

    数据库课程设计-网上购物系统

    - 支付系统:处理支付流程,可能包括在线支付接口的集成。 - 配送管理:记录和管理订单的配送信息,如收货地址、配送方式等。 - 系统管理:后台管理界面,供管理员维护商品信息、用户账户等。 3. **开发技术** ...

    网上宠物买卖系统——数据库课程设计

    综上所述,这个课程设计项目涵盖了数据库设计的多个关键方面,包括需求分析、数据建模、事务处理和系统流程设计,对于学习数据库管理和信息系统开发的学生来说,具有很高的参考价值。通过实际操作,学生能够深入理解...

    数据库课程设计 物流管理系统

    综上所述,数据库课程设计中的物流管理系统是一个综合性的项目,涵盖了数据库设计、数据处理、事务管理、安全备份、数据分析、接口集成、性能优化以及系统架构等多个方面,对学生的数据库理论知识和实践能力都有较高...

    支付平台数据库设计文档.doc

    这份文档是支付系统开发的关键参考资料,它不仅定义了系统的数据模型,还为开发人员提供了实现业务逻辑和处理支付交易的框架。通过深入理解这些设计,开发者能够构建出一个强大、可靠且符合行业标准的支付平台。

    电子商务支付平台一期数据库设计文档

    《电子商务支付平台一期数据库设计文档》是一份详细阐述了如何构建电子商务支付系统核心数据库的指导性文件。在本文档中,主要关注了数据库的设计规范、表结构以及关键业务流程涉及的表。 首先,命名规范是数据库...

    运输车辆数据库设计管理

    《运输车辆数据库设计管理》是针对物流行业中运输过程的数据管理和操作流程进行的一种系统设计。该设计旨在优化配送中心的运输管理,确保货物高效、准确地送达客户手中,并处理退货问题。以下是基于标题、描述和部分...

    网上订票数据库设计

    通过这个课程设计,学生将掌握数据库设计的基本原理和实践技巧,了解如何将理论知识应用于实际问题,为未来在IT领域尤其是互联网服务行业的工作打下坚实基础。在实践中,可能会遇到各种挑战,如需求分析、数据冗余、...

    数据库课程设计---超市收银系统

    数据库课程设计---超市收银系统是一项综合性的学习任务,旨在帮助学生掌握数据库设计与开发的基本技能,同时体验实际业务场景的应用。在这个项目中,我们将会探讨以下几个关键知识点: 1. **数据库设计**:首先,...

Global site tag (gtag.js) - Google Analytics