繁体   English   中英

时间轴的数据库表示

[英]Database representation of a timeline

假设我有一个显示2种事件的时间轴:

  1. 病人去了诊所。 此类事件涉及患者和诊所。
  2. 病人上传了一张照片。 这样的事件涉及患者和照片。

因此,我在这里有一些基本表格: patientsclinicsphotos
我还有一些时间表表: timeline_visittimeline_photo

问题是我是否被迫针对每种时间轴事件类型使用单独的表,然后使用UNION构建完整的时间轴,或者我不知道其他一些技术(将所有可能的事件存储在一个表中)?
如您所见, timeline_visittimeline_photo表具有相同且不同的字段和键。

我将创建一个名为events的表,其中包含四列:

事件

patient_id int
id int
event_date timestamp
event_type int

每个条目将在一个时间点代表一个患者事件。 可能是去诊所或上传照片。 将有两个表格供参观和拍照:

访问

id int
event_id int
doctor_id int
decimal (10, 2) cost
double length_of_visit

上传

id int
event_id int
image_id int
image_content blob

现在,当您想要生成事件的时间轴时,可以通过查询单个表来完成它:

SELECT *
FROM events
WHERE event_date BETWEEN NOW() AND DATE_SUB(NOW(), INTERVAL 3 HOUR)

上面的查询将为您提供最近3个小时的时间表。 如果要查询中有关每个事件的详细信息,则可能必须执行一个巧妙的UNION查询,因为每个事件的列将不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM