• 沒有找到結果。

第五章、 軟體知識庫系統之設計

5.3 系統資料儲存設計

5.3.1 資料庫設計

由5.2 節的各模組功能設計,儲存在資料庫中的資料仍以類別、議題、解法、

技術等分類,此外還包括技術論文、技術知識、書本知識的資料,由於關鍵字間 以及知識間有關聯性,因此必須設計對應的資料表儲存其關聯性,整體知識庫表 格設計如圖 5 - 3 所示,依各資料表分述如下:

圖 5 - 3 資料表架構圖

z tblCategory:知識類別資料表

ƒ CategoryID:自動遞增的數字代碼,Primary Key

ƒ ParentCategory:父類別代碼,0 表示最上層目錄。此欄建立索引。

ƒ CategoryName:知識類別名稱

ƒ Intro:知識類別簡介,為一指到長文字的指標。

z tblRelCategory:相關類別資料表

ƒ CategoryID:知識類別代碼,此欄建立索引。

ƒ RelatedCategory:相關知識類別代碼。

相關性是雙向的,故此資料表會撰寫觸發程序(trigger)來維護雙向關係,

當新增一筆資料時,此觸發程序會自動將CategoryID 與 RelCategoryID 對調 再寫入一筆,刪除時同樣也會一起刪除。

z tblEqualCategory:相等類別資料表

ƒ CategoryID:知識類別代碼,此欄建立索引。

ƒ EqualCategory:相等知識類別代碼。

相等類別也是雙向關係,故如tblRelCategory 資料表一樣由觸發程序維護其 雙向性。

z tblIssue:議題資料表

ƒ IssueID:自動遞增的數字代碼,Primary Key。

ƒ ParentCategory:父類別代碼,此欄建立索引。

ƒ IssueName:議題名稱。

z tblApproach:解法資料表

ƒ ApproachID:自動遞增的數字代碼,Primary Key。

ƒ ParentIssue:此解法實作的議題代碼。

ƒ ApprchName:解法名稱。

ƒ Intro:解法簡介,為一指到長文字的指標。

z tblApprInher:解法繼承關係表

ƒ ApproachID:解法代碼,此欄建立索引。

ƒ InherFrom:此解法所繼承的解法代碼,此欄建立索引。

解法之間的繼承關係由此資料表儲存,由於搜尋時可能會找繼承自哪些解 法,也可能找哪些解法繼承了目前的解法,故兩欄位都要建立索引。

z tblTechnique:技術資料表

ƒ TechniqueID:自動遞增的數字代碼,Primary Key。

ƒ TechName:技術名稱。

ƒ TechKlgID:自動遞增的數字代碼,Primary Key。

ƒ ApproachID:此知識採用的解法代碼,此欄建立索引。

ƒ UseCount:此知識被閱讀數,此欄建立索引。 術知識的全文檔案通常用PDF(Portable Document Format),故存放在特定 目錄下,資料庫則儲存檔案名稱以便存取。

z tblCitation:引用資料表

ƒ TechKlgID:技術知識代碼,此欄建立索引。

ƒ CitationID:引用知識代碼,此欄建立索引。

技術知識的引用關係可做為排序準則,並可找出引用與被引用的知識。由於 兩種情況都有可能,故兩欄皆建立索引以加速存取速度。

z tblCitationMiss:引用知識暫存資料表

ƒ CiteMissID:自動遞增的數字代碼,Primary Key。

ƒ TechKlgID:技術知識代碼,此欄建立索引。

ƒ CitePaper:引用知識名稱,此欄建立索引。

ƒ CiteAuthor:引用知識作者,此欄建立索引。

ƒ CiteSource:引用知識來源名稱,此欄建立索引。

由於引用知識可能不存在於知識庫,此情況便先將引用知識資料存放於此資 料表,每次新增知識時便來此比對,若比對符合便將此資料改至tblCitation,

由於要比對知識名稱、作者與來源,故這些欄位都要建立索引。

z tblKlgRefine:改善關係資料表

ƒ TechKlgID:技術知識代碼,此欄建立索引。

ƒ RefineFrom:改善來源知識代碼,此欄建立索引。

改善關係是技術知識排序的最重要法則,採用相同解法及運用同樣技術的論

文,可利用其發表日期先後決定改善關係。由於搜尋時可能會找改善的論文 或改善來源,故兩欄皆建立索引。

z tblPaperTech:運用技術資料表

ƒ TechKlgID:技術知識代碼,此欄建立索引。

ƒ TechniqueID:技術代碼,此欄建立索引。

此資料表紀錄技術知識所運用的技術,由於搜尋時也可能找特定技術運用在 哪些論文乃至議題、知識類別上,故兩欄皆建立索引。

z tblBook:書本知識資料表

ƒ BookID:自動遞增的數字代碼,Primary Key。

ƒ CategoryID:書本討論知識類別代碼,此欄建立索引。

ƒ Title:書本名稱。

ƒ Author:書本作者。

ƒ Publisher:出版社名稱。

ƒ ISBN:國際標準圖書編號(International Standard Book Number)。

ƒ Version:版本號。

ƒ BkIssueID:自動遞增的數字代碼,Primary Key。

ƒ BookID:議題所屬書本代碼,此欄建立索引。

z tblBkIssueDep:書本子議題依存關係資料表

z tblLatestStatus:最新狀態資料表

ƒ ParentType:關鍵字類別,此欄建立索引。

ƒ ParentID:關鍵字代碼,此欄建立索引。

ƒ SeqNum:最新狀態序號,愈小表示愈新,此欄建立索引。

ƒ LatestType:知識類別。

ƒ LatestID:知識代碼。

ParentType 是一個英文代碼來表示關鍵字類別,可能是 C(類別)或 I(議 題),SeqNum 表示序號,每個類別至多存五筆最新知識,故 SeqNum 是 1~5;

LatestType 是英文代碼表示知識類別,可能是 T(技術知識)或 B(書本知 識)。

技術知識的引用數(CitedCount)是由 tblCitation 的觸發程序控制的,當一 筆資料寫入 tblCitation 時,會啟動觸發程序將此知識的 CitedCount 加 1,刪除時 也會啟動觸發程序將CitedCount 減 1,籍此維護知識的引用數。

當 tblApproach 的資料有插入或刪除時,會執行一預存程序 spApprCount,

這個程序會重算該父議題的解法數(ApprCount)。若 tblIssue 的資料有加入或刪 除時,會執行預存程序 spIssueCount 重算父類別的子議題數(IssueCount),並 會以遞迴的方式計算至根類別。

當 tblTechKlg 與 tblBook 的資料有插入或刪除時,會執行一預存程序

spIssueStatus,此程序會找出影響議題的最新五筆知識(依出版日期排序),並 將之插入 tblLatestStatus 中,並呼叫 spCateStatus 重新計算父類別的最新五筆知 識,以遞迴的方式計算至根類別。