首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数据库中存储每周的时间可用性?

如何在数据库中存储每周的时间可用性?
EN

Stack Overflow用户
提问于 2013-02-19 08:16:31
回答 1查看 1.8K关注 0票数 1

我正在编写一个医生办公室的预约系统。我需要存储每周的医生可用性。就像这样:

代码语言:javascript
复制
        DoctorID | 10AM | 11AM |     12AM  | 1PM | 2PM |    3PM    | 4PM | 
        ------------------------------------------------------------------
 [MON]  5477J    |  1   |  0   | AppointID |   1 |   1 | AppointID | 0   |
        ------------------------------------------------------------------
 [TUE]  5477J    |  0   |  1   | AppointID |   1 |   1 | AppointID | 0   | 
        ------------------------------------------------------------------

我将时隙存储为numeric 1 implies **avaialble** 0 implies **will not be in office**,如果有预约,则该时隙将被AppointmentID取代。

可用性每天都会有所不同。我的问题是,我如何存储每天的可用性?我应该每周安排5行吗?有没有人能告诉我一些简单的模式,或者有没有更好的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-19 08:23:27

我过去使用的一个模型是这样的:

代码语言:javascript
复制
TABLE [AppointmentBlock]
  - [DoctorID] INT
  - [StartTime] DATETIME
  - [EndTime] DATETIME
  - [IsAvailable] BIT
  - [IsRecurring] BIT
  - [AppointmentID] INT

如果为[IsRecurring] = 1,这将表示每周在同一时间重复出现的块,并且您应该假设开始/结束时间是从一周开始计算的偏移量。

如果为[IsRecurring] = 0,这将只发生一次,并且开始/结束时间是绝对的。

因此,医生的日程安排中的每一个环节都会被考虑在内,即使它不是精确地落在每个小时。

为了使你的例子适合这个模型,你应该有这样的东西:

代码语言:javascript
复制
DoctorID | Start    | End      | IsAvailable | IsRecurring | AppointmentId | 
----------------------------------------------------------------------------
5477J    | 10AM Mon | 11AM Mon |           1 |           1 |          NULL |
5477J    | 11AM Mon | 12PM Mon |           0 |           1 |          NULL |
5477J    | 12PM Mon |  1PM Mon |           0 |           1 |     AppointID |
5477J    |  1PM Mon |  3PM Mon |           1 |           1 |          NULL |
5477J    |  3PM Mon |  4PM Mon |           0 |           1 |     AppointID |
5477J    |  4PM Mon |  5PM Mon |           0 |           1 |          NULL |
5477J    | 10AM Tue | 11AM Tue |           0 |           1 |          NULL |
5477J    | 11AM Tue | 12PM Tue |           1 |           1 |          NULL |
5477J    | 12PM Tue |  1PM Tue |           0 |           1 |     AppointID |
5477J    |  1PM Tue |  3PM Tue |           1 |           1 |          NULL |
5477J    |  3PM Tue |  4PM Tue |           0 |           1 |     AppointID |
5477J    |  4PM Tue |  5PM Tue |           0 |           1 |          NULL |
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14947699

复制
相关文章

相似问题

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