我有另一个案例 我有27个座位的公共汽车 然后,如果人们选择座位4,那么没有人可以坐下4。
我的问题:
感谢。
答案 0 :(得分:1)
数据库: 拥有一个BusType表,其中的属性包括座位数,成本等。 有一个BusBookedSeats表,它将与相关总线保持FK关系,并保持其剩余和/或预订的座位数的总计。
形式: 查询数据库并获取总座位数 - 预订座位数。添加进一步验证以显示座位的位置。
预防: 如果查询返回的值大于0(意味着在此实例中采用),则警告用户已采用该值并通知他们采取另一个席位。或者甚至不向他们展示座位。
答案 1 :(得分:0)
对于您的数据库:
如何显示可用座位:
如何防止双重预订: 您需要某种交易程序,但很难判断何时锁定座位以及何时解锁(例如,用户在一段时间内没有响应)。通常你只在最后一步保留它。因此,确保您没有太多步骤或选择是最后一步,您可以减少冲突次数。
这些确实只是一些非常基本的提示,但整个问题太复杂了,简而言之。如果您有任何具体问题,可以单独询问。
答案 2 :(得分:0)
从数据库角度来看,基于我对你的要求的理解,我会在这些方面提出一些建议: -
总线表 - 包含每个总线的条目。有一列表示该公共汽车的座位容量。
用户表 - 包含可以在公交车上预订座位的每个用户的条目。
BusUser Table - 包含公交车座位记录的交易表,例如:如果公交车X有27 =座位容量,此表将有27条记录 - 每条记录都有相应的座位号。
从UI角度,显示总线用户内容。当用户选择UI上的其中一条记录时,您将该用户与BusUser表中的该记录相关联。 BusUser - 将有一列指示与该总线实例关联的用户。
这是一般的想法。希望能为你提供一些启示......
答案 3 :(得分:0)
确保您拥有某种主键,其中包括总线离开时间等以及每个总线的唯一标识符(复合主键)。您只能拥有总线的唯一标识符,因为这将限制每辆公交车只能乘坐一次:)
我认为公共汽车的27个座位应由您的申请处理。也许,每辆公交车首先插入27排,并在有人预订座位时更新。这样,您可以让用户选择他们想要的座位。 (应该从您的GUI完成。)
当然,你应该拥有每个座位的状态,你可以用它来确定它是否被保留。
这是一个非常基本的想法,我没有包含任何图表或任何类似的东西。我希望我没有破坏你自己设计数据库的机会:)
答案 4 :(得分:0)
数据库谎言在Sane建议是个好主意。停止重复预订确实不是那么困难 - 你只需要选择一种方法。
队列系统 - 当人们命令你将它们附加到队列的尾部然后有一个单独的脚本来吸引人们从头部。然后,您将能够以稳定的速度逐个评估每个订单。
数据库级别 - 如果您打算使用MySQL,最好使用支持交易的InnoDB之类的引擎(介绍:http://www.databasejournal.com/features/mysql/article.php/3382171/Transactions-in-MySQL.htm)