我在下面的用户界面中获得了用于安排功能的界面。
我需要为每月每周的某些天设置医生可用时间。
我应该如何创建表来处理这个问题。
我想我可以用下面的列创建一个表结构
- 医生编号
- 日期
- AvalableFrom
- 有空
但这里的问题是,如果他在同一天访问两个不同的时间,我将为同一位医生添加 2 行。
我的数据库架构是否有任何问题或任何更好的表设计将帮助我做到这一点?
有了这张表,我应该能够检测到医生在特定的日期和时间是否有空
我怎样才能最好地改进我的表格设计?
编辑:我正在使用的屏幕是为了帮助医院工作人员知道来访医生何时有空
,这样他们就可以为病人预约一个时间或通知其他可用时间
最佳答案
编辑:我误解了这个问题。
您的设计很好 - 在一个表中有多行反射(reflect)多个事件并没有错。您可能考虑的唯一改进是让 AvailableFrom 和 AvailableTo 成为日期时间值,而不是时间,这样您就可以删除“日期”列。这有助于您处理跨越午夜的可用性。
答案的其余部分与问题无关 - 它基于对问题的误解。
首先,你要知道医生的上类时间是什么时候;这可能很简单(每天 9-5 点),也可能很复杂(周一 9-5 点,周二不可用,周三 - 周五 9-12:30)。您可能还需要记录每天的休息时间——例如午餐时间,这样您就不会在午餐时间安排约会;我假设不同的医生会在不同的时间休息。
接下来,您可能不想记录“可用性”,而是想记录每一天的“约会”。当他们的日程安排表明他们正在工作时,以及当他们没有预定的约会时,医生有空。
因此,您的模式可能是:
Doctors
--------
DoctorID
....
DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime
DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime
关于sql-server - 医生排类数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669197/