假设我有一个显示两种事件的时间轴:
所以我在这里有一些基础表:patients
,clinics
,photos
。
我还有一些时间表:timeline_visit
,timeline_photo
。
问题是我是否被迫为每个时间轴事件类型使用单独的表格,然后使用UNION
来构建完整的时间表,或者还有其他一些我不了解的技术(存储所有内容)一张表中的可能事件)?
表格timeline_visit
和timeline_photo
包含常见且不同的字段和键,如您所见。
答案 0 :(得分:3)
我会创建一个名为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
查询,因为每个事件的列都不相同。