我在 Postgresql 中制作了一个公共汽车预订系统,并被困在如何在预订时检查座位是不是可用
Posted
技术标签:
【中文标题】我在 Postgresql 中制作了一个公共汽车预订系统,并被困在如何在预订时检查座位是不是可用【英文标题】:Im making a bus booking system in Postgresql and got stuck on how to check if seats is available while booking我在 Postgresql 中制作了一个公共汽车预订系统,并被困在如何在预订时检查座位是否可用 【发布时间】:2020-03-16 11:33:04 【问题描述】:如果座位数不超过巴士实际拥有的座位数,我该如何做某种声明?
现在我有以下表格: 预订(route_id,邮件,座位)--route_id 路由外键(route_id)座位=要预订的座位数
巴士(bus_id、座位、driver_ssc)
城市(国家、城市名称、巴士站、路线 ID)
司机(姓名、driver_ssc、电话、地址)
路线(dep、到达、dep_time、到达时间、价格、bus_id、route_id)
旅行者(fn、ln、电话、地址、邮件、user_id)
有些信息只是为了完成我的任务。
请就预订时如何控制座位提出建议。问我是否需要解释任何不清楚的地方。谢谢!
【问题讨论】:
如何在数据库中修复座位已被预订?现在,您只能识别每条路线的座位数。在我看来你需要一个额外的表“预订”(user_id,route_id)然后你会很容易找到一些免费的座位。 我有一个名为 Booking (route_id, mail, seat) 的表,在这种情况下,邮件标识用户。你能举个例子说明你会怎么写吗? 【参考方案1】:我知道 1 个唯一的 route_id 只有 1 个唯一的 bus_id,对吗? 如果正确,此查询可能会对您有所帮助。
with booking_summary as (
select
route_id,
sum(seats) as "total_book_seats"
from
booking
group by route_id
)
select
route.route_id,
bus.bus_id,
booking_summary.total_book_seats,
bus.seats
from
booking_summary
join route on booking_summary.route_id = route.route_id
join bus on route.bus_id = bus.bus_id
where
booking_summary.total_book_seats > bus.seats
这个概念是将总预订座位计算到booking_sumary
临时表中。然后,将 temp 表连接到其他表以获得一些公共汽车座位。
【讨论】:
以上是关于我在 Postgresql 中制作了一个公共汽车预订系统,并被困在如何在预订时检查座位是不是可用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django Python 中使用 PostgreSQL 为 SQLAlchemy 连接池设置方言?需要启用预 ping 功能