mysql设计预约系统_MySQL电影预约系统设计第2部分

这类似于另一个问题,但并不完全相同 .

我的目标是设计一个电影预订系统 . 用户可以点击一个或多个空座位以获得电影时间表以保留它们 . 但他需要在15分钟之前付款,否则预留的座位必须为其他用户放弃 .

我有以下伪MySQL:

表电影:

id int primary key,

name varchar,

.....

表MovieSched:

movie_id foreign key refers to Movie,

sched_id int primary key,

showtime datetime, // date and time of schedule

count_signup int, // number of sign ups

max_size int // max number of seats

表MovieSchedSignUp:

sched_id foreign key refers to MovieSched,

user_id foreign key refers to User,

signup datetime // datetime of signup

每个电影时间表都有 max_size 可以注册的用户 . 要注册用户,我在MovieSchedSignUp中插入一行,其中包含当前日期和时间 .

这些要求自然会产生一些限制:

由于界面和数据库之间可能存在不一致,当A试图预留座位时,我需要在没有足够座位时通知用户A. (例如,另一个用户B可以在A之前购买所有座位)

我需要 atomically 在MovieSchedSignUp中插入一行,同时确保计划不是"overbooked"( count_signup <= max_size )以及同时更新 count_signup .

我需要确保在15分钟内付款,否则必须释放预留座位 .

我的想法是:

在MovieSchedSignUp中添加额外的列以跟踪付款的时间 .

使用交易, but how do I return information about whether there are enough seats or not ?

在后台运行批处理作业以删除MovieSchedSignUp中的“已过期”行 .

这样做最有效的方法是什么?还有其他想法吗?不是真的想要使用批处理作业,但还有其他方法吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值