孫寧,趙維平,王宇飛,陸奇峰,王凌
(1.上海音樂學(xué)院,上海 200031;2.西安交通大學(xué),西安 710049;3.上海計(jì)算機(jī)軟件技術(shù)開發(fā)中心,上海 201112)
中國古譜數(shù)據(jù)庫管理平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
孫寧1,趙維平1,王宇飛2,陸奇峰3,王凌3
(1.上海音樂學(xué)院,上海 200031;2.西安交通大學(xué),西安 710049;3.上海計(jì)算機(jī)軟件技術(shù)開發(fā)中心,上海 201112)
采用軟件工程的方式方法設(shè)計(jì)并實(shí)現(xiàn)中國古譜數(shù)據(jù)庫管理平臺(tái)。依據(jù)需求分析完成對(duì)平臺(tái)架構(gòu)以及功能模塊的設(shè)計(jì),采用Laravel框架進(jìn)行整個(gè)項(xiàng)目開發(fā)、MySQL實(shí)現(xiàn)數(shù)據(jù)庫管理、VueJS實(shí)現(xiàn)頁面開發(fā)。該平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)旨在為上海音樂學(xué)院提供古籍曲譜管理服務(wù),對(duì)同類系統(tǒng)的研究與應(yīng)用具有參考價(jià)值。
軟件工程;古譜數(shù)據(jù)庫;Laravel框架;MySQL;VueJS
隨著信息技術(shù)的發(fā)展與進(jìn)步,書籍作為重要的公共信息資源之一,其管理方式已經(jīng)發(fā)生了巨大的改變,迫切需要通過現(xiàn)代網(wǎng)絡(luò)信息技術(shù)建立完善的書籍管理系統(tǒng)[1]。戎玫、張廣泉等人通過UML語言實(shí)現(xiàn)圖書管理系統(tǒng)體系結(jié)構(gòu)的整體建模,使用Visual Basic開發(fā)整個(gè)系統(tǒng)[2];邵永初利用ASP.NET、C#、SQL Server 2005等技術(shù)設(shè)計(jì)并實(shí)現(xiàn)古籍管理系統(tǒng),提高了古籍業(yè)務(wù)的工作效率和管理水平,為古籍信息化管理建設(shè)提供了借鑒[3];趙博、仝芳潔等人利用TPI對(duì)漢唐時(shí)期《黃帝內(nèi)經(jīng)》進(jìn)行收集和整理,建立《內(nèi)經(jīng)》古籍?dāng)?shù)據(jù)庫,為醫(yī)學(xué)古籍管理系統(tǒng)的設(shè)計(jì)提供了參考[4]。
上海音樂學(xué)院收藏有豐富的古籍曲譜資料,作為學(xué)校最重要的公共信息資源之一,如何將這些古譜資料合理共享給教師和學(xué)生,使其在專業(yè)教學(xué)和學(xué)術(shù)科研中發(fā)揮應(yīng)有的作用已經(jīng)成為一個(gè)重要問題[5-6]。傳統(tǒng)的管理方法主要是由學(xué)校委派工作人員負(fù)責(zé)統(tǒng)計(jì)古譜資料的借出和歸還、古譜資料的分類、新古譜資料的記錄等工作,工作量龐大且容易出現(xiàn)錯(cuò)誤。針對(duì)這些問題,迫切需要設(shè)計(jì)一種古譜數(shù)據(jù)庫管理平臺(tái)。
本文為上海音樂學(xué)院設(shè)計(jì)了一個(gè)基于B/S架構(gòu)的古譜數(shù)據(jù)庫管理平臺(tái),可以方便學(xué)生和教師進(jìn)行古譜資料查詢、下載,只需要用戶注冊(cè)并獲相應(yīng)權(quán)限;方便管理員實(shí)現(xiàn)用戶管理,對(duì)古譜資源進(jìn)行分類管理,并為不同用戶賦予相應(yīng)的閱讀、下載等權(quán)限。
1.1 功能需求分析
中國古譜數(shù)據(jù)庫管理平臺(tái)是依據(jù)上海音樂學(xué)院的需要而建立的輔助化信息管理系統(tǒng)。該系統(tǒng)以古譜資料的采集管理、查詢和展示為核心,旨在提高管理效率和查詢效率。該平臺(tái)包括兩大部分:采集管理平臺(tái)和展現(xiàn)及應(yīng)用平臺(tái),具體功能需求如下:
(1)采集管理平臺(tái)
①古籍資料上傳:通過對(duì)古籍曲譜進(jìn)行掃描得到相應(yīng)的圖片資料,提供單個(gè)資料上傳和資料批量上傳功能。每本古籍約100張圖片以內(nèi),每個(gè)圖片分為高清和普清,高清每張為10-20M大小,每本古籍高清占1G左右容量。普清為720×480分辨率。
②視頻資料上傳:采集古籍曲譜的相關(guān)視頻信息并上傳,保存到數(shù)據(jù)庫。視頻資料包括AVI、ASF、RMVB、MPEG等常用格式。
③資料屬性錄入:資料包括視頻資料和古籍的圖片資料。每個(gè)視頻擁有如:名稱、介紹、發(fā)布時(shí)間等多個(gè)屬性。把視頻的多個(gè)屬性和視頻本身關(guān)聯(lián),為檢索提供依據(jù);每本古籍擁有如古籍名稱、作者、年代、簡介、類別等多個(gè)屬性。通過建設(shè)古籍的多個(gè)屬性。把古籍圖片和古籍相關(guān)聯(lián),為檢索提供依據(jù)。另外,每本古籍可能包括了多個(gè)曲子,每個(gè)曲子包括1到多頁。每個(gè)曲子擁有如曲子名稱、曲子作者、類別等多個(gè)屬性。通過內(nèi)網(wǎng)的管理界面可以實(shí)現(xiàn):錄入古籍的多個(gè)屬性、錄入古籍中曲子的多個(gè)屬性、錄入視頻的多個(gè)屬性。
④資料分類管理:根據(jù)古籍曲譜的屬性對(duì)其進(jìn)行有效分類,分類可以多級(jí),使資料能在語意上能有序地進(jìn)行管理和查找。
⑤用戶管理:主要包括網(wǎng)站用戶和內(nèi)部管理用戶。
網(wǎng)站用戶:VIP用戶(提供下載普清資源功能、預(yù)覽全本);專家用戶(預(yù)覽全本);普通用戶(預(yù)覽部分資料);網(wǎng)站匿名用戶(可以查看資源,但是沒法預(yù)覽和下載)。
內(nèi)部管理用戶:資源上傳用戶(資源上傳、填寫資源屬性);資源管理用戶(資源刪除和修改、屬性修改和確認(rèn));資源發(fā)布用戶(資源的開發(fā)情況設(shè)定,確定資源級(jí)別針對(duì)某個(gè)角色開放,針對(duì)某個(gè)人);系統(tǒng)用戶(系統(tǒng)權(quán)限、角色、后臺(tái)管理等功能)。
(2)展現(xiàn)及應(yīng)用平臺(tái)
①用戶注冊(cè)和登錄:主要包括用戶注冊(cè)填寫個(gè)人資料,提交注冊(cè)信息后內(nèi)部管理用戶審核及開通權(quán)限。內(nèi)部管理用戶由系統(tǒng)用戶設(shè)置及管理,用戶登錄后才能使用開通的權(quán)限。
②資源檢索:包括簡單檢索和分類檢索。簡單檢索是依據(jù)視頻資料名稱的模糊檢索或依據(jù)古籍名稱的模糊檢索;分類檢索是根據(jù)古籍和視頻類型實(shí)現(xiàn)檢索。
③資源列表展示:依據(jù)用戶的檢索條件,將檢索到的資源信息以列表的形式展示在網(wǎng)頁上,用戶可以選擇查看、下載感興趣的資源。
④資源分類展示:依據(jù)用戶所選擇的古籍曲譜類型標(biāo)簽,網(wǎng)頁中將分頁顯示屬于此類型的所有古籍曲譜信息,用戶可以選擇查看感興趣的古籍曲譜。
⑤最新資源:主要是用于展示最近一段時(shí)間內(nèi)新加入的古籍曲譜信息,包含古籍名稱、作者、年代、簡介等。
⑥資源推薦:根據(jù)用戶的瀏覽記錄、下載記錄等信息,通過協(xié)同過濾推薦算法挖掘用戶潛在的古籍瀏覽習(xí)慣、偏好,向用戶推薦其可能喜歡的古籍曲譜。
根據(jù)功能分析,該平臺(tái)的總體功能架構(gòu)如圖1所示:
圖1 平臺(tái)總體功能架構(gòu)圖
1.2 關(guān)鍵技術(shù)分析
系統(tǒng)采用Laravel框架,Laravel作為一套簡潔、優(yōu)雅的PHP Web開發(fā)框架(PHP Web Framework),其語法富有表現(xiàn)力,擁有豐富的擴(kuò)展包,便于開發(fā)人員進(jìn)行系統(tǒng)開發(fā)。
Laravel采用MVC的設(shè)計(jì)模式,強(qiáng)制分離了業(yè)務(wù)邏輯與用戶界面,其生命周期主要分為:
(1)獲取到HTTP請(qǐng)求實(shí)例,將其routed到一個(gè)合適的Laravel控制器;
(2)控制器通過特定action實(shí)現(xiàn)與數(shù)據(jù)模型交互,并依照商業(yè)邏輯處理從數(shù)據(jù)庫中獲取到的數(shù)據(jù),然后調(diào)用結(jié)果視圖;
(3)View本身將數(shù)據(jù)做格式化,在瀏覽器中渲染視圖,最終提供HTTP的response到瀏覽器。
系統(tǒng)數(shù)據(jù)庫采用MySQL,用戶可以在內(nèi)網(wǎng)的任意一臺(tái)計(jì)算機(jī)上查詢所需要的古籍曲譜信息。MySQL使用方便、安全穩(wěn)定,具有體積小、開放源代碼等特點(diǎn),與PHP、Apache一起可以構(gòu)建出良好的開發(fā)環(huán)境,采用單點(diǎn)模式適用于小規(guī)模應(yīng)用,采用集群模式可以為為大規(guī)模應(yīng)用提供可靠安全的數(shù)據(jù)存儲(chǔ)功能。同時(shí),MySQL可通過索引實(shí)現(xiàn)數(shù)據(jù)高速檢索操作,并具有強(qiáng)大的SQL擴(kuò)展功能。
2.1 總體架構(gòu)設(shè)計(jì)
基于Laravel框架開發(fā)的古譜數(shù)據(jù)庫管理平臺(tái)分別包括瀏覽器應(yīng)用程序和服務(wù)器應(yīng)用程序兩部分。整個(gè)平臺(tái)采用Browser/Server結(jié)構(gòu),其總體架構(gòu)如圖2所示。
圖2 平臺(tái)總體架構(gòu)
用戶通過瀏覽器向內(nèi)網(wǎng)的應(yīng)用服務(wù)器發(fā)送HTTP請(qǐng)求,通過權(quán)限驗(yàn)證便可以查閱存儲(chǔ)在數(shù)據(jù)中心(庫)的資源;內(nèi)部管理員在后臺(tái)實(shí)現(xiàn)系統(tǒng)、用戶和資源的管理,完成數(shù)據(jù)文件上傳、更新等操作。
2.2 邏輯結(jié)構(gòu)設(shè)計(jì)
整個(gè)平臺(tái)基于Laravel,采用MVC的設(shè)計(jì)模式(Model-View-Controller,即“模型-視圖-控制器”)[7]。Model(模型)表示應(yīng)用程序核心;View(視圖)對(duì)數(shù)據(jù)(數(shù)據(jù)庫記錄)進(jìn)行顯示,即能直觀看到的Web界面;Controller(控制器)向系統(tǒng)發(fā)出指令的工具,處理輸入(寫入數(shù)據(jù)庫記錄)。其平臺(tái)邏輯結(jié)構(gòu)設(shè)計(jì)如圖3所示:
圖3 邏輯結(jié)構(gòu)圖
在與Laravel進(jìn)行交互時(shí),瀏覽器向Web服務(wù)器發(fā)送一條請(qǐng)求(Request),Web服務(wù)器會(huì)將接收到的請(qǐng)求發(fā)送給Laravel Routing引擎。Laravel Routing接收到請(qǐng)求后,選擇合適的控制器(Controller)類方法進(jìn)行重定向。
接著由控制器類接管,控制器在特定情況下會(huì)立即呈現(xiàn)出一個(gè)視圖(View),即被轉(zhuǎn)換成為返回給瀏覽器的HTML模板,并與模型進(jìn)行交互,這里模型負(fù)責(zé)與數(shù)據(jù)庫(Database)進(jìn)行通信??刂破鲗⒃谀P驼{(diào)用完成后呈現(xiàn)最終視圖,并向?yàn)g覽器返回整個(gè)頁面。
2.3 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫設(shè)計(jì)是整個(gè)古譜數(shù)據(jù)庫管理平臺(tái)的核心,其設(shè)計(jì)的是否合理將會(huì)直接影響整個(gè)數(shù)據(jù)庫應(yīng)用系統(tǒng)的軟件架構(gòu)及數(shù)據(jù)處理的效率[8]。整個(gè)平臺(tái)采用MySQL作為后臺(tái)數(shù)據(jù)庫,通過PDO實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪問及增添、修改、刪除等操作。根據(jù)平臺(tái)業(yè)務(wù)需求,創(chuàng)建了古譜數(shù)據(jù)庫,主要包含11張數(shù)據(jù)表,存儲(chǔ)了了各子功能模塊的數(shù)據(jù)信息。這里列舉最重要3張表的E-R關(guān)系,如圖4所示:
圖4 數(shù)據(jù)庫表的E-R關(guān)系
3.1 工作流程
在整個(gè)平臺(tái)中主要包括兩個(gè)部分:采集管理平臺(tái)和展現(xiàn)及應(yīng)用平臺(tái),這兩部分相對(duì)獨(dú)立。在采集管理平臺(tái)中,管理員可以對(duì)資源進(jìn)行上傳、刪除、向指定權(quán)限的用戶發(fā)布,實(shí)現(xiàn)資源檢索、統(tǒng)計(jì)以及用戶管理等;在展現(xiàn)及應(yīng)用平臺(tái)中,用戶依據(jù)自身權(quán)限對(duì)相應(yīng)資源進(jìn)行訪問。平臺(tái)整體工作流程見圖5。
圖5 平臺(tái)工作流程
3.2 主要技術(shù)實(shí)現(xiàn)
(1)基于session的登錄認(rèn)證
用戶可以通過request對(duì)象中的session對(duì)象來實(shí)現(xiàn)基于session的登錄認(rèn)證。
在用戶登錄服務(wù)器之后,服務(wù)器會(huì)保存用戶登錄的信息session,被訪問過的其他服務(wù)器會(huì)通過一個(gè)唯一標(biāo)識(shí)來共享這個(gè)session。為了驗(yàn)證同一用戶的不同會(huì)話,需要先對(duì)用戶登錄進(jìn)行驗(yàn)證,驗(yàn)證成功之后,將會(huì)下發(fā)一個(gè)sessionid,以后的每次請(qǐng)求都會(huì)攜帶這個(gè)sessionid,通過這個(gè)sessionid來判斷是否已經(jīng)存在同樣的session,若已存在,則代表該用戶已經(jīng)登錄。
(2)權(quán)限認(rèn)證
用戶可以訪問而且只能訪問自己被授權(quán)的資源,即查看當(dāng)前登錄用戶的角色是否包含該功能的權(quán)限。如果有,則表示有權(quán)訪問,否則表示無權(quán)訪問。
①角色:用戶可定義角色并給其賦予權(quán)限;
②用戶:系統(tǒng)用戶的角色是由用戶賦予。
③權(quán)限:任意一個(gè)角色都可擁有多個(gè)權(quán)限,并且一個(gè)權(quán)限可以分配給不同角色。
(3)Eloquent ORM
Laravel自帶的Eloquent ORM提供了一個(gè)美觀、簡單的與數(shù)據(jù)庫打交道的ActiveRecord實(shí)現(xiàn),每張數(shù)據(jù)表都對(duì)應(yīng)一個(gè)與該表進(jìn)行交互的“模型”,模型允許對(duì)表中數(shù)據(jù)進(jìn)行訪問,如:查詢、添加、修改等。
數(shù)據(jù)表經(jīng)常要與其他表做關(guān)聯(lián),比如一則新聞,可能會(huì)包含多條評(píng)論,或者某條購買記錄會(huì)被關(guān)聯(lián)到對(duì)其付款的用戶。通過Eloquent可以更簡單地組織并處理這些表之間的關(guān)聯(lián)關(guān)系,并且Eloquent支持如:一對(duì)多、多對(duì)多、多態(tài)關(guān)聯(lián)等不同類型的關(guān)聯(lián)關(guān)系。
(4)Vue.js
Vue.js作為一個(gè)Web界面庫,用于構(gòu)建數(shù)據(jù)驅(qū)動(dòng),旨在利用盡可能簡單的API去實(shí)現(xiàn)數(shù)據(jù)的響應(yīng)式綁定和組件的組合使用。其工作原理圖如圖6:
圖6 Vue.js工作原理圖
Vue.js的核心是一個(gè)響應(yīng)的數(shù)據(jù)綁定系統(tǒng),綁定被創(chuàng)建后,DOM與數(shù)據(jù)將會(huì)保持同步。每當(dāng)修改了數(shù)據(jù),DOM便會(huì)相應(yīng)地更新,并且數(shù)據(jù)修改與DOM更新實(shí)現(xiàn)分離。這使得代碼撰寫變得更簡單,更容易理解與維護(hù)。
(5)VueX
VueX作為一個(gè)狀態(tài)管理架構(gòu),統(tǒng)一管理、維護(hù)各個(gè)Vue組件的可變化狀態(tài),這里的狀態(tài)分為組件內(nèi)部狀態(tài)和多組件共用狀態(tài)??蛻舳怂薪M件都是在action中完成對(duì)流入數(shù)據(jù)的處理(如異步請(qǐng)求等),然后通過action觸發(fā)mutation修改state,后由state經(jīng)過getter分發(fā)給各組件。
(6)Vue-router
不同于傳統(tǒng)頁面使用超鏈接實(shí)現(xiàn)頁面跳轉(zhuǎn)、切換的方式,Vue的單頁面應(yīng)用是通過路由設(shè)定訪問路徑,并將其與組件進(jìn)行映射以實(shí)現(xiàn)路徑切換,即組件切換。Vue-router作為Vue.js的路由插件,兩者深度集成用以實(shí)現(xiàn)這種應(yīng)用。
在服務(wù)端提供了數(shù)據(jù)及界面元素后,用戶通過瀏覽器登錄后可直接訪問主平臺(tái)頁面。圖7為展現(xiàn)及應(yīng)用平臺(tái)的展示頁面;圖8是用戶的資源檢索頁面;圖9是采集管理平臺(tái)主頁面;管理員可以進(jìn)行資源上傳、刪除、發(fā)布以及用戶管理等;圖10是用戶統(tǒng)計(jì)和資源分布展示圖。
古譜數(shù)據(jù)庫管理平臺(tái)建設(shè)對(duì)上海音樂學(xué)院的教師和學(xué)生具有重要意義,將有效提高上海音樂學(xué)院的專業(yè)教學(xué)質(zhì)量和學(xué)術(shù)科研能力。整個(gè)平臺(tái)結(jié)合了目前最流行的Web應(yīng)用開發(fā)技術(shù)PHP和MySQL技術(shù),使平臺(tái)運(yùn)行穩(wěn)定、快捷、高效、可靠性安全性高;為教師和學(xué)生的檢索、閱讀提供了便利,并提高了古籍曲譜管理人員的工作效率,減輕工作負(fù)擔(dān);同時(shí),對(duì)同類院校乃至其他大中院校面向不同領(lǐng)域的古籍管理系統(tǒng)建設(shè)提供了借鑒,具有重要參考價(jià)值。
圖7 展現(xiàn)及應(yīng)用平臺(tái)主頁面
圖8 資源檢索頁面
圖9 采集管理平臺(tái)主頁面
圖10 用戶統(tǒng)計(jì)和資源分布展示
[1]王慧蘭.基于面向?qū)ο蠹夹g(shù)的圖書管理系統(tǒng)研究[J].中外企業(yè)家,2016(14).
[2]戎玫,張廣泉,劉艷.基于軟件體系結(jié)構(gòu)和UML的圖書管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2005,32(6):224-227.
[3]邵永初.高校圖書館古籍管理系統(tǒng)的分析與設(shè)計(jì)[D].南昌大學(xué),2014.
[4]趙博,仝芳潔,劉森林,等.漢唐時(shí)期《黃帝內(nèi)經(jīng)》古籍?dāng)?shù)據(jù)庫建設(shè)研究[J].貴陽中醫(yī)學(xué)院學(xué)報(bào),2014,36(6).
[5]熊瑛.基于ASP.NET的高校院系圖書管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].科技資訊,2015,13(26):177-178.
[6]朱鐵櫻.基于ASP.NET的圖書管理系統(tǒng)[J].電腦知識(shí)與技術(shù),2016,12(13).
[7]魏立明,徐成波,林君.智能照明控制系統(tǒng)設(shè)計(jì)[J].吉林建筑工程學(xué)院學(xué)報(bào),2014,31(2):74-76.
[8]代元平,鄭君芳.醫(yī)學(xué)實(shí)驗(yàn)文檔管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)[J].中國醫(yī)療設(shè)備,2016,31(4):93-96.
Design and Implementation of Chinese Ancient Spectrum Database Management Platform
SUN Ning1,ZHAO Wei-ping1,WANG Yu-fei2,LU Qi-feng3,WANG Ling3
(1.Shanghai Conservatory of Music,Shanghai 200031;2.Xi`an Jiaotong University,Shaanxi Province,Xi'an 710049;3.Shanghai Development Center of Computer Software Technology,Shanghai 201112)
Uses software engineering method to design and implement the management platform of Chinese ancient spectrum database.According to the requirement analysis to complete the design of platform architecture and functional module,uses the Laravel framework to develop the entire project,MySQL to achieve database management and VueJS to implement page development.The design and implementation of the platform is designed to provide the ancient music management service for Shanghai Conservatory of Music and has a reference value for the research and application of similar systems.
Software Engineering;Ancient Spectrum Database;Laravel Framework;MySQL;VueJS
1007-1423(2017)01-0064-06
10.3969/j.issn.1007-1423.2017.01.016
孫寧(1981-),女,山東青州人,助教,在讀博士,研究方向?yàn)橹袊糯魳肥?、東方音樂
趙維平(1957-),男,四川人,研究生,教授,研究方向?yàn)橹袊糯魳肥?、東方音樂
王宇飛(1992-),男,江蘇無錫人,研究生,研究方向?yàn)橐苿?dòng)開發(fā)、大數(shù)據(jù)、推薦系統(tǒng)
陸奇峰(1988-),男,上海人,本科,工程師,研究方向?yàn)閃eb開發(fā)、軟件工程、大數(shù)據(jù)
王凌(1973-),男,浙江諸暨人,碩士,工程師,研究方向?yàn)閿?shù)據(jù)庫、需求分析、軟件工程
2016-11-15
2017-01-01
上海音樂學(xué)院2016中國音樂史高峰團(tuán)隊(duì)項(xiàng)目