2016-01-26 53 views
0

我在規劃我的數據庫時遇到了各種各樣的思想問題: 提綱: 數據庫是一個患者數量衆多的患者數據庫。 每位患者都有大量數據,例如:血壓值不同日期。爲每個特定用戶創建MySQL表,還是推廣這些表?

問題:

  1. 難道是容易例如創建每個病人的表 「bob_builder_BPvalues」或爲BP值創建一個表格,例如。 「BP_values」然後讓所有的患者值通過外鍵鏈接在那裏?由於我每個病人的數據非常多,將每個病人的血壓值混合到一張表格中似乎沒有意義,因爲這對於人類而言看起來非常混亂。在處理和分類數據方面哪種方法更快?

+0

太棒了!感謝您的快速和翔實的答案。將與選項2一起去。 – Stefan

回答

0

比方說,你有10例患者:

隨着你的第一種方法,你最終會有10個不同的表總是包含相同類型的數據。

有關單個病人的每個查詢,你就必須建立一個動態查詢連接到右表:

SELECT ... 
FROM patients 
INNER JOIN bobby_measures ON ... -- this has to be crafted dynamically each time 
WHERE patients.name = 'bobby' 

而如果你想在某種一些數據統計的範圍所有患者的日期?即使有10名患者,對此的質疑也變成了一場噩夢。所以猜猜當你有1000時會發生什麼......

另一方面,你的第二選擇使人類對數據庫的閱讀變得更加困難。但被人讀取並不是數據庫的目標之一。

跟單patientData表(或你想要的表,如果需要的話每一個數據類型,血壓和東西),一切都變得簡單。您可以使用相同的查詢來查詢任何患者,只更改患者ID,您可以針對某個日期範圍進行所需的所有查詢,過濾某些數據類型或其他內容。

SELECT ... 
FROM patients 
INNER JOIN patientData ON ... 
WHERE patients.name in ('bobby', 'joe'...) 
AND patientData.type = 'blood pressure' 
AND patientData.date BETWEEN ... AND ... 
-- and so on 

使用上patientData表(一個或多個),並進行適當的演出層右指數,所有這些數據變成由平均用戶完全可讀的。

0

對所有患者都有一張表。然後可以使用外鍵鏈接到血壓表。 ...

之間

Patient 1----* BloodPressureResults因此單個病人可以有很多的血壓結果的關係。

然後你就可以通過使用簡單的查詢,以查看特定病人的血壓結果...

SELECT * FROM BloodPressureResults WHERE Patient_Id = '1'

這會再回到你所有的血壓結果對病人與1 一個id你可以這樣也可以用同樣的方法添加像WeightResultsBloodTestResults其他表作爲BloodPressureResults

+0

非常感謝!這正是我正在尋找的答案!非常感激。 – Stefan

相關問題