2014-06-16 97 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

相關問題