唐興源,任 真,湛 薇
(甘肅中醫(yī)藥大學,甘肅 蘭州73000)
敦煌醫(yī)學素材數據庫中方劑入庫的設計與實現*
唐興源,任真△,湛薇
(甘肅中醫(yī)藥大學,甘肅 蘭州73000)
從敦煌醫(yī)學方劑素材本身的特點入手進行分析,結合敦煌醫(yī)學應用的實際需求展開功能設計和數據庫設計,對搜集到的方劑素材進行分析、分類并建立表結構,最后通過編程實現敦煌醫(yī)學方劑信息的入庫功能。
敦煌醫(yī)學;方劑入庫;數據庫
1.1系統(tǒng)分析
敦煌遺書共約5萬卷,其中醫(yī)學卷子約100種,設計卷號達28個左右。據統(tǒng)計,這些醫(yī)學卷子載有至少約1100余首中醫(yī)方劑,主要包括內、外、婦、兒、五官、口腔、皮膚等臨床各科方劑,以及食療方劑與特色鮮明的佛教道教方劑等[1]。為使研究人員根據個人需要、意愿對敦煌醫(yī)學方劑進行查詢與使用,對敦煌醫(yī)學中比較繁雜的、常用的中醫(yī)方劑進行搜集、分類和處理[2],并將其以計算機可識別的方式存儲在關系型數據庫中,實現敦煌醫(yī)學方劑的數字化存儲,從而為研究人員帶來更大的便捷。
1.2功能設計
將數據庫技術應用到敦煌醫(yī)學方劑的管理與存儲上,有效地實現了其數字化。對敦煌醫(yī)學方劑的入庫檢索功能做以下功能設計:
1)多樣化的檢索方式:①研究人員(用戶)可以通過輸入方劑的拼音首字母檢索;②可以輸入方劑類別檢索,例如:常見的方劑分類有內、外、婦、兒科等;③輸入方劑的部分名稱,系統(tǒng)自動模糊匹配調出相關方劑信息;④當不知道自己要找哪些方劑時,直接回車鍵,將顯示庫中所有的方劑。注:由于庫中方劑很多,此過程不常用,比較耗費查詢時間;⑤選擇年代,即可檢索出出相應年代的方劑。
2)友好的檢索界面。數據庫檢索界面友好,操作簡單易懂,只需要按照操作提示即可完成檢索,不需要系統(tǒng)的培訓,節(jié)約了學習操作的時間成本。
3)詳細的檢索內容。在數據庫設計階段合理規(guī)劃方劑在表中的存儲結構,檢索出來的方劑不僅包括其本身的組成成分,而且還會有具體的適用癥狀和注意事項等內容。
1.3數據庫設計
1.3.1概念結構設計
將搜集、加工、整理好的敦煌醫(yī)學方劑素材進行詳細的分析、分類,提取其共性,并根據關系型數據庫設計規(guī)范要求,建立表結構、表間關系、索引、約束等,實現方劑素材在庫中存儲結構的設計[3]。經過分析,涉及到的主要實體包括方劑信息、分類外碼信息等。
1)方劑信息實體包括方劑名稱、方劑分類、方劑內碼、方劑輸入碼、劑型、年代、詳細說明、組成成分、方劑外碼、備注等屬性。
2)分類外碼信息實體包括分類代碼、分類名稱、備注等屬性。
方劑信息和分類外碼信息實體的E-R圖如圖1所示:
圖1 方劑信息和分類外碼信息實體的E-R圖
1.3.2邏輯結構設計
數據庫邏輯結構設計見表1,表2。
表1 方劑信息結構表
表2 分類外碼信息結構表
在詳細設計完成后,就需要編碼實現敦煌醫(yī)學方劑素材的入庫功能,具體涉及到界面的布局、與后臺數據庫的交互兩個方面。與后臺數據庫的交互有方劑信息的增、刪、改、查操作,主要用到結構化查詢語言(SQL)來完成。每次與后臺的交互都會有一個當前時間的記錄,例如:增加一種新方劑,會產生該方劑的入庫時間;修改庫中已有的方劑信息,會記錄修改時間等。界面布局有好多選擇的語言,可以用面向對象程序設計語言Java[4]、C#、.net等。這里詳細給出實現敦煌醫(yī)學方劑素材入庫的關鍵核心代碼:
1)通過getNowTime()函數獲取當前服務器時間記錄相關操作,其核心代碼如下:
publicStringgetNowTime(){
StringgetNowTime=null;
try{
StringstrSQL="";
strSQL="SELECTSUBSTRING(CONVERT(now(),CHAR(19),1,19)ASSYSDATE";
ResultSetrst=stmt.executeQuery(strSQL);
while(rst.next(){
getNowTime=rst.getString("SYSDATE");
}
}catch(Exceptionse){
System.out.println(se.getMessage();
se.printStackTrace();
}
returngetNowTime;
}
2)通過InsertFJ()函數增加新的方劑信息,實現數據庫操作中的“增”操作,其核心代碼如下:
publicbooleanInsertFJ(Stringfjsr,String fjnm,Stringfjwm,Stringzccf,Stringnd,
Stringxxsm, Stringfjfl, Stringfjmc, String jx,Stringbz){
psSQL="INSERTINTOFJXX(FJSR,FJNM,FJWM,ZCCF,ND,XXSM,FJFL,FJMC,JX,BZ)VALUES(";
psSQL=psSQL+"'"+fjsr+"'"+",";
psSQL=psSQL+"'"+fjnm+"'"+",";
psSQL=psSQL+"'"+fjwm+"'"+",";
psSQL=psSQL+zccf+",";
psSQL=psSQL+"'"+nd+"'"+",";
psSQL=psSQL+"'"+xxsm+"'"+",";
psSQL=psSQL+"'"+fjfl+"'"+",";
psSQL=psSQL+"'"+fjmc+"'"+",";
psSQL=psSQL+"'"+jx+"'";
psSQL=psSQL+"'"+bz+"'";
psSQL=psSQL+")";
System.out.println(psSQL);
try{
stmt.executeUpdate(psSQL);
conn.commit();
returntrue;
}catch(SQLExceptione){
System.out.println(e.getMessage();
e.printStackTrace();
}
returnfalse;
}
3)通過updateFJ()函數修改數據庫中的方劑信息,其核心代碼如下:
publicbooleanupdateFJ(Stringfjsr, Stringfjnm,Stringfjwm,Stringzccf,Stringnd,Stringxxsm,Stringfjfl,Stringfjmc,String jx,Stringbz){
psSQL="UPDATEFJXXSETFJSR="+"'"+fjsr+"'" +","FJNM="+"'"+fjnm+"'"+","FJWM="+"'"+ fjwm+"'"+","ZCCF="+"'"+zccf+"'"+","ND="+"'"+ nd+"'"+","XXSM="+"'"+xxsm+"'"+","FJFL="+"'"+ fjfl+"'"+","FJMC="+"'"+fjmc+"'"+","JX="+"'"+ jx+"'"+","BZ="+"'"+bz+"'"+",";try{stmt.executeUpdate(psSQL);conn.commit();returntrue;
}catch(SQLExceptione){
System.out.println(e.getMessage();
e.printStackTrace();
}
returnfalse;
}
4)通過getFJData()函數來查詢方劑信息,其核心代碼如下:
publicvoidgetFJData(){
psSQL="SELECT*FROMFJXX";
try{
prs=stmt.executeQuery(psSQL);
}catch(SQLExceptionse){
System.out.print(se.getMessage();
se.printStackTrace();
}
}
(5)通過deleteFJData()函數實現對已有方劑的刪除操作,其核心代碼如下:
pubicvoiddeleteFJData(Stringfjsr){
psSQL="DELETEFROMFJXXWHERE FJSR="+"'"+fjsr+"'"";
try{
prs=stmt.executeQuery(psSQL);
}catch(SQLExceptionse){
System.out.print(se.getMessage();
se.printStackTrace();
}
}
目前敦煌醫(yī)學在國內外的研究受到越來越多的重視,由于歷史的原因敦煌醫(yī)學資源大都比較分散,難以集中,因此給后續(xù)的研究帶來很大的困擾。建立敦煌醫(yī)學方劑素材數據庫,通過收集并整理準確、全面的方劑資料,可有效地實現敦煌醫(yī)學方劑資源最大限度的集中,為后來的研究者提供充分的資源,同時避免重復收集等工作。本課題的研究仍有一些不足之處,如敦煌醫(yī)學方劑的收集來源大都是通過網絡、文獻等途徑,難免有不全之處,同時庫中建立的方劑數據的表結構應還進行進一步的優(yōu)化和改進。
[1] 王曌瀅,王玉珠.敦煌醫(yī)學抗衰老方劑研究概況[J].西部中醫(yī)藥,2013,26(4):11-12.
[2] 唐興源,任真.敦煌醫(yī)學素材數據庫系統(tǒng)的設計與實現[J].甘肅科技,2013,31(24):19-20.
[3] 魯艷霞,邵欣欣.數據庫原理與應用實訓教程[M].北京:清華大學出版社,2013.
[4] 耿祥義,張躍平.Java面向對象程序設計[M].北京:清華大學出版社,2013.
RS
1.蘭州市科技局人才創(chuàng)新創(chuàng)業(yè)專項(項目編號:2014-2-33)。2.敦煌醫(yī)學與轉化省部共建教育部重點實驗室開放基金項目(項目編號:DHYX14-001)。
△任真(1979-),男,副教授,碩士,主要從事數據挖掘、中醫(yī)藥數字化推廣的相關研究。郵箱:rz@gszy.edu.cn。