将数据插入到多对多关系表中

时间:2014-06-16 15:00:11

标签: sql many-to-many

我正在尝试构建一个包含多个表格的数据库,用于研究/研究。这是我第一次设计这么大的数据库;数据库每天增加100-200条记录,到目前为止,我有自2010年以来的数据。在所有数据中,通用序列号,产品名称和药物强度(处方)稍微困扰我。这是我到目前为止所做的:  通用Seq编号是药物强度(产品名称)所特有的。所以,我有一个包含id,泛型seq no和strength的表。另一个表是prod_id和产品名称。每个通用序列号可以具有一个或多个产品名称,并且每个产品名称可以基于强度具有不同的通用序列号。因此,我将其设置为多对多关系。我为这个关系创建了另一个表,其中包含rx_id,drug_id和prod_id。由于许多患者可能会使用相同的药物,因此drug_id和prod_id可能会在rx_table中重复几次。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分: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

所以,例如第一排是Tylenol,含有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

这意味着John Doe将获得含有100毫克扑热息痛的Tylenol和Panadol。 Jane Doe将接受含有250毫克扑热息痛的泰诺。我认为你要插入的表最多的是这个模型中的处方表。