沒有Computer science訓練就是沒有,最近才學Database normalization。
在設計Database時費發思量在想,例如一個病人有一個column叫做disease,而阿小明又有兩種病(例如AIDS, SARS),咁點算。如果係一般情況,同事會將"AIDS, SARS"原隻寫在disease這個field。不合乎2NF。好了,到要extract所有SARS病人,用電腦選了所有disease = SARS的病人,才發現紀錄成"AIDS, SARS"的小明沒有選入去,身患重病的小強的“AIDS, Asthma, SARS, Dermatitis"沒有選入去,以及突然寫全寫"Severe Acute Respiratory Syndrome"的小鈴沒有選入去和寫了細草"sars"的小平沒有選入去。最後又是要人手選,十零至一百幾廿個都話,要是數據係一千幾萬個,如何人手做?每次見到這些data,要analysis,先要花三小時做clean-up,浪費時間。
我於是在想,那加一百幾廿個column,disease 1至disease 100,每個column每格只寫一個病。那麼要選SARS的病人,只需要選disease 1至disease 100任一個空格有SARS這個字的就OK了。但如果小慧只有一個disease,那麼就會有99個空格出現,這些空格會以NULL存檔,十分浪費空間。另外,如果小珠有第101個病時,又怎算?
最後,我找到了答案,茅塞頓開。就算我學了Normalization,我仍在用Spreadsheet的模式思考。
最近看到一篇論文,主要講到研究的數據收集和分析,要經過三個步驟。以臨床研究為例,Step 1: 先要有醫護人員收集臨床數據,Step 2: 數據要整理、輸入和儲存,Step 3: 統計師分析。Step 1,醫生、護士當然有degree讀。Step 3: 統計學都有degree讀。但Step 2呢?Step 2是完全被忽略的,就算有,他們都只會是窩在Computer Science部門的Database Guru。設計Step 2作業的工作,多數只會認為是一般文書工作,只要隨便一個自稱會Excel、Acess的Clerk或Sec擔任,又或由沒有這方面exposure的醫護人員及/或統計師兼任。但就因為這樣,錯data常有、數據的儲存方法也令它們不適合作統計分析。浪費時間、浪費研究經費。