Database 一个表中有一个单列主键,但另一个表中有两个或更多类似的列,例如Drug Interaction数据库

Database 一个表中有一个单列主键,但另一个表中有两个或更多类似的列,例如Drug Interaction数据库,database,database-design,Database,Database Design,我试图为药物相互作用创建一个数据库模式 药物相互作用是一种现象,当两种或两种以上的药物同时给予患者时,如果两种药物没有单独给予,联合效应可能不是预期的——有时,药物相互抵消,有时,一种药物增加另一种药物的毒副作用等 我的数据库模式现在看起来像 DrugID pk,通用名称 Interactiondrugid1 fk,drugid2 fk,结果,interactionID整数标识 这只适用于2种药物的相互作用,不适用于2种或更多的相互作用。 我如何解决这个问题 我尝试了下面提到的答案,但我在这一点

我试图为药物相互作用创建一个数据库模式

药物相互作用是一种现象,当两种或两种以上的药物同时给予患者时,如果两种药物没有单独给予,联合效应可能不是预期的——有时,药物相互抵消,有时,一种药物增加另一种药物的毒副作用等

我的数据库模式现在看起来像

DrugID pk,通用名称

Interactiondrugid1 fk,drugid2 fk,结果,interactionID整数标识

这只适用于2种药物的相互作用,不适用于2种或更多的相互作用。 我如何解决这个问题

我尝试了下面提到的答案,但我在这一点上卡住了

我的桌子看起来像

交互ID结果

1死亡

2心脏病发作

药物相互作用

11

2.1

3.1

2.2

5.2

现在如果我质疑

从drugid=1或drugid的参与药物中选择interactionid =2或drugid=3


我将同时得到交互id 1和2,但我应该只得到1定义以下表格:

drug --like yours
interaction (interactionID int identity, outcome)
participating_drug (drugid, interactionid)

在任何相互作用中都涉及多种药物。

我会这样做

DRUG
drugid     100................200
drugname   aspirin............kryptonite sulfate
etc


OUTCOME
outcomeid 12345
outcome_description  e.g. loss of muscle tone when kryptonite sulfate and aspirin are mixed

OUTCOME_DRUG
outcomeid (references OUTCOME.outcomeid)
drugid  (references DRUG.drugid                   
结果\药物与结果存在多对一关系。结果是锚

对于查询:


选择同时涉及硫酸氪石和阿司匹林的结果

我尝试了这个方法,但我不能用interactionid查询。例如,我有3种药物。我的查询看起来像是从参与药物中选择transactionid,其中drugid=a或drugid=b或drugid=c。这将提取所有涉及这些药物的transactionid,而不是一行。我感到困惑只在这一部分。为什么在这种情况下你只希望有一行?我的意思是,一种药物可以与多种药物相互作用,对吗?我应该只知道如果我同时开药a+药物b+药物c会有什么结果。如果我使用这种药物,我会得到药物a和其他一些组合的结果或结果。关于我的困境,我也做了一些更新。谢谢