2014-06-16 61 views
0

我正在尝试为多个表创建一个用于研究/研究的数据库。这是我第一次设计这个数量级的数据库;该数据库每天增长100-200条记录,到2010年为止,我的数据也是如此。在所有数据中,通用序列号,产品名称和药物(处方)的强度稍微影响了我。这是我迄今为止所做的: 通用Seq编号对于药物(产品名称)的强度是独一无二的。所以,我有一个包含id,通用序号和强度的表。另一个表是prod_id和产品名称。每个通用seq编号可以有一个或多个产品名称,并且每个产品名称可以根据实力具有不同的通用seq编号。所以,我把它设置为多对多的关系。我为这个关系创建了另一张包含rx_id,drug_id和prod_id的表。由于许多患者可能为同一种药物服用,drug_id和prod_id可能会在rx_table中重复多次。将数据插入到多对多关系表中

我的第一个问题是,这个设计是否合适? 我应该如何将数据插入rx_table?即使drug_id和prod_id已经存在于rx_table中,我是否应该每次都为新数据创建新记录,或者我应该寻找其中存在drug_id和prod_id序列的rx_id,并将rx_id插入另一个主表(未显示)包含其他数据。 或者这个问题太模糊?

谢谢你的帮助。

+0

你的方法很好。您的rx_table是我猜想的代理商和产品名称的组合,所以您购买的是“药物”。基本上,您的患者表和rx_table之间存在另一种m:n关系,您可以在其中管理患者的某种药物(通用序列号/产品名称)的处方。 –

+0

@MartinK。谢谢。这非常有帮助。因此,为了确认,即使存在prod_id和drug_id组合,也要继续向rx_table添加数据并创建新的rx_id,对不对?你能回复这个消息吗?我可以将它标记为答案? – user1828605

回答

1

我不知道你的通用序列号究竟是什么,所以我只是用一个真实的药物的例子。从你的描述中我认为它和你的应用非常相似。可以说你有扑热息痛作为代理。那么你的通用序列号表会是这样的

drug_id | generic_seq_no  | strength 
--------+--------------------+---------- 
1  | Paracetamol-100 | 100 
2  | Paracetamol-250 | 250 
3  | Paracetamol-500 | 500 

您的产品表将包含商标的名称:

prod_id | prod_name 
----------+------------ 
1   | Tylenol 
2   | Captin 
3   | Panadol 

的rx_table包含商标名称,代理和力量的组合:

rx_id | drug_id | prod_id 
-------+----------+---------- 
1  | 1  | 1 
2  | 1  | 2 
3  | 1  | 3 
4  | 2  | 1 
5  | 2  | 2 
6  | 3  | 2 
7  | 3  | 3 

因此,例如第一排是泰诺,含100毫克扑热息痛。现在你有什么可以由医生规定,这就是你迄今为止所做的。所以我说你的方法很好。

现在,你需要(或有吗?)你所有的患者

patient_id | firstname | lastname 
-----------+-----------+----------- 
1   | John  | Doe 
2   | Jane  | Doe 

最终另一个表,您必须在商标/代理/力量组合链接到患者。由于一个病人可能得到不同的药物和多个病人可能会需要使用另一个多到多对多关系相同的药物,让我们称之为处方

prescription_id | patient_id | rx_id 
----------------+------------+------ 
1    | 1   | 1 
2    | 1   | 3 
3    | 2   | 4 

这意味着李四将得到泰诺林和必理通含100毫克对乙酰氨基酚每。 Jane Doe将接受250 mg扑热息痛的泰诺。我认为你将要插入的表最多的是这个模型中的处方表。

+0

很好解释,并感谢您的帮助。 – user1828605

相关问题