我正在为我的项目研究医院数据库。我有病人,床,医生等表。患者台和床台具有Beg_Date和End_Date,患者入院并且床分别被占用。
我想在bed_No
表中用patient
列填充空床编号(即如果床没有被任何患者占用)。我的问题是我只有300张病床可以容纳500张病人。因此,我完全不确定如何通过比较Beg_Date
和End_Date
患者填写床位数。我还希望将这些信息保存在patientID
,Beg_Date
和End_Date
列下的床位表内(即哪些病人占据哪个病床哪个日期的信息)。对于这张床单我只知道有一个“On Insert Cascade”和“On delete cascade”但不确定如何使用它。
答案 0 :(得分:3)
我也在医院工作。
您绝对不希望将床数据放入患者表格中。床位数据是访问的一部分,而不是一个人的一部分。首先,患者可能有多次就诊。此外,如果您的医院与我的一样,患者可以在访问期间换床。重症监护室和普通护理单位之间的转移很常见。
如果您的医院将500人放入300张病床,请了解现实生活中的情况,并相应地设计数据库。
编辑从此处开始
根据杰森的评论,你可以有一张床位和一张床头柜。然后你可用的床就像:
select bed_id
from bed
minus
select bed_id
from bed_occupancy
where enter_datetime is not null
and departure_datetime is null
然后由用户将患者分配到空床上。在现实生活中还有其他一些考虑因素,例如一些病床位于外科病房,一些病床位于重症监护室等。临床工作人员在病人之间短途行走时更有效。
答案 1 :(得分:2)
添加一个额外的列,称为 bed_status ,并具有一些预定义的状态,例如可用,已占用,已保留等。
无论患者如何,只考虑床号作为您的唯一身份。
每当患者入院或出院时,或在某些重要病例转移时,都会更新此床位。
注意 - 如果可能,请将患者编号分配给该特定床编号。同样在患者出院或入院时更新两者。
根据状态运行查询,找到占用床位,床位和预留床位等。
SELECT COUNT(bed_status)AS availableBeds FROM bed_table WHERE bed_status ='Available'
SELECT COUNT(bed_status)AS occupBeds FROM bed_table WHERE bed_status ='Occupied'
SELECT COUNT(bed_status)AS reservedBeds FROM bed_table WHERE bed_status ='Reserved'