劉芳芳
(桂林電子科技大學(xué)信息科技學(xué)院,廣西 桂林541004)
以往的圖書(shū)管理設(shè)計(jì)都以圖書(shū)為主,讀者為輔。而三維讀書(shū)法轉(zhuǎn)換以讀者為中心,以圖書(shū)為連接的讀書(shū)記錄為主的個(gè)性化讀書(shū)系統(tǒng)。三維讀書(shū)法如圖1所示。
圖1 XYZ三維閱讀網(wǎng)絡(luò)(局部)例子
對(duì)三維讀書(shū)法系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)中,分析其中讀者、書(shū)籍、主題、版本和作者的關(guān)系,設(shè)計(jì)以下六張核心數(shù)據(jù)表。用以實(shí)現(xiàn)三維(主題、作者、同本書(shū))方向的關(guān)聯(lián)和拓展如表1和表2所示。
表1 圖書(shū)表
表2 圖書(shū)子表
Book(圖書(shū)表)和Book_item(圖書(shū)子表)是一對(duì)多的關(guān)系。需要注意的是:圖書(shū)表的每一條記錄,對(duì)應(yīng)圖書(shū)子表至少有一條記錄。如果圖書(shū)有多個(gè)版本,比如翻譯,或是改版,那么在Book_item圖書(shū)子表則會(huì)有多條對(duì)應(yīng)的記錄。通過(guò)Book_item圖書(shū)子表,就可以關(guān)聯(lián)相對(duì)應(yīng)的圖書(shū)。
Book圖書(shū)表和Book_item圖書(shū)子表的Id_author字段分別存儲(chǔ)作者ID和譯者ID,考慮到一本書(shū)可以有多個(gè)作者或譯者,因此這里采用文本類(lèi)型。存儲(chǔ)時(shí)可以把ID列表序列化為文本格式存儲(chǔ)或是直接用分割符比如逗號(hào)隔開(kāi)。如:(2,5,4)
表3 作者表
表4 讀書(shū)記錄表
Read_record(讀書(shū)記錄表)存儲(chǔ)讀書(shū)記錄。增加了一個(gè)Is_public字段,可以用做是否公開(kāi)記錄功能。如果為真,則為對(duì)外公開(kāi);反之則為讀者自己可見(jiàn)。
表5 讀者表
表6 主題表
使用topic主題表,通過(guò)連接book圖書(shū)表和book_item圖書(shū)子表,可以查詢到某個(gè)主題的所有書(shū)籍。考慮到在實(shí)際應(yīng)用中,主題的查詢比較多而更新操作較少,可以把book_item圖書(shū)子表的書(shū)籍名稱(chēng)列表,序列化為文本格式存儲(chǔ),這樣在查詢某主題的所有圖書(shū)時(shí),只需查詢一個(gè)表即可,提高查詢效率。
前文的六張數(shù)據(jù)表為圖2矩形框的實(shí)體對(duì)象,因?qū)ο箝g是多對(duì)多的關(guān)系,因此菱形所表示的關(guān)系通常會(huì)設(shè)計(jì)為一張關(guān)系表格,更符合設(shè)計(jì)規(guī)范。但應(yīng)以實(shí)際系統(tǒng)應(yīng)用為主,在優(yōu)化系統(tǒng)的前提下,可對(duì)整個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)做反范式設(shè)計(jì)。
圖2 E-R圖
結(jié)語(yǔ):本文針對(duì)以讀者為中心的XYZ三維閱讀法,設(shè)計(jì)并探討XYZ三維閱讀系統(tǒng)的數(shù)據(jù)庫(kù)結(jié)構(gòu)和實(shí)現(xiàn)。并在數(shù)據(jù)庫(kù)E-R設(shè)計(jì)中,針對(duì)系統(tǒng)實(shí)際情況做了一些優(yōu)化,對(duì)某些數(shù)據(jù)表做反范式設(shè)計(jì),通過(guò)冗余結(jié)構(gòu)提高查詢效率。