-1

我是一名初級醫生,我正在爲我的資深醫生創建一個數據庫系統。 基本上,我的資深博士希望能夠在關係數據庫中存儲他的每個患者的大量信息,以便以後他可以非常方便快速地分析/審計數據(即基於某些人口統計信息,找到治療導致更好的結果或哪些種族對某些治療更好地反應等等)。我的MySQL表中有太多列嗎?

他希望爲每位患者存儲的信息是巨大的。

每位患者需要多次(手術前即刻,術後即刻,術後3個月,術後6個月,術後2年,術後5年)完成7次調查(每次只需1-2分鐘)在這些不同時間進行的這些調查都將存儲在數據庫中。

此外,他想存儲他們的相關細節(姓名,種族,性別,年齡等)。

最後,他還打算存儲很多相關的過去的病史,目前的症狀,檢查結果,他們嘗試的各種治療方案,然後是結局指標。

基本上,每個病人都有很多信息。所有這些信息對每位患者都是獨一無二的。因此,我創建了一個巨大的病人桌(〜400列)來包含所有這些信息。我這樣做的原因是因爲表中的大多數列對於每個患者都不是多餘的。

此外,這整個php/mysql數據庫系統只會在他的電腦本地居住,它永遠不會在互聯網上。

這些表格不會有太多患者,到年底時可能會有200 - 300個左右。

鑑於所有這一切,可以有這麼大的桌子嗎? 或者我應該被分裂成更小的表 即 - 病人的人口統計 - 調查結果 - 症狀 - 治療 等等等等,具有獨特的「patient_id」爲每個表之間的聯繫?

這兩種方法之間會有什麼區別,哪種更好?爲什麼?

+0

我只是做'耐心'和'調查'表。 'survey'可以有一個patient_id作爲外鍵,以及調查類型,如果它是術前,術後等等。你說列不會是多餘的,但這裏有兩個問題。在插入行5年後,您正在創建列以填充這些列,並且您不太靈活地在不同的時間間隔添加更多調查。 – apokryfos

+1

@apokryfos和醫療histoy和考試及其結果。 OP應該創建不少表格。 – Shadow

+0

@Shadow是的,(我在第一次閱讀問題時一定錯過了這部分內容),還需要一個'past_history_entry'表,其中包含一個patient_id及其中的相關信息。這引出瞭如何將這個問題編碼爲表格中的列的問題,並不是所有的患者都會有我不會想到的相同的歷史記錄。 – apokryfos

回答

0

關於400列...

,如果有的話,列將是重要的搜索或排序嗎?他們可能很少。將這幾列保留爲列。

你會怎麼做?可能你只是在某處顯示它們,使用一些應用程序代碼來漂亮地打印它們?所以這些也可能是一個大的JSON字符串。

這可以避免EAV噩夢,並以實際合理簡單(快速)的格式將數據存儲在數據庫中。