0

从事医学数据库工作。我们有一个处方表、一个诊断表和一个项目表(每个项目,而不仅仅是药物)。

在诊断表中,有一整列称为 med#(目前为 13,可能会增加),列出了患者开出的所有各种药物。药物名称存储在项目表中(因为多语言) 要检索药物 1~13 的名称,我使用以下查询。

它有效,但我想它可能不是很有效。有没有更好的方法来重写这个?或者甚至重新设计数据库?它仍处于早期阶段,数据库设计尚未锁定。

select d.name_en, e.name_en
from
    diag a
    inner join
pres c
    on a.med1 = c.id
    inner join
pres b
    on a.med2 = b.id
    inner join
items d
    on b.id = d.id
    inner join
items e
    on c.id = e.id
where a.id = 1
4

1 回答 1

0

您应该有一个保存患者信息的表和另一个保存药物信息的表。这将允许药物数量增加而无需重新设计表格。

在药物信息表中,应该有一个列引用项目表中的项目和一个列引用患者信息表中的患者。这将是您的药物信息表的主键。

于 2013-10-29T13:44:38.670 回答