gpt4 book ai didi

MySQL电影预订系统设计第2部分

转载 作者:行者123 更新时间:2023-11-30 01:25:39 24 4
gpt4 key购买 nike

这与另一个问题类似,但不完全相同。

我的目标是设计一个电影预订系统。用户可以点击电影时间表的一个或多个空座位来预订它们。但他需要在 15 分钟结束前付款,否则预留的座位将不得不自动让给其他用户。

我有以下伪 MySQL:

桌面电影:

    id        int primary key,
name varchar,
.....

表电影时间表:

    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 中插入一行包含当前日期和时间。

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

  1. 由于接口(interface)和数据库之间可能存在不一致,当用户A尝试预订座位时,我需要通知用户A,当没有足够的可用座位时。 (例如,另一个用户 B 可能在 A 之前购买了所有座位。)

  2. 我需要自动在 MovieSchedSignUp 中插入一行,同时确保时间表不会“超额预订”(count_signup <= max_size)并同时更新count_signup

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

我的想法是:

  1. MovieSchedSignUp 中有额外的列来跟踪付款时间。

  2. 使用事务,但是如何返回有关是否有足够座位的信息

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

最有效的方法是什么?还有其他想法吗?确实不想使用批处理作业,但是还有其他出路吗?

最佳答案

我认为在这种情况下你将不得不使用事务。

  1. 开始交易
  2. 插入要添加到临时表的记录
  3. 在临时表、MovieSched 和 MovieSchedSignUp 之间进行连接检查记录数(临时和 MovieSchedSignUp 的组合)是否大于最大大小。
  4. 如果确定,则进行插入
  5. 如果确定,则提交事务,如果没有,则回滚交易。

关于MySQL电影预订系统设计第2部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18029834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com