【问题标题】:Database design for time tables, intervals, reservation etc时间表、间隔、预订等的数据库设计
【发布时间】:2012-11-18 17:07:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql database-design


    【解决方案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 号房间,reservations 表中会有一条记录,其中 'visitor' 字段指向我的visitors 表中的条目,'resource' 字段指向 resources 表中房间 200 的条目,'fromdate' 将等于 19-11 的 10:00 -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")
    

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

    另外,请参阅此问题:Database Tables for Reservation site

    【讨论】:

      猜你喜欢
      • 2012-03-06
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      相关资源
      最近更新 更多