繁体   English   中英

MySql电影预约系统设计

[英]MySql Movie Reservation System Design

我有以下用于电影预定系统的伪MySQL:

桌面电影:

    id int auto_increment not null,
    name varchar(100) not null,
    .....

表MovieSched:

    movie_id foreign key refers to Movie,
    sched_id int auto increment,
    date & time,
    max_size

表MovieSchedSignUp:

    sched_id,
    user_id 

每个电影时间表都有一个可以注册的max_size用户。 要注册用户,我在MovieSchedSignUp中插入一行。

问题是:如何在确保时间表不“超额预订”的同时在MovieSchedSignUp中插入一行(注册数<= max_size)

具体来说,要为用户注册时间表,我应该使用什么查询?如何检查时间表是否已满(这样我才能告诉用户注册是否成功)? 请注意,这些操作需要某种原子操作,也许是事务。

最有效的方法是什么?

SQL的粗略想法:-

INSERT INTO Table MovieSchedSignUp (sched_id, user_id)
SELECT '$move_sched_id', '$user_id'
FROM 
(
    SELECT sched_id, COUNT(*) AS BookingCount
    FROM MovieSchedSignUp
    WHERE sched_id = '$move_sched_id'
    GROUP BY sched_id
    HAVING BookingCount < $max_size
)

根据选择插入一条记录。 该选择返回2个固定值,并且如果预订数量小于最大预订数量,则从子查询中选择返回时间表ID的子查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM