1

我正在做一个项目,我想要一些灵感或见解来解决问题。我正在编写一个应用程序,用于记录访客到祈祷中心(一个有很多房间的地方。人们来祈祷)。我们将整合一个预订系统。现在人们可以说“某某约会我来”或“每周三来”或“每周来两次”或“每月来一次”等。

我不知道如何在关系数据库中维护此类信息。任何人都可以对此提供一些见解吗?

以及如何查询数据库以查找计划在特定日期访问哪些人?

4

1 回答 1

1

这个模式应该足以让你开始

VISITORS
id
name
... other atomic data

RESOURCES
id
name
... other atomic data

RESERVATIONS
id
visitor
resource
fromdate
tilldate

因此,如果我想在 11 月 19 日 10:00 到 12:00 预订 200 号房间,预订表中会有一条记录,其中“访客”字段指向我在访客表中的条目,即“资源”字段指向资源表中房间 200 的条目,“fromdate”将等于 10:00 19-11-2012,“tilldate”将等于“12:00 19-11-2012”。

您可以编写查询来显示在特定日期/时间保留了哪些资源,例如

select resources.name, visitors.name
from resources inner join reservations on resources.id = reservations.resource
inner join visitors on reservations.visitor = visitors.id
where reservations.fromdate <= "2012-11-19 06:00"
and reservations.tilldate >= "2012-11-19 23:59"

和查询显示在给定时间哪些资源是空闲的

select resources.name
from resources 
where not exists (select 1 from reservations
where reservations.resource = resources.id
and reservations.fromdate >= "2012-11-19 10:00"
and reservations.tilldate <= "2012-11-19 12:00")

如果有人说“我每周三都来”,您的应用程序必须足够聪明,可以根据所需的资源、日期和时间在“预订”表中插入几行。

另外,请参阅此问题:Reservation 站点的数据库表

于 2012-11-18T08:53:49.167 回答