劉宏新 張一鳴 解勇濤 趙一健 郭麗峰
(1.東北農(nóng)業(yè)大學(xué)工程學(xué)院, 哈爾濱 150030; 2.宿遷學(xué)院機(jī)電工程學(xué)院, 宿遷 223800)
聯(lián)合收獲機(jī)是農(nóng)業(yè)現(xiàn)代化發(fā)展過(guò)程中的一種典型機(jī)具[1],我國(guó)地域差異大、農(nóng)作物種類多樣令聯(lián)合收獲機(jī)具有定制化及多樣化的特征[2],這些特征使聯(lián)合收獲機(jī)在設(shè)計(jì)時(shí)需因地制宜,也使聯(lián)合收獲機(jī)在設(shè)計(jì)過(guò)程中的限制性因素增多,再加上聯(lián)合收獲機(jī)本身集成度高、結(jié)構(gòu)復(fù)雜的特點(diǎn),最終導(dǎo)致其設(shè)計(jì)過(guò)程繁瑣、設(shè)計(jì)周期長(zhǎng)[3]。建立與聯(lián)合收獲機(jī)相關(guān)的用于知識(shí)積累和管理平臺(tái)的知識(shí)庫(kù)系統(tǒng),可方便設(shè)計(jì)人員靈活使用設(shè)計(jì)知識(shí),增強(qiáng)知識(shí)繼承性和重用性,從而提高聯(lián)合收獲機(jī)產(chǎn)品的設(shè)計(jì)效率[4-5]。鑒于SQL Server數(shù)據(jù)庫(kù)在易用性、可擴(kuò)展性以及可靠性等方面處于世界領(lǐng)先地位,應(yīng)用廣泛[6],機(jī)械裝備知識(shí)庫(kù)系統(tǒng)大都使用SQL Server數(shù)據(jù)庫(kù)用于設(shè)計(jì)知識(shí)組織、存儲(chǔ)、查詢等[7-9]。
但目前,以知識(shí)繼承和設(shè)計(jì)資源重用為目的的專門知識(shí)庫(kù)系統(tǒng)的信息查詢,以及裝備企業(yè)現(xiàn)有PDM/PLM(Product data management / Product lifecycle management)系統(tǒng)中的相關(guān)知識(shí)檔案模塊內(nèi)容有效利用方面均存在一定的缺陷:一方面,專用知識(shí)庫(kù)中不同類型的設(shè)計(jì)知識(shí)被存儲(chǔ)于不同的數(shù)據(jù)表中,SQL Server數(shù)據(jù)庫(kù)中這種對(duì)應(yīng)不同類型的單一數(shù)據(jù)表結(jié)構(gòu)簡(jiǎn)單、內(nèi)容明了且針對(duì)性強(qiáng),用戶可方便地對(duì)該數(shù)據(jù)表進(jìn)行單獨(dú)編輯或查詢等操作,便于用戶團(tuán)隊(duì)的分工協(xié)作和所屬任務(wù)的數(shù)據(jù)管理。但是,當(dāng)數(shù)據(jù)庫(kù)中數(shù)據(jù)不斷累積,數(shù)據(jù)表的數(shù)量達(dá)到一定規(guī)模后,用戶在查詢數(shù)據(jù)時(shí)為獲得較全面的查詢結(jié)果,需要訪問(wèn)更多的數(shù)據(jù)表并逐一進(jìn)行查詢,數(shù)據(jù)的查詢就變得異常繁瑣,給使用造成不便,對(duì)于大規(guī)模知識(shí)庫(kù)而言,對(duì)數(shù)據(jù)表逐一定位及內(nèi)容查詢實(shí)際上不具有可操作性與實(shí)用性。針對(duì)這種情況,可將數(shù)據(jù)庫(kù)中全部單一數(shù)據(jù)表融合成一個(gè)數(shù)據(jù)表,用戶可以只針對(duì)該合成數(shù)據(jù)表進(jìn)行查詢,避免用戶逐一訪問(wèn)數(shù)據(jù)表。但聯(lián)合收獲機(jī)知識(shí)種類繁多、信息總量大,數(shù)據(jù)表的獨(dú)立性使數(shù)據(jù)需要經(jīng)過(guò)分析與繁復(fù)的變換之后才能建立聯(lián)系,在技術(shù)層面上該方式不具有可操作性、無(wú)法實(shí)現(xiàn);即便是技術(shù)上能夠?qū)崿F(xiàn),從結(jié)果上來(lái)看,合成數(shù)據(jù)表中的數(shù)據(jù)過(guò)于龐雜、結(jié)構(gòu)混亂、內(nèi)容表述不清。因此,需要在保留SQL Server數(shù)據(jù)庫(kù)中設(shè)計(jì)知識(shí)由大量獨(dú)立數(shù)據(jù)表的形式進(jìn)行存儲(chǔ)的基礎(chǔ)上對(duì)聯(lián)合收獲機(jī)知識(shí)庫(kù)數(shù)據(jù)多表聯(lián)合查詢進(jìn)行研究。另一方面,目前國(guó)內(nèi)外農(nóng)機(jī)裝備制造企業(yè)、汽車制造企業(yè)以及工程機(jī)械等行業(yè)的PDM/PLM系統(tǒng)主要以目錄樹結(jié)構(gòu)展現(xiàn)系統(tǒng)中的全部數(shù)據(jù)集,用戶可使用關(guān)鍵字搜索、名稱搜索等搜索方式快速定位目錄樹節(jié)點(diǎn)。對(duì)目錄樹節(jié)點(diǎn)進(jìn)行查看可瀏覽該節(jié)點(diǎn)下存儲(chǔ)的數(shù)據(jù)表內(nèi)容,在該數(shù)據(jù)表中可通過(guò)使用文本篩選等方式獲取具體的數(shù)據(jù)條目。企業(yè)PDM/PLM系統(tǒng)雖然數(shù)據(jù)龐大,但幾乎均為檔案性質(zhì)的管理,對(duì)于常規(guī)個(gè)體崗位,因其對(duì)應(yīng)極為有限的節(jié)點(diǎn)及所屬數(shù)據(jù),且數(shù)據(jù)多為簡(jiǎn)單的調(diào)用,所以并不影響正常使用。當(dāng)面臨以資源重用為目的的數(shù)字化與智能化設(shè)計(jì)使用需求時(shí),因涉及相關(guān)領(lǐng)域大范圍的數(shù)據(jù)資源作為基礎(chǔ),上述以有限節(jié)點(diǎn)權(quán)限方式進(jìn)行的常規(guī)數(shù)據(jù)庫(kù)結(jié)構(gòu)及管理則無(wú)法滿足該需求。
國(guó)內(nèi)外對(duì)聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)的報(bào)道較少,主要集中于系統(tǒng)的建立及數(shù)據(jù)的整體存儲(chǔ)方式上,對(duì)知識(shí)庫(kù)數(shù)據(jù)多表聯(lián)合查詢的研究未見報(bào)道,但國(guó)內(nèi)外學(xué)者在其他領(lǐng)域中對(duì)數(shù)據(jù)的處理方式以及數(shù)據(jù)表聯(lián)接方式進(jìn)行了相關(guān)研究。RAHMAN等[10]直接將數(shù)據(jù)存儲(chǔ)服務(wù)器與用戶訪問(wèn)層連接,使數(shù)據(jù)中心能夠在兩者之間更方便的互連。BAZAGA等[11]在數(shù)據(jù)庫(kù)中創(chuàng)建合成數(shù)據(jù)集,并將數(shù)據(jù)集用于多語(yǔ)言查詢系統(tǒng)算法中使系統(tǒng)支持多個(gè)數(shù)據(jù)表執(zhí)行一次查詢?nèi)蝿?wù)。KUMAR等[12]為加強(qiáng)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)與機(jī)器學(xué)習(xí)(Machine learning,ML)算法的集成,利用數(shù)據(jù)表之間的外鍵依存關(guān)系將數(shù)據(jù)表聯(lián)接。LI等[13]利用數(shù)據(jù)表之間的共有數(shù)據(jù)將數(shù)據(jù)表聯(lián)接,用戶可對(duì)數(shù)據(jù)表聯(lián)接后的數(shù)據(jù)集進(jìn)行查詢。上述3種對(duì)關(guān)系型數(shù)據(jù)表之間的聯(lián)接為聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)數(shù)據(jù)表之間的聯(lián)接提供參考方案。弋偉國(guó)等[14]將采集的果蔬質(zhì)量數(shù)據(jù)加密后進(jìn)行存儲(chǔ)。程偉等[15]標(biāo)識(shí)每條遙感數(shù)據(jù)的狀態(tài)信息后再將遙感數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)中心。上述兩種對(duì)數(shù)據(jù)進(jìn)行處理后再使用的方法為多表聯(lián)合查詢時(shí)數(shù)據(jù)表之間的使用開拓了思路。趙潤(rùn)發(fā)等[16]用Flink軟件作為不同類型數(shù)據(jù)的處理平臺(tái),并將Kafka軟件用作存儲(chǔ)數(shù)據(jù)的消息管道,該方式存儲(chǔ)的數(shù)據(jù)在進(jìn)行數(shù)據(jù)處理時(shí)反應(yīng)迅速,為研究多表聯(lián)合查詢結(jié)果數(shù)據(jù)的存儲(chǔ)方式提供借鑒。
綜上所述,本文在前期聯(lián)合收獲機(jī)常規(guī)知識(shí)組織與知識(shí)庫(kù)系統(tǒng)架構(gòu)的基礎(chǔ)上,深入開展知識(shí)庫(kù)數(shù)據(jù)多表聯(lián)合查詢研究,解決用戶無(wú)法一次性對(duì)多個(gè)數(shù)據(jù)表中數(shù)據(jù)進(jìn)行查詢的問(wèn)題,增加聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)的實(shí)用性,提高知識(shí)查詢的便捷性和高效性。
研究對(duì)象(聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng))為團(tuán)隊(duì)在項(xiàng)目中自主研發(fā)的支持聯(lián)合收獲機(jī)智能化設(shè)計(jì)的PDM系統(tǒng)的功能性子系統(tǒng),具有知識(shí)管理與編輯、瀏覽與查詢、知識(shí)匹配及關(guān)聯(lián)模型調(diào)用等功能。本文知識(shí)庫(kù)及類似屬性的資源型子系統(tǒng)在項(xiàng)目參與企業(yè)的實(shí)際產(chǎn)品研發(fā)過(guò)程中試用及驗(yàn)證,基本滿足使用要求,但引言所述問(wèn)題也顯現(xiàn)出來(lái)。目前,聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)數(shù)據(jù)表數(shù)量近150個(gè),包含數(shù)千條樣板數(shù)據(jù),數(shù)據(jù)量已滿足問(wèn)題的充分暴露及方法檢驗(yàn)所需的必要條目數(shù)。研究可聚焦于系統(tǒng)架構(gòu)調(diào)整和優(yōu)化,研究完成后系統(tǒng)可根據(jù)實(shí)際需要隨時(shí)進(jìn)行數(shù)據(jù)的常規(guī)擴(kuò)充或大規(guī)模錄入,系統(tǒng)功能不受數(shù)據(jù)量影響。
面對(duì)現(xiàn)有系統(tǒng)中大量獨(dú)立性的數(shù)據(jù)表,系統(tǒng)在進(jìn)行多表聯(lián)合查詢時(shí)需考慮哪些數(shù)據(jù)表之間可進(jìn)行聯(lián)合、數(shù)據(jù)表聯(lián)合方式,以及聯(lián)合后數(shù)據(jù)集的形式和數(shù)據(jù)查詢方式。將數(shù)據(jù)表進(jìn)行整理分類,利用數(shù)據(jù)表分類結(jié)果建立數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),確定可聯(lián)合的數(shù)據(jù)表,并將其劃分成組,每組為一個(gè)管理范圍。將管理范圍中所有數(shù)據(jù)表的全部數(shù)據(jù)聯(lián)合成數(shù)據(jù)集,令數(shù)據(jù)集可被統(tǒng)一調(diào)用即實(shí)現(xiàn)了多表聯(lián)合運(yùn)行。管理范圍中的數(shù)據(jù)表在聯(lián)合運(yùn)行時(shí)需將各數(shù)據(jù)表中數(shù)據(jù)轉(zhuǎn)換為相同的數(shù)據(jù)結(jié)構(gòu),并始終保證聯(lián)合后的數(shù)據(jù)集與原數(shù)據(jù)表之間的數(shù)據(jù)保持一致。系統(tǒng)對(duì)數(shù)據(jù)集的查詢就是系統(tǒng)對(duì)多個(gè)數(shù)據(jù)表中全部數(shù)據(jù)的查詢,即多表聯(lián)合查詢。
基于以上設(shè)計(jì)思路,本文提出了聯(lián)合收獲機(jī)知識(shí)庫(kù)數(shù)據(jù)多表聯(lián)合查詢的研究方案,總體技術(shù)方案如圖1所示,整個(gè)方案共包括4個(gè)階段:①數(shù)據(jù)表分類:對(duì)數(shù)據(jù)表進(jìn)行整理,分析數(shù)據(jù)表內(nèi)容的表現(xiàn)形式、知識(shí)類型和數(shù)據(jù)表之間的層次關(guān)系,總結(jié)規(guī)律,將數(shù)據(jù)表進(jìn)行整體分類。②數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)建立及管理范圍劃分:根據(jù)數(shù)據(jù)表分類結(jié)果為知識(shí)庫(kù)系統(tǒng)建立數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),令數(shù)據(jù)表能夠分門別類地存儲(chǔ)。將可融合的數(shù)據(jù)表劃分成組,每組數(shù)據(jù)表即是一個(gè)管理范圍,管理范圍中的全部數(shù)據(jù)表在提取數(shù)據(jù)后應(yīng)可以融合成數(shù)據(jù)集。③多表聯(lián)合運(yùn)行:根據(jù)以上管理范圍劃分結(jié)果,對(duì)任一管理范圍的數(shù)據(jù)進(jìn)行提取,并將其處理成數(shù)據(jù)集,數(shù)據(jù)集中的數(shù)據(jù)應(yīng)與原數(shù)據(jù)表中的數(shù)據(jù)保持一致。形成的數(shù)據(jù)集需要為用戶提供可進(jìn)行數(shù)據(jù)調(diào)用、數(shù)據(jù)查詢的條件。④多表聯(lián)合查詢:對(duì)上述數(shù)據(jù)集進(jìn)行數(shù)據(jù)提取調(diào)用,用戶可在數(shù)據(jù)集中查詢自己的目標(biāo)信息。
圖1 總體技術(shù)方案
聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)將聯(lián)合收獲機(jī)零部件按照功能劃分為脫粒模塊、分離清選模塊、割臺(tái)模塊、輸送模塊、動(dòng)力模塊、驅(qū)動(dòng)模塊、輔助模塊和標(biāo)準(zhǔn)件模塊,聯(lián)合收獲機(jī)零部件的相關(guān)知識(shí)也根據(jù)該劃分方式進(jìn)行分類并將知識(shí)進(jìn)行組織整理形成各種數(shù)據(jù)表存儲(chǔ)到SQL Server數(shù)據(jù)庫(kù)中。其余用于描述與聯(lián)合收獲機(jī)相關(guān)的整機(jī)機(jī)型、標(biāo)準(zhǔn)、專利、典型地域、影響作業(yè)的土壤因素等信息按照其描述內(nèi)容各自形成數(shù)據(jù)表。數(shù)據(jù)表之間的層次關(guān)系如圖2所示。
圖2 聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)數(shù)據(jù)表層次關(guān)系
聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)在該層次關(guān)系下存儲(chǔ)的數(shù)據(jù)表具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易延展性,并且可在不同的用戶之間實(shí)現(xiàn)共享。
數(shù)據(jù)表的獨(dú)立性可以令聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)在不影響其他數(shù)據(jù)表的情況下訪問(wèn)某一數(shù)據(jù)表,并對(duì)該數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行增加、修改、刪除、查詢等管理。但數(shù)據(jù)表的獨(dú)立性也令系統(tǒng)在多表聯(lián)合運(yùn)行時(shí)受到限制:①聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)數(shù)據(jù)表之間的關(guān)聯(lián)性不強(qiáng),數(shù)據(jù)表之間的數(shù)據(jù)無(wú)法關(guān)聯(lián)形成完整、有聯(lián)系的數(shù)據(jù)集。②數(shù)據(jù)表之間的結(jié)構(gòu)各不相同,若將多個(gè)任意數(shù)據(jù)表聯(lián)合起來(lái)會(huì)出現(xiàn)數(shù)據(jù)表結(jié)構(gòu)無(wú)法融合或結(jié)構(gòu)規(guī)整但內(nèi)容不合理的問(wèn)題。
為減少數(shù)據(jù)表的獨(dú)立性對(duì)多表聯(lián)合運(yùn)行產(chǎn)生的限制,在SQL Server數(shù)據(jù)庫(kù)的全部數(shù)據(jù)表中將同類型數(shù)據(jù)表劃分到一起,形成若干個(gè)管理范圍,以加強(qiáng)同一管理范圍中數(shù)據(jù)表之間的關(guān)聯(lián)性。
將數(shù)據(jù)表整體劃分為聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)整機(jī)類數(shù)據(jù)表和聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)零部件類數(shù)據(jù)表。其中聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)整機(jī)類數(shù)據(jù)表包括“整機(jī)機(jī)型”、“標(biāo)準(zhǔn)”、“專利”、“典型地域”、“影響作業(yè)的土壤因素”中的全部數(shù)據(jù)表,聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)零部件類數(shù)據(jù)表包括“脫粒模塊”、“分離清選模塊”、“割臺(tái)模塊”、“輸送模塊”、“動(dòng)力模塊”、“驅(qū)動(dòng)模塊”、“輔助模塊”和“標(biāo)準(zhǔn)件模塊”中的全部數(shù)據(jù)表。
根據(jù)聯(lián)合收獲機(jī)知識(shí)類型劃分結(jié)果[17]將數(shù)據(jù)表分為實(shí)例類知識(shí)數(shù)據(jù)表、規(guī)則類知識(shí)數(shù)據(jù)表、資料類知識(shí)數(shù)據(jù)表、經(jīng)驗(yàn)類知識(shí)數(shù)據(jù)表和參數(shù)類知識(shí)數(shù)據(jù)表5類,同類型數(shù)據(jù)表中的數(shù)據(jù)具有相似的特點(diǎn)和表現(xiàn)形式。
實(shí)例類知識(shí)描述了聯(lián)合收獲機(jī)零部件的型號(hào)信息、設(shè)計(jì)產(chǎn)品屬性、設(shè)計(jì)模型案例等信息。其中,零部件型號(hào)信息數(shù)據(jù)表中的數(shù)據(jù)縱向排列,每一列描述了該零部件的各種型號(hào)名稱,列與列之間描述的是不同類型的型號(hào)名稱。數(shù)據(jù)表中的每一列為一條記錄,用來(lái)描述一個(gè)對(duì)象的信息,列與列之間保持獨(dú)立、互不干擾,數(shù)據(jù)表中的每一行為一個(gè)字段,用來(lái)描述對(duì)象的屬性。實(shí)例類知識(shí)的其他信息數(shù)據(jù)表以及其余類型知識(shí)的數(shù)據(jù)表中的數(shù)據(jù)為橫向排列,其特點(diǎn)是數(shù)據(jù)表中的每一行為一條記錄,每一列為一個(gè)字段。橫向排列的數(shù)據(jù)表和縱向排列的數(shù)據(jù)表表現(xiàn)形式如圖3所示。
圖3 數(shù)據(jù)表中數(shù)據(jù)的排列形式示例
根據(jù)數(shù)據(jù)表中數(shù)據(jù)的排列情況將數(shù)據(jù)表分為數(shù)據(jù)為橫向排列的數(shù)據(jù)表和數(shù)據(jù)為縱向排列的數(shù)據(jù)表(以下簡(jiǎn)稱為橫向數(shù)據(jù)表和縱向數(shù)據(jù)表)。數(shù)據(jù)排列情況相同的數(shù)據(jù)表具有相似的數(shù)據(jù)結(jié)構(gòu)分布。
根據(jù)數(shù)據(jù)表分類結(jié)果建立聯(lián)合收獲機(jī)知識(shí)庫(kù)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),如圖4所示。整個(gè)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)包含了聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)的全部數(shù)據(jù)表,數(shù)據(jù)表的多類型劃分使得該結(jié)構(gòu)具有可擴(kuò)展性,已有數(shù)據(jù)表可根據(jù)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)存入合適的位置,新增數(shù)據(jù)表可直接在該結(jié)構(gòu)上添加新的節(jié)點(diǎn)字段進(jìn)行存儲(chǔ)。數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)為數(shù)據(jù)的存儲(chǔ)提供方便, 并為多表聯(lián)合運(yùn)行奠定基礎(chǔ)。
圖4 數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
本文將可以同時(shí)進(jìn)行數(shù)據(jù)存儲(chǔ)和查詢的一組數(shù)據(jù)表設(shè)置為一個(gè)管理范圍,管理范圍選取由同一模塊層次下的部分?jǐn)?shù)據(jù)表組成。在同一模塊層次的基礎(chǔ)上,選取類型和數(shù)據(jù)排列情況相同的數(shù)據(jù)表進(jìn)行組織整合,共形成54個(gè)數(shù)據(jù)管理范圍,如圖4虛線框所示。同類型數(shù)據(jù)表之間進(jìn)行聯(lián)合時(shí)能夠避免出現(xiàn)數(shù)據(jù)無(wú)法融合、數(shù)據(jù)融合后的內(nèi)容不合理的情況。數(shù)據(jù)排列情況相同的數(shù)據(jù)表之間進(jìn)行聯(lián)合能夠保證數(shù)據(jù)集結(jié)構(gòu)規(guī)整。因此同一管理范圍中的數(shù)據(jù)表之間結(jié)構(gòu)相似,內(nèi)容相關(guān),在對(duì)其中的數(shù)據(jù)進(jìn)行統(tǒng)一管理時(shí)能夠得到結(jié)構(gòu)規(guī)整、內(nèi)容合理的管理結(jié)果。
多表聯(lián)合運(yùn)行是指將任一管理范圍中的全部數(shù)據(jù)表中的數(shù)據(jù)提取出來(lái)形成數(shù)據(jù)集,并對(duì)數(shù)據(jù)集進(jìn)行調(diào)用的過(guò)程。多表聯(lián)合運(yùn)行主要是使用SQL語(yǔ)言實(shí)現(xiàn)。SQL語(yǔ)言是SQL Server數(shù)據(jù)庫(kù)的操作語(yǔ)言,能夠獨(dú)立完成SQL Server數(shù)據(jù)庫(kù)生命周期中的全部活動(dòng),包括錄入數(shù)據(jù)、建立數(shù)據(jù)庫(kù)、查詢、更新、維護(hù)等操作[18-19]。
實(shí)現(xiàn)多表聯(lián)合運(yùn)行首先需要提取管理范圍中的全部數(shù)據(jù)表中的所有數(shù)據(jù)及結(jié)構(gòu)信息,再將這些數(shù)據(jù)及結(jié)構(gòu)信息融合存儲(chǔ)到一起,達(dá)到對(duì)其統(tǒng)一調(diào)用的目的。橫向數(shù)據(jù)表與縱向數(shù)據(jù)表的結(jié)構(gòu)形式大不相同,因此橫向數(shù)據(jù)表之間與縱向數(shù)據(jù)表之間的聯(lián)合方式也存在差異。
橫向數(shù)據(jù)表是典型的SQL Server數(shù)據(jù)庫(kù)二維表格形式,橫向數(shù)據(jù)表之間的聯(lián)合是將各橫向數(shù)據(jù)表中數(shù)據(jù)進(jìn)行疊加的結(jié)果,形成的管理范圍數(shù)據(jù)集只變動(dòng)數(shù)據(jù)行數(shù),不變動(dòng)數(shù)據(jù)列數(shù)。橫向數(shù)據(jù)表中的數(shù)據(jù)及結(jié)構(gòu)信息的提取可使用SQL語(yǔ)言中的SELECT語(yǔ)句完成,其主要語(yǔ)法為[20]
SELECT [ALL/DISTINCT] 〈列名〉
FROM 〈數(shù)據(jù)表名稱〉
其中ALL關(guān)鍵字表示顯示所有行數(shù)據(jù),DISTINCT關(guān)鍵字表示去除提取信息的重復(fù)行數(shù)據(jù),默認(rèn)關(guān)鍵字為ALL。
提取一個(gè)橫向數(shù)據(jù)表中信息需使用一次SELECT語(yǔ)句,提取n個(gè)橫向數(shù)據(jù)表中的數(shù)據(jù)及結(jié)構(gòu)信息則需要使用n次SELECT語(yǔ)句。UNION關(guān)鍵字能夠連接各個(gè)SELECT語(yǔ)句,將各橫向數(shù)據(jù)表中的數(shù)據(jù)疊加起來(lái)組成一個(gè)多表聯(lián)合的數(shù)據(jù)集,該數(shù)據(jù)集包括這一管理范圍內(nèi)所有橫向數(shù)據(jù)表中的行數(shù)據(jù)。UNION關(guān)鍵字的使用方式為
SELECT [ALL/DISTINCT] 〈列名1〉
FROM 〈數(shù)據(jù)表名稱1〉
UNION[ALL]
SELECT [ALL/DISTINCT] 〈列名2〉
FROM 〈數(shù)據(jù)表名稱2〉
?
UNION關(guān)鍵字下的ALL關(guān)鍵字為可選關(guān)鍵字,若使用則輸出全部行數(shù)據(jù),若不使用則輸出管理范圍數(shù)據(jù)時(shí)將刪除橫向數(shù)據(jù)表之間存在的重復(fù)行數(shù)據(jù),默認(rèn)情況下是刪除數(shù)據(jù)表之間的重復(fù)行。UNION關(guān)鍵字在使用時(shí),輸出的管理范圍數(shù)據(jù)集的結(jié)構(gòu)與第1個(gè)SELECT語(yǔ)句下的橫向數(shù)據(jù)表結(jié)構(gòu)相同,因此需要將各個(gè)橫向數(shù)據(jù)表的結(jié)構(gòu)聯(lián)合成一個(gè)能夠共用的結(jié)構(gòu),使管理范圍數(shù)據(jù)集輸出后結(jié)構(gòu)規(guī)整。
使用別名可以重新命名數(shù)據(jù)表列名,同一管理范圍內(nèi)的橫向數(shù)據(jù)表使用相同別名,則能夠?qū)崿F(xiàn)將各橫向數(shù)據(jù)表的列名統(tǒng)一,使各數(shù)據(jù)表?yè)碛邢嗤慕Y(jié)構(gòu),使用方法為
SELECT [ALL/DISTINCT] 〈列名1〉 ‘〈別名1〉’
FROM 〈數(shù)據(jù)表名稱1〉
UNION[ALL]
SELECT [ALL/DISTINCT] 〈列名2〉‘〈別名2〉’
FROM 〈數(shù)據(jù)表名稱2〉
?
橫向數(shù)據(jù)表之間的聯(lián)合利用SQL語(yǔ)言實(shí)現(xiàn),其形成的管理范圍數(shù)據(jù)集直接存儲(chǔ)在臨時(shí)表中。臨時(shí)表是臨時(shí)創(chuàng)建的、不能永久保存的表。臨時(shí)表僅對(duì)當(dāng)前的用戶連接可見,當(dāng)用戶從SQL Server 數(shù)據(jù)庫(kù)實(shí)例斷開連接時(shí),即在事務(wù)完畢或會(huì)話完畢后自動(dòng)刪除[21]。即用戶每次使用的數(shù)據(jù)集都是系統(tǒng)在用戶命令發(fā)出后立即調(diào)用相關(guān)數(shù)據(jù)形成的,系統(tǒng)無(wú)需對(duì)數(shù)據(jù)集進(jìn)行存儲(chǔ)操作,數(shù)據(jù)集生成后自行存儲(chǔ)于臨時(shí)表中。用戶對(duì)數(shù)據(jù)集使用完畢后,臨時(shí)表自行刪除。
縱向數(shù)據(jù)表不屬于SQL Server數(shù)據(jù)庫(kù)二維表格形式,其多表聯(lián)合是將各縱向數(shù)據(jù)表中的數(shù)據(jù)逐列疊加,形成的管理范圍數(shù)據(jù)集是列與列的集合,只疊加數(shù)據(jù)列數(shù),不變動(dòng)數(shù)據(jù)行數(shù),無(wú)法使用UNION關(guān)鍵字連接各個(gè)縱向數(shù)據(jù)表。
縱向數(shù)據(jù)表之間的聯(lián)合是利用新建一個(gè)數(shù)據(jù)表的方式將各縱向數(shù)據(jù)表的結(jié)構(gòu)融合成新建數(shù)據(jù)表的結(jié)構(gòu),將各縱向數(shù)據(jù)表的數(shù)據(jù)疊加構(gòu)成新建數(shù)據(jù)表的數(shù)據(jù),該新建數(shù)據(jù)表即為這些縱向數(shù)據(jù)表對(duì)應(yīng)管理范圍的存儲(chǔ)形式。新建數(shù)據(jù)表需先創(chuàng)建數(shù)據(jù)表結(jié)構(gòu),再向結(jié)構(gòu)中填充數(shù)據(jù)。本文利用CREATE TABLE語(yǔ)句創(chuàng)建數(shù)據(jù)表結(jié)構(gòu),其語(yǔ)法為[22]
USE 〈數(shù)據(jù)庫(kù)名〉
GO
CREATE TABLE 〈新建數(shù)據(jù)表名〉 (
〈列名1〉 〈數(shù)據(jù)類型1〉 [NULL/NOT NULL],
〈列名2〉 〈數(shù)據(jù)類型2〉 [NULL/NOT NULL],
…)
使用USE關(guān)鍵字選擇數(shù)據(jù)庫(kù),在該數(shù)據(jù)庫(kù)下利用CREATE TABLE語(yǔ)句創(chuàng)建數(shù)據(jù)表,明確新建數(shù)據(jù)表名并指出新建數(shù)據(jù)表中各列的列名、數(shù)據(jù)類型和該列是否允許為空。NULL和NOT NULL關(guān)鍵字,決定了該列能不能出現(xiàn)空值,默認(rèn)關(guān)鍵字為NULL。
數(shù)據(jù)表結(jié)構(gòu)創(chuàng)建好后,即可向新建數(shù)據(jù)表中填充數(shù)據(jù)。INSERT…SELECT語(yǔ)句可實(shí)現(xiàn)將各縱向數(shù)據(jù)表中的數(shù)據(jù)按列填充到新建數(shù)據(jù)表中,其語(yǔ)法為[23]
INSERT INTO〈新建數(shù)據(jù)表名(新建數(shù)據(jù)表列名)〉
SELECT〈縱向數(shù)據(jù)表列名〉
FROM〈縱向數(shù)據(jù)表名〉
各縱向數(shù)據(jù)表中的數(shù)據(jù)是按照SELECT關(guān)鍵字后的列排序依次提取得到一個(gè)結(jié)果集,并將該結(jié)果集中的數(shù)據(jù)按照INSERT INTO關(guān)鍵字后新建數(shù)據(jù)表的列排序依次插入到新建數(shù)據(jù)表中,因此INSERT INTO關(guān)鍵字后“新建數(shù)據(jù)表列名”的排列需要與SELECT關(guān)鍵字后“縱向數(shù)據(jù)表列名”的排列相對(duì)應(yīng)。
縱向數(shù)據(jù)表的多表聯(lián)合方式使其形成的管理范圍數(shù)據(jù)集中的數(shù)據(jù)無(wú)法自動(dòng)根據(jù)縱向數(shù)據(jù)表中數(shù)據(jù)的變化而變化,在多表聯(lián)合運(yùn)行時(shí)無(wú)法保證其輸出結(jié)果的正確性和實(shí)時(shí)性。因此當(dāng)用戶在聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)中對(duì)某縱向數(shù)據(jù)表進(jìn)行知識(shí)的添加、修改或刪除操作后,該縱向數(shù)據(jù)表對(duì)應(yīng)的管理范圍數(shù)據(jù)集需要立即進(jìn)行數(shù)據(jù)的動(dòng)態(tài)更新,保證管理范圍數(shù)據(jù)集與縱向數(shù)據(jù)表之間的數(shù)據(jù)同步。
在SQL Server數(shù)據(jù)庫(kù)中,對(duì)數(shù)據(jù)進(jìn)行更新可通過(guò)使用UPDATE語(yǔ)句來(lái)實(shí)現(xiàn),為將管理范圍數(shù)據(jù)集和縱向數(shù)據(jù)表之間的數(shù)據(jù)聯(lián)系起來(lái)并一一對(duì)應(yīng),在UPDATE語(yǔ)句中嵌入SELECT…FROM…WHERE結(jié)構(gòu)和SELECT…FROM結(jié)構(gòu),其整體語(yǔ)法為
UPDATE 〈管理范圍名〉
SET 〈管理范圍數(shù)據(jù)集列名〉=
(SELECT 〈縱向數(shù)據(jù)表列名〉
FROM 〈縱向數(shù)據(jù)表名〉
WHERE 〈管理范圍名〉.ID=〈縱向數(shù)據(jù)表名〉.ID )
WHERE 〈管理范圍名〉.ID
IN ( SELECT ID FROM 〈縱向數(shù)據(jù)表名〉 )
該語(yǔ)法先對(duì)SELECT…FROM…WHERE結(jié)構(gòu)進(jìn)行處理,獲取縱向數(shù)據(jù)表中的列數(shù)據(jù),其中WHERE關(guān)鍵字能夠令管理范圍數(shù)據(jù)集和縱向數(shù)據(jù)表通過(guò)ID號(hào)關(guān)聯(lián),再使用“=”將管理范圍數(shù)據(jù)集與縱向數(shù)據(jù)表的列一一對(duì)應(yīng)。緊接著對(duì)SELECT…FROM結(jié)構(gòu)進(jìn)行處理,獲得縱向數(shù)據(jù)表的各行ID號(hào),并利用IN關(guān)鍵字將管理范圍數(shù)據(jù)集和縱向數(shù)據(jù)表的ID號(hào)對(duì)應(yīng),使兩者之間的行一一對(duì)應(yīng)。整個(gè)UPDATE語(yǔ)句可實(shí)現(xiàn)根據(jù)縱向數(shù)據(jù)表數(shù)據(jù)對(duì)管理范圍數(shù)據(jù)集任意列所有行數(shù)據(jù)的更新,即不論某列中的行數(shù)據(jù)變化了多少個(gè),管理范圍數(shù)據(jù)集將更新該列的全部行數(shù)據(jù),以防止在數(shù)據(jù)同步過(guò)程中造成錯(cuò)更、漏更。
但UPDATE語(yǔ)句只能對(duì)管理范圍數(shù)據(jù)集的已有行數(shù)進(jìn)行更新,若用戶對(duì)縱向數(shù)據(jù)表進(jìn)行添加數(shù)據(jù)行操作導(dǎo)致縱向數(shù)據(jù)表行數(shù)已經(jīng)多于管理范圍數(shù)據(jù)集行數(shù),則UPDATE語(yǔ)句只更新管理范圍數(shù)據(jù)集行數(shù)以內(nèi)的數(shù)據(jù),超出管理范圍數(shù)據(jù)集行數(shù)的縱向數(shù)據(jù)表數(shù)據(jù)將不作為更新內(nèi)容。因此在令管理范圍數(shù)據(jù)集與縱向數(shù)據(jù)表數(shù)據(jù)同步時(shí),需先保證管理范圍數(shù)據(jù)集行數(shù)與縱向數(shù)據(jù)表行數(shù)一致。判斷管理范圍數(shù)據(jù)集行數(shù)與縱向數(shù)據(jù)表行數(shù)是否一致,可等同于判斷管理范圍數(shù)據(jù)集行數(shù)與各縱向數(shù)據(jù)表行數(shù)的最大值是否一致。
通過(guò)計(jì)算管理范圍數(shù)據(jù)集中的各縱向數(shù)據(jù)表行數(shù),取其最大值與管理范圍數(shù)據(jù)集行數(shù)作比較,若各縱向數(shù)據(jù)表行數(shù)的最大值已超過(guò)管理范圍數(shù)據(jù)集行數(shù),則將管理范圍數(shù)據(jù)集行數(shù)添加到與各縱向數(shù)據(jù)表行數(shù)的最大值一致后再對(duì)管理范圍數(shù)據(jù)集進(jìn)行更新,數(shù)據(jù)同步的流程如圖5所示。
圖5 數(shù)據(jù)同步流程圖
多表聯(lián)合運(yùn)行能夠調(diào)用多個(gè)數(shù)據(jù)表中的數(shù)據(jù),將這些數(shù)據(jù)進(jìn)行處理后可用于用戶的數(shù)據(jù)查詢上,使用戶在查詢時(shí)將查詢范圍從一個(gè)數(shù)據(jù)表擴(kuò)展到一個(gè)多表聯(lián)合運(yùn)行管理范圍數(shù)據(jù)集,實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)表數(shù)據(jù)的同時(shí)查詢。多表聯(lián)合查詢與聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)原有的知識(shí)查詢相比,這種查詢方式的查詢范圍中數(shù)據(jù)更多,獲得的查詢結(jié)果更全面。多表聯(lián)合查詢包括多表模糊查詢和多表精確查詢。
多表模糊查詢:用戶在人機(jī)交互界面上確定查詢范圍并通過(guò)輸入字符串表明查詢目標(biāo),系統(tǒng)在查詢范圍中查詢包含該字符串的數(shù)據(jù),并將數(shù)據(jù)所在數(shù)據(jù)行組成數(shù)據(jù)集作為查詢結(jié)果反饋給用戶。
多表精確查詢:在用戶非常明確自己的查詢目標(biāo)并對(duì)多表聯(lián)合運(yùn)行管理范圍數(shù)據(jù)集結(jié)構(gòu)有一定了解的情況下,用戶通過(guò)人機(jī)交互界面將查詢范圍縮小至多表聯(lián)合運(yùn)行管理范圍數(shù)據(jù)集中的某一列,以用戶自身需求為查詢條件,系統(tǒng)為用戶篩選與查詢條件完全匹配的數(shù)據(jù)。
多表聯(lián)合查詢的實(shí)現(xiàn)實(shí)質(zhì)上是用戶通過(guò)在人機(jī)交互界面上進(jìn)行點(diǎn)選或者輸入對(duì)聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)發(fā)出操作指令,系統(tǒng)將指令轉(zhuǎn)換為SQL語(yǔ)言,數(shù)據(jù)庫(kù)執(zhí)行SQL語(yǔ)言,將得到的查詢結(jié)果綁定到人機(jī)交互界面中的DataGridView控件上,DataGridView控件將查詢結(jié)果以表格形式顯示在人機(jī)交互界面上供用戶查看。本文主要使用SQL語(yǔ)言中的SELECT語(yǔ)句實(shí)現(xiàn)多表聯(lián)合查詢。SELECT語(yǔ)句不但可以在數(shù)據(jù)庫(kù)中模糊地查找?guī)в心稠?xiàng)特征的多條數(shù)據(jù),還可以精確地查找某條數(shù)據(jù)[24],SELECT語(yǔ)句的主要語(yǔ)法為
SELECT [ALL/DISTINCT] 〈列名〉
FROM 〈查詢范圍〉
WHERE 〈查詢條件〉
實(shí)現(xiàn)多表聯(lián)合查詢的技術(shù)路線如圖6所示。多表聯(lián)合查詢與知識(shí)庫(kù)系統(tǒng)相同,以Visual Studio平臺(tái)為開發(fā)工具,以.net為編程環(huán)境,實(shí)現(xiàn)多表聯(lián)合查詢的關(guān)鍵程序如圖7所示。
圖6 多表聯(lián)合查詢技術(shù)路線圖
圖7 多表聯(lián)合查詢程序框圖
4.2.1多表模糊查詢
多表模糊查詢的實(shí)現(xiàn)是通過(guò)在SELECT語(yǔ)句的WHERE子句中使用字符匹配符LIKE或NOT LIKE比較查詢目標(biāo)與查詢范圍中的數(shù)據(jù)是否部分匹配,將包含查詢目標(biāo)的數(shù)據(jù)所在行累積為數(shù)據(jù)集構(gòu)成查詢結(jié)果。具體語(yǔ)法格式為
WHERE 〈列名〉 [NOT] LIKE ‘〈比較字符串〉’
其中,比較字符串是由查詢目標(biāo)字符串連同通配符一起組合而成,表1列出了比較常用的通配符。
表1 常用的通配符及其含義
上文提到,橫向數(shù)據(jù)表形成的管理范圍數(shù)據(jù)集是存儲(chǔ)在臨時(shí)表中,即其在SQL Server數(shù)據(jù)庫(kù)中并無(wú)具體的數(shù)據(jù)表,因此在使用字符匹配符時(shí)可將其直接嵌入到構(gòu)成橫向數(shù)據(jù)表之間多表聯(lián)合的語(yǔ)法當(dāng)中,即
SELECT 〈列名〉 FROM 〈橫向數(shù)據(jù)表名1〉 WHERE 〈列名1〉 [NOT] LIKE ‘〈比較字符串1〉’
UNION
SELECT 〈列名〉 FROM 〈橫向數(shù)據(jù)表名2〉 WHERE 〈列名2〉 [NOT] LIKE ‘〈比較字符串2〉’
?
該語(yǔ)法既能夠展現(xiàn)面向橫向數(shù)據(jù)表的多表聯(lián)合運(yùn)行管理范圍數(shù)據(jù)集的數(shù)據(jù)構(gòu)成及結(jié)構(gòu)形式,又可實(shí)現(xiàn)針對(duì)橫向數(shù)據(jù)表的多表模糊查詢,減少了語(yǔ)句運(yùn)行過(guò)程中對(duì)各橫向數(shù)據(jù)表的訪問(wèn)次數(shù),縮短了命令執(zhí)行時(shí)間。
由于縱向數(shù)據(jù)表形成的管理范圍數(shù)據(jù)集是存儲(chǔ)在SQL Server數(shù)據(jù)庫(kù)中的實(shí)際存在的數(shù)據(jù)表,因此針對(duì)縱向數(shù)據(jù)表的多表模糊查詢可直接在管理范圍數(shù)據(jù)集中運(yùn)行搭配有字符匹配符的SELECT語(yǔ)句實(shí)現(xiàn),即
SELECT 〈查詢范圍數(shù)據(jù)集列名〉
FROM 〈查詢范圍名〉
WHERE〈查詢范圍數(shù)據(jù)集列名〉 [NOT] LIKE ‘〈比較字符串〉’
4.2.2多表精確查詢
多表精確查詢的實(shí)現(xiàn)是利用SELECT語(yǔ)句中WHERE子句的比較運(yùn)算符將查詢目標(biāo)與數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行比較,篩選出存在與查詢目標(biāo)完全一致的數(shù)據(jù)的過(guò)程。比較運(yùn)算符包括=、<、>、<=、>=、<>和!=,分別表示等于、小于、大于、小于等于、大于等于、不等于和不等于,其語(yǔ)法格式為
WHERE 〈比較表達(dá)式1〉 〈比較運(yùn)算符〉 〈比較表達(dá)式2〉
比較表達(dá)式是符號(hào)字符串、函數(shù)、計(jì)算或任何算術(shù)運(yùn)算符連接的這些元素的組合,在語(yǔ)法中比較運(yùn)算符兩邊的比較表達(dá)式的數(shù)據(jù)類型必須保持一致。
針對(duì)橫向數(shù)據(jù)表的多表精確查詢與多表模糊查詢相同,直接將比較運(yùn)算符嵌入到構(gòu)成橫向數(shù)據(jù)表多表聯(lián)合的語(yǔ)法當(dāng)中,其語(yǔ)法為
SELECT 〈列名〉 FROM 〈橫向數(shù)據(jù)表名稱1〉 WHERE 〈比較表達(dá)式1〉 〈比較運(yùn)算符〉 〈比較表達(dá)式2〉
UNION
SELECT 〈列名〉 FROM 〈橫向數(shù)據(jù)表名稱2〉 WHERE 〈比較表達(dá)式3〉 〈比較運(yùn)算符〉 〈比較表達(dá)式4〉
?
針對(duì)縱向數(shù)據(jù)表的多表精確查詢是在管理范圍數(shù)據(jù)集中直接運(yùn)行搭配有比較運(yùn)算符的SELECT語(yǔ)句實(shí)現(xiàn),其語(yǔ)法為
SELECT 〈查詢范圍數(shù)據(jù)集列名〉
FROM 〈查詢范圍名〉
WHERE 〈比較表達(dá)式1〉 〈比較運(yùn)算符〉 〈比較表達(dá)式2〉
登錄聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)后在系統(tǒng)主界面訪問(wèn)“知識(shí)瀏覽與查詢”,并依次選擇“知識(shí)查詢”/“多表聯(lián)合查詢”,如圖8所示,即可進(jìn)入“多表聯(lián)合查詢”界面,該界面根據(jù)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)以及管理范圍劃分結(jié)果進(jìn)行設(shè)計(jì)?!岸啾砺?lián)合查詢界面”包括多表近似范圍查詢界面和多表精準(zhǔn)定位查詢界面。其中,多表近似范圍查詢界面應(yīng)用的是多表模糊查詢方法,界面中供用戶選擇查詢范圍的目錄樹的設(shè)置是在數(shù)據(jù)管理范圍分布結(jié)構(gòu)的基礎(chǔ)上,將樹中的節(jié)點(diǎn)名稱由完全依照數(shù)據(jù)管理范圍名稱這種理論性較強(qiáng)的表達(dá)方式轉(zhuǎn)變?yōu)楦庇^、用戶更易判斷選擇的表達(dá)方式。例如數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)中的分離清選模塊下的“規(guī)則類知識(shí)數(shù)據(jù)表”管理范圍在系統(tǒng)多表近似范圍查詢界面目錄樹中對(duì)應(yīng)的是“分離清選相關(guān)公式”節(jié)點(diǎn)。同時(shí),多表精準(zhǔn)定位查詢界面應(yīng)用的是多表精確查詢方法,界面在數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的基礎(chǔ)上,設(shè)置“知識(shí)模塊”和“查詢范圍”選擇框指示用戶先指定查詢數(shù)據(jù)所在的聯(lián)合收獲機(jī)所在模塊,再選擇該模塊下的管理范圍作為查詢范圍,設(shè)置“列名”、“條件符號(hào)”和“數(shù)值/字符串”選擇框以供用戶根據(jù)所選查詢范圍確定查詢條件。
圖8 多表聯(lián)合查詢界面在系統(tǒng)中所處位置
聯(lián)合收獲機(jī)知識(shí)庫(kù)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)是集中式存儲(chǔ)結(jié)構(gòu),即用戶機(jī)通過(guò)給定局域網(wǎng)覆蓋范圍內(nèi)的路由器連接服務(wù)器,服務(wù)器統(tǒng)一管理、共享全部資源并處理來(lái)自客戶機(jī)的請(qǐng)求。
用戶機(jī)無(wú)需建立知識(shí)庫(kù)系統(tǒng)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),可通過(guò)連接系統(tǒng)中心服務(wù)器局域網(wǎng)獲取服務(wù)器中的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。用戶在使用知識(shí)庫(kù)系統(tǒng)時(shí)調(diào)用的數(shù)據(jù)是由系統(tǒng)中心的服務(wù)器分享而來(lái),系統(tǒng)發(fā)布的查詢命令在服務(wù)器中處理后將處理結(jié)果反映在客戶機(jī)上。
聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)為適應(yīng)實(shí)際應(yīng)用需求與應(yīng)用環(huán)境,具備3種運(yùn)行方式:①對(duì)于知識(shí)庫(kù)系統(tǒng)本身,作為一個(gè)完整系統(tǒng)可單獨(dú)運(yùn)行,用戶在局域網(wǎng)下連接服務(wù)器的網(wǎng)絡(luò)驅(qū)動(dòng)器后,即可對(duì)該系統(tǒng)進(jìn)行訪問(wèn)和應(yīng)用。②對(duì)于團(tuán)隊(duì)自主研發(fā)的支持聯(lián)合收獲機(jī)智能化設(shè)計(jì)的PDM系統(tǒng),由知識(shí)庫(kù)系統(tǒng)、模型庫(kù)系統(tǒng)、工程分析系統(tǒng)等子系統(tǒng)構(gòu)成,各子系統(tǒng)獨(dú)立完整、信息與數(shù)據(jù)共享,從該P(yáng)DM系統(tǒng)中的特定接口可對(duì)聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)進(jìn)行訪問(wèn),用戶的請(qǐng)求及服務(wù)器的處理結(jié)果通過(guò)接口進(jìn)行傳遞。③對(duì)于與企業(yè)現(xiàn)有PDM系統(tǒng)融合,實(shí)現(xiàn)資源補(bǔ)充與數(shù)據(jù)共享的需求情況,綜合考慮數(shù)據(jù)多表聯(lián)合查詢方法的通用性以及企業(yè)PDM系統(tǒng)的知識(shí)產(chǎn)權(quán)保護(hù)和有限接口的實(shí)際情況,本團(tuán)隊(duì)所研究的資源型系統(tǒng)均采用模塊化架構(gòu)。因此,采用系統(tǒng)封裝和調(diào)用的方法將數(shù)據(jù)多表聯(lián)合查詢方法應(yīng)用于企業(yè)PDM系統(tǒng)中,實(shí)施方案如下:將知識(shí)庫(kù)系統(tǒng)通過(guò)動(dòng)態(tài)鏈接庫(kù)技術(shù)封裝,使用Microsoft Visual Studio Installer Project插件將知識(shí)庫(kù)系統(tǒng)進(jìn)行打包,通過(guò)程序調(diào)用直接啟動(dòng)知識(shí)庫(kù)系統(tǒng)實(shí)現(xiàn)與企業(yè)PDM系統(tǒng)的聯(lián)合運(yùn)行。該方案既使知識(shí)庫(kù)系統(tǒng)與企業(yè)PDM系統(tǒng)相對(duì)獨(dú)立又將兩者有機(jī)聯(lián)合,充分利用了企業(yè)原有資源又賦予其新的功能,以滿足產(chǎn)品研發(fā)工作對(duì)資源重用越來(lái)越高的要求。
在“多表聯(lián)合查詢界面”中,當(dāng)用戶選擇查詢范圍后,系統(tǒng)將自動(dòng)判斷該查詢范圍數(shù)據(jù)集是由橫向數(shù)據(jù)表形成還是由縱向數(shù)據(jù)表形成。
若系統(tǒng)判斷出用戶所選擇的查詢范圍數(shù)據(jù)集是由橫向數(shù)據(jù)表形成,系統(tǒng)會(huì)自行生成SQL語(yǔ)句來(lái)調(diào)用該管理范圍中的全部數(shù)據(jù)表中數(shù)據(jù)并將其聯(lián)合成一組數(shù)據(jù)集,隨后,把數(shù)據(jù)集存放在臨時(shí)表中并將其顯示在界面上。當(dāng)用戶選擇其他管理范圍或者切換界面后,系統(tǒng)自動(dòng)斷開與管理范圍的連接,并刪除臨時(shí)表。
若系統(tǒng)判斷出用戶所選擇的查詢范圍數(shù)據(jù)集是由縱向數(shù)據(jù)表形成,系統(tǒng)會(huì)連接該管理范圍存儲(chǔ)在數(shù)據(jù)庫(kù)中的新建數(shù)據(jù)表,并調(diào)用該數(shù)據(jù)表中數(shù)據(jù)將其顯示在人機(jī)交互界面上。當(dāng)用戶選擇其他管理范圍或者切換界面后,系統(tǒng)自動(dòng)斷開與管理范圍的連接,但不會(huì)刪除新建數(shù)據(jù)表,該數(shù)據(jù)表依舊存儲(chǔ)于數(shù)據(jù)庫(kù)中。
對(duì)多表聯(lián)合查詢功能效果進(jìn)行測(cè)試,測(cè)試根據(jù)系統(tǒng)的運(yùn)行環(huán)境于Windows 10操作系統(tǒng)上進(jìn)行,測(cè)試的計(jì)算機(jī)配置如表2所示。
表2 計(jì)算機(jī)配置
5.4.1近似范圍查詢效果比較
用戶進(jìn)入“多表聯(lián)合查詢界面”后選擇“近似范圍查詢”選項(xiàng),獲取多表近似范圍查詢界面。在該界面中用戶首先需要在目錄樹上選擇查詢范圍,系統(tǒng)會(huì)調(diào)用該查詢范圍中的全部數(shù)據(jù)。緊接著,用戶在查詢文本框中輸入查詢目標(biāo),系統(tǒng)會(huì)自動(dòng)生成查詢語(yǔ)句并將查詢結(jié)果顯示到界面上。
為檢驗(yàn)多表近似范圍查詢的便捷高效性,以聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)中的分離清選模塊下的規(guī)則類知識(shí)數(shù)據(jù)表作為查詢范圍為例,即在描述分離清選裝置公式的全部數(shù)據(jù)表中開展查詢,將“高度”作為查詢目標(biāo),查詢與高度相關(guān)的公式。測(cè)試用戶選擇了解系統(tǒng)操作流程并可對(duì)系統(tǒng)進(jìn)行操作的普通設(shè)計(jì)人員,該用戶將先后使用聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)原有的單表近似范圍查詢功能和現(xiàn)開發(fā)的多表近似范圍查詢功能分別進(jìn)行查詢測(cè)試。單表近似范圍查詢時(shí),系統(tǒng)進(jìn)入單表近似范圍查詢界面后用戶需分別選擇目錄樹中的分離裝置公式、風(fēng)扇式清選裝置公式和風(fēng)扇篩子式清選公式3個(gè)節(jié)點(diǎn),系統(tǒng)在調(diào)用其對(duì)應(yīng)的數(shù)據(jù)表后用戶在界面的文本框中輸入查詢目標(biāo)字符串“高度”,系統(tǒng)最終將得到3個(gè)分散的查詢結(jié)果,其中系統(tǒng)在節(jié)點(diǎn)“風(fēng)扇式清選裝置公式”下的查詢結(jié)果如圖9所示。從用戶進(jìn)入單表近似范圍查詢界面進(jìn)行查詢操作開始到查詢結(jié)果全部逐一顯示在交互界面上為止,該用戶完成整個(gè)過(guò)程所需時(shí)間為31 s。在執(zhí)行多表近似范圍查詢功能時(shí),用戶只需選擇多表近似范圍查詢界面目錄樹中的“分離清選相關(guān)公式”節(jié)點(diǎn),并在查詢文本框中輸入“高度”即可得到查詢結(jié)果,系統(tǒng)多表近似范圍查詢結(jié)果如圖10所示。從用戶進(jìn)入多表近似范圍查詢界面進(jìn)行查詢操作開始到查詢結(jié)果顯示在交互界面上為止,完成整個(gè)過(guò)程所需時(shí)間為11 s。
圖9 單表近似范圍查詢?cè)诠?jié)點(diǎn)“風(fēng)扇式清選裝置公式”下的查詢結(jié)果
圖10 多表近似范圍查詢功能的查詢結(jié)果
本例中對(duì)比單表近似范圍查詢功能需在目錄樹上選擇3個(gè)節(jié)點(diǎn)并分別輸入3次查詢目標(biāo)字符串,多表近似范圍查詢功能只需在目錄樹上選擇1個(gè)節(jié)點(diǎn)并輸入1次查詢目標(biāo)字符串,既簡(jiǎn)便了查詢操作過(guò)程,又將查詢時(shí)間縮短了將近2/3,且一次性得到了含有“高度”字符串的全部數(shù)據(jù)。
對(duì)聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)數(shù)據(jù)管理范圍進(jìn)行抽樣,將抽樣所得管理范圍對(duì)應(yīng)的類型數(shù)據(jù)表作為查詢范圍,將單表近似范圍查詢與多表近似范圍查詢的操作時(shí)間進(jìn)行對(duì)比,抽樣測(cè)試結(jié)果如表3所示。
表3 近似范圍查詢抽樣測(cè)試結(jié)果
測(cè)試結(jié)果顯示多表近似范圍查詢比單表近似范圍查詢的用戶操作時(shí)間減少50%及以上,最高節(jié)約時(shí)間90.4%。
5.4.2精準(zhǔn)定位查詢效果比較
用戶在進(jìn)入“多表聯(lián)合查詢界面”后選擇“精準(zhǔn)定位查詢”選項(xiàng),獲取多表精準(zhǔn)定位查詢界面。用戶在界面上依次確定知識(shí)模塊、查詢范圍后系統(tǒng)自動(dòng)將此查詢范圍中的全部數(shù)據(jù)以數(shù)據(jù)表的形式呈現(xiàn)在界面上,并將該查詢范圍的所有列名放置到列名選擇文本框中供用戶選擇要進(jìn)行查詢的具體列,用戶再依次確定查詢條件符號(hào)>、<、=、>=、<=以及與查詢范圍內(nèi)數(shù)據(jù)進(jìn)行比較的數(shù)值或字符串后開始查詢,系統(tǒng)即可自動(dòng)生成查詢語(yǔ)句并將滿足查詢條件的數(shù)據(jù)行反饋在界面上。
為檢驗(yàn)多表精準(zhǔn)定位查詢的便捷高效性,以聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)中的分離清選模塊下的實(shí)例類知識(shí)數(shù)據(jù)表作為查詢范圍為例,即在描述聯(lián)合收獲機(jī)機(jī)型的分離清選裝置參數(shù)的全部數(shù)據(jù)表中開展查詢,查詢機(jī)型為“4LZ-2.5”的數(shù)據(jù)。測(cè)試用戶與上述進(jìn)行近似范圍查詢測(cè)試的用戶為同一人,該用戶先后使用聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)單表精準(zhǔn)定位查詢功能和多表精準(zhǔn)定位查詢功能開展查詢測(cè)試。單表精準(zhǔn)定位查詢時(shí),用戶在知識(shí)模塊“分離清選模塊”下,分別選擇數(shù)據(jù)表“風(fēng)扇篩子式清選裝置技術(shù)參數(shù)”、“風(fēng)扇式清選裝置技術(shù)參數(shù)”、“分離裝置技術(shù)參數(shù)”作為查詢范圍,查詢條件設(shè)置為查詢機(jī)型是“4LZ-2.5”的數(shù)據(jù),其中將“風(fēng)扇篩子式清選裝置技術(shù)參數(shù)”設(shè)置為查詢范圍時(shí)的查詢結(jié)果如圖11所示。從用戶進(jìn)入單表精準(zhǔn)定位查詢界面開始到完成所有查詢并得到查詢結(jié)果為止,該用戶完成整個(gè)查詢過(guò)程需執(zhí)行15個(gè)操作步驟,用時(shí)45 s。多表精準(zhǔn)定位查詢時(shí),在界面上的選擇文本框中分別選擇“零部件分離清選模塊”/“分離清選裝置技術(shù)參數(shù)”/“機(jī)型”,此時(shí)條件符號(hào)這一欄的選擇文本框默認(rèn)為“=”且用戶不可修改,接著在數(shù)值/字符串文本框中輸入“4LZ-2.5”進(jìn)行查詢,即可得到系統(tǒng)查詢結(jié)果,如圖12所示,從用戶進(jìn)入多表精準(zhǔn)定位查詢界面進(jìn)行查詢操作開始到查詢結(jié)果顯示在交互界面上為止,該用戶完成整個(gè)過(guò)程需執(zhí)行5個(gè)操作步驟,用時(shí)14 s。
圖11 將“風(fēng)扇篩子式清選裝置技術(shù)參數(shù)”作為查詢范圍時(shí)的單表精準(zhǔn)定位查詢結(jié)果
圖12 系統(tǒng)中多表精準(zhǔn)定位查詢功能的查詢結(jié)果
對(duì)比兩種查詢方式分析得出:多表精準(zhǔn)定位查詢的查詢結(jié)果可將單表精準(zhǔn)定位查詢的結(jié)果全部涵蓋,兩者查詢結(jié)果內(nèi)容基本相同,僅在數(shù)據(jù)結(jié)構(gòu)中的列名上有所不同,但并不影響查詢結(jié)果的正確性。多表精準(zhǔn)定位查詢操作簡(jiǎn)便,輸出的數(shù)據(jù)表結(jié)構(gòu)直觀明了、內(nèi)容正確無(wú)誤,在本例中相較于單表精準(zhǔn)定位查詢操作步驟節(jié)省時(shí)間80.5%。
參照近似范圍查詢抽樣測(cè)試過(guò)程,將單表精準(zhǔn)定位查詢與多表精準(zhǔn)定位查詢的操作時(shí)間進(jìn)行對(duì)比,抽樣測(cè)試結(jié)果如表4所示。
表4 精準(zhǔn)定位查詢抽樣測(cè)試結(jié)果
測(cè)試結(jié)果顯示,多表精準(zhǔn)定位查詢比單表精準(zhǔn)定位范圍查詢的用戶操作時(shí)間減少48.1%及以上,最高節(jié)約時(shí)間89.6%。
(1)以數(shù)據(jù)表類型劃分結(jié)果為基礎(chǔ)構(gòu)建的聯(lián)合收獲機(jī)知識(shí)庫(kù)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)具有可擴(kuò)展和數(shù)據(jù)管理集中的特點(diǎn)。其在保留單一數(shù)據(jù)表數(shù)據(jù)存儲(chǔ)形式的同時(shí)形成多表聯(lián)合數(shù)據(jù)存儲(chǔ)形式,是研究多表聯(lián)合查詢方法的基礎(chǔ)。
(2)多表聯(lián)合運(yùn)行將同一管理范圍中所有數(shù)據(jù)表的全部數(shù)據(jù)聯(lián)合成一個(gè)數(shù)據(jù)集,系統(tǒng)可對(duì)數(shù)據(jù)集進(jìn)行調(diào)用。將管理范圍作為多表聯(lián)合查詢功能的查詢范圍,使聯(lián)合收獲機(jī)知識(shí)庫(kù)系統(tǒng)具有了實(shí)用性與便捷性。
(3)多表近似范圍查詢比系統(tǒng)原有的單表近似范圍查詢節(jié)約用戶操作時(shí)間50%及以上,最高達(dá)到90.4%;多表精準(zhǔn)定位查詢比系統(tǒng)原有的單表精準(zhǔn)定位查詢節(jié)約用戶操作時(shí)間48.1%及以上,最高達(dá)到89.6%。多表聯(lián)合查詢可滿足用戶快速獲取所需查詢數(shù)據(jù)的需求,提高了數(shù)據(jù)的查詢效率。