比方說,你有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表(一個或多個),並進行適當的演出層右指數,所有這些數據變成由平均用戶完全可讀的。
太棒了!感謝您的快速和翔實的答案。將與選項2一起去。 – Stefan