2013-02-21 100 views
0

假設我必須製作關於藥物列表的數據庫表。我應該如何在mysql數據庫中存儲一系列數據?

  • 第一列是自動遞增的唯一標識符字段。例如「1」
  • 第二列包含藥物的名稱。例如「曲馬多」
  • 第三列包含權重列表。例如, 「30克,40G,50G,60G」

使用PHP while循環和數組,我可以使用下面的方法迴應此數據:

while ($row = mysql_fetch_array($result)) { 
    echo "Drug Name: {$row[1]} Drug Weights: {$row[2]}" 
} 

雖然這工作,我知道這絕對不是最好的方式。權重列表必須是一個varchar,而不是實際的單個整數。如第3欄所示,存儲和迴應單個產品的一系列信息的最佳方式是什麼?

回答

2

在單獨的聯軸器表中。製作一個包含所有可能重量(id,值)的表格'weight',並用2列(組合主鍵)製作'drugs_to_weights_coupling':一個帶有藥物ID,一個帶有體重ID。

這就是所謂的「多到多」的關係,可以是Googled as such easily.

+1

@JWH這給你一個乾淨的數據模型。然後,您可以使用表連接來查詢它(用於輸出),並對sql語句內的權重選項應用連接運算符,以獲得每種藥物的單個行。 – arkascha 2013-02-21 08:45:32

+0

@Sherlock福爾摩斯,你絕對實用的答案永遠不會失效! – Starkers 2013-02-21 09:10:24

相關問題