我正在编写一个医生办公室的预约系统。我需要存储每周的医生可用性。就像这样:
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行吗?有没有人能告诉我一些简单的模式,或者有没有更好的方法。
发布于 2013-02-19 08:23:27
我过去使用的一个模型是这样的:
TABLE [AppointmentBlock]
- [DoctorID] INT
- [StartTime] DATETIME
- [EndTime] DATETIME
- [IsAvailable] BIT
- [IsRecurring] BIT
- [AppointmentID] INT如果为[IsRecurring] = 1,这将表示每周在同一时间重复出现的块,并且您应该假设开始/结束时间是从一周开始计算的偏移量。
如果为[IsRecurring] = 0,这将只发生一次,并且开始/结束时间是绝对的。
因此,医生的日程安排中的每一个环节都会被考虑在内,即使它不是精确地落在每个小时。
为了使你的例子适合这个模型,你应该有这样的东西:
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 |https://stackoverflow.com/questions/14947699
复制相似问题