首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预约系统设计

预约系统设计
EN

Stack Overflow用户
提问于 2014-09-26 07:20:13
回答 1查看 1.4K关注 0票数 1

我正在开发一个预订系统模式,在定义资源可用性时遇到了一些问题。我在这里和Google上搜索了类似的问题,但仍然没有明确的理解

我的应用程序是用来预订出租车的。每个出租车司机今天要么工作,要么休息一天。到目前为止,我已经想出了以下结构

代码语言:javascript
复制
table: Drivers
id INT PRIMARY KEY
name INT

table: Users
id INT PRIMARY KEY
name TEXT

table: Reservations
id INT PRIMARY KEY
start: DATETIME
end: DATETIME
userID: INT (FOREIGN KEY(Users.id))
driverID: INT (FOREIGN KEY(Drivers.id))

我在想,如果没有预订条目,则将每个驱动程序视为可用,然后提出不同类型的预订:

不可用的=>驱动程序请一天假已预订的=>驱动程序由用户在开始/结束时间之间预订取消=>取消预订

然而,维护不可用/预订状态听起来比我想要的要复杂一些。

那么,有什么建议可以改进数据库模式吗?

EN

回答 1

Stack Overflow用户

发布于 2014-09-26 07:32:04

更简单的方法是避免司机的可用性(因为他正在下班/出租车正在维修)是在Drivers表中添加一个布尔属性,该属性可以从UI中打开或关闭。

预留应该有一个被取消的属性,以便在查询可用的驱动程序时,取消的预留可以被忽略。

所以可用的驱动程序应该是

代码语言:javascript
复制
select *
from drivers d
where d.Available = true
and not exists (
  select top(1) r.id
  from rerservations r
  where r.driverid = d.id
  and r.cancelled = false
  and r.start < GetDate()
  and r.end > GetDate()
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26049667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档