sql-server - 医生排类数据库设计

标签 sql-server database oracle database-design

我在下面的用户界面中获得了用于安排功能的界面。

enter image description here

我需要为每月每周的某些天设置医生可用时间。

我应该如何创建表来处理这个问题。

我想我可以用下面的列创建一个表结构

  1. 医生编号
  2. 日期
  3. Ava​​lableFrom
  4. 有空

但这里的问题是,如果他在同一天访问两个不同的时间,我将为同一位医生添加 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/

相关文章:

c# - 使用 Entity Framework 执行存储过程

sql - 查找在不同入职日期雇用的员工姓名

PHP MySQL 内连接问题

PHP MYSQL - 搜索和排序查询结果

java - 如何指示 Hibernate 使用本地时区以外的时区将 Java 日期映射到 Oracle DATE 列?

java - 如何在oracle中查看由启用hibernate的java程序执行的最近sql命令的事务日志(带有时间和性能信息)

mysql - SQL:多次重复结果行,并对行编号

sql-server - 将动态查询导出到表

mysql - InnoDB 表被制作为 MyISAM

sql - 为什么我们不能在 oracle 中使用条件 rownum=5