0

我正在为我的项目开发医院数据库。我有桌子病人、床、医生等。患者表和床位表分别具有患者入院和床位占用的 Beg_Date 和 End_Date。

我想用空床号填充表格中的bed_No列(即,如果床位没有被任何患者占用)。patient我的问题是我只有 300 张病床可容纳 500 名患者。因此,我完全不确定如何通过比较患者的Beg_Date和来填充床位数End_Date。我还希望将这些信息保存在床表中patientIDBeg_DateEnd_Date列下(即关于哪个患者在哪个日期占用了哪个床位的信息)。对于这张床桌,我只知道有一个“On Insert Cascade”和“On delete cascade”,但不确定如何使用它。

4

2 回答 2

3

我也在医院工作。

您绝对不想将床位数据放在患者表中。床位数据是访问的一部分,而不是个人的一部分。首先,患者可能会多次就诊。此外,如果您的医院和我的医院一样,患者可以在就诊期间更换床位。重症监护室和普通护理室之间的转移很常见。

如果您的医院将 500 人安置在 300 张病床中,请了解这在现实生活中是如何发生的,并相应地设计您的数据库。

编辑从这里开始

根据 Jason 的评论,您可以拥有一张床位占用桌和一张床桌。那么您的可用床位将类似于:

select bed_id
from bed
minus
select bed_id
from bed_occupancy
where enter_datetime is not null
and departure_datetime is null

然后由用户将患者分配到空床位。在现实生活中还有其他考虑因素,例如一些病床在外科病房,一些在重症监护室等。临床工作人员在患者之间进行短距离步行时会更有效。

于 2013-03-19T02:32:51.893 回答
2

添加一个额外的列,称为bed_status并具有一些预定义的状态,如可用、占用、保留等。

无论患者是谁,都只考虑床号作为您的唯一 ID。

每当患者入院或出院时,甚至在某些危急情况下转移时,更新此特定床位。

注意 - 如果可能,将患者编号分配给该特定床位编号。在患者出院或入院时同样更新两者。

只需根据状态运行查询即可查找已占用床位、可用床位和预留床位等。

SELECT COUNT(bed_status) AS availableBeds FROM bed_table WHERE bed_status = 'Available'

SELECT COUNT(bed_status) ASposedBeds FROM bed_table WHERE bed_status = 'Occupied'

SELECT COUNT(bed_status) AS reservedBeds FROM bed_table WHERE bed_status = 'Reserved'

于 2013-03-19T05:13:05.157 回答