• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    在線課程資源平臺數(shù)據(jù)庫設計及實現(xiàn)

    2022-01-17 06:20:40羅尹奇湯偉許毅
    電子元器件與信息技術(shù) 2021年9期
    關(guān)鍵詞:主鍵實體數(shù)據(jù)庫

    羅尹奇,湯偉,許毅

    (電子科技大學 圖書館,四川 成都 611730)

    0 引言

    在“新冠疫情”常態(tài)化的背景下,線上教育逐漸成為重要的教學手段并得到廣泛應用[1-2]。高校同樣也存在建設在線課程資源平臺的內(nèi)在需求。

    一方面,高校圖書館數(shù)字資源一般由各數(shù)字資源廠商提供,存在扁平化、分散化的特點,數(shù)字資源與課程設置無關(guān)聯(lián),用戶需通過特定的檢索系統(tǒng)查詢,才能得到該課程的教材教參信息。因此在線課程資源平臺需實現(xiàn)基于課程信息的資源導航功能,以滿足用戶端的易用性需求。

    另一方面,雖然通過EXCEL列表可有效的表示課程與其教材教參之間的關(guān)系[3],但在平臺的運維上,不同的學期具有不同的課程,同一門課程可能擁有不同的教材教參,而同一本教材教參又有可能分屬于不同的課程。因此在線課程資源平臺需能靈活的對課程與數(shù)字資源分別維護,同時也能對兩者之間的關(guān)聯(lián)關(guān)系進行調(diào)整,以滿足管理員端的可維護性需求。

    本文以電子科技大學在線課程資源平臺二期系統(tǒng)為例,分析了其底層數(shù)據(jù)庫設計方案,論證了該方案能夠同時滿足用戶的使用需求與管理員的維護需求,并最后給出了基于Hibernate框架的對象關(guān)系映射的關(guān)鍵代碼實現(xiàn)。

    1 實體-關(guān)系模型建模

    實體-關(guān)系模型(Entity-Relationship Model)是一種面向用戶的數(shù)據(jù)建模方法,是概念數(shù)據(jù)模型的高層描述所使用的抽象表示或模式圖,其本身與具體的數(shù)據(jù)庫管理軟件無關(guān),在數(shù)據(jù)庫設計中被廣泛用作數(shù)據(jù)建模的工具[4-5]。

    實體-關(guān)系模型基于應用場景,主要由實體、屬性和關(guān)系組成。其中實體是系統(tǒng)中客觀存在的事物,具有相同性質(zhì)(或?qū)傩裕┑膶嶓w集合構(gòu)成了實體集。屬性是實體集中每個成員所擁有的描述性性質(zhì)。關(guān)系則是用于描述多個實體之間的關(guān)聯(lián)方式。實體-關(guān)系模型建模的目的在于從抽象概念層面上,構(gòu)建在線課程資源平臺的數(shù)據(jù)模型,其建模的基本步驟如下:

    (1)識別并提取有效的實體。實體必須是客觀存在并可以區(qū)分的,在在線課程資源平臺應用場景中,有效的實體包括了學院、課程、數(shù)字資源。由于平臺是開放式的,對于用戶的類型并不做嚴格的區(qū)分,因此諸如授課教師、學生等實體在該場景中屬于無效實體。

    (2)提取實體的關(guān)鍵屬性。實體本身的屬性可能是非常多的,需提取符合應用場景要求的關(guān)鍵屬性,而忽略非必要的次要屬性。例如課程名稱是課程實體的關(guān)鍵屬性,而選課人數(shù)則屬于次要屬性。

    (3)分析實體與實體之間的關(guān)系。實體之間的關(guān)系分3種類型:一對一的關(guān)系、一對多的關(guān)系、多對多的關(guān)系。學院與課程之間屬于一對多的關(guān)系,即一個學院會開設多門課程;課程與數(shù)字資源之間屬于多對多的關(guān)系,即一門課程會擁有多本教材教參,而同一本教材教參又有可能被多門課程使用。

    根據(jù)上述的建模步驟,得到實體-關(guān)系模型的圖形表示,其中實體用矩形表示,關(guān)系用菱形表示,屬性用橢圓表示,如圖1所示:

    2 數(shù)據(jù)庫實現(xiàn)

    2.1 數(shù)據(jù)庫模型

    根據(jù)圖1實體-關(guān)系模型,現(xiàn)將其轉(zhuǎn)化為對應的數(shù)據(jù)庫模型。在轉(zhuǎn)化過程中實體(實體集)多數(shù)情況下會采用數(shù)據(jù)庫表來表示;而屬性則一般會轉(zhuǎn)化為數(shù)據(jù)庫表中的字段,其類型由實際應用場景決定。特別需要注意的是,實體-關(guān)系模型中的關(guān)系在轉(zhuǎn)化時,依照關(guān)系類型的不同,決定了其在數(shù)據(jù)庫中的表現(xiàn)形式:

    (1)一對一的關(guān)系:當實體-關(guān)系模型中存在一對一關(guān)系時,其在數(shù)據(jù)庫中會表示為兩表之間的主鍵約束,即A表的主鍵是B表的主鍵,同時也是B表的外鍵,如圖2所示:

    圖2 一對一的關(guān)系

    (2)一對多的關(guān)系:當實體-關(guān)系模型中存在一對多的關(guān)系時,其在數(shù)據(jù)庫中會表示為兩表之間的外鍵約束,即A表的主鍵是B表的外鍵,如圖3所示:

    圖3 一對多的關(guān)系

    (3)多對多的關(guān)系:當實體-關(guān)系模型中存在多對多的關(guān)系時,此時在數(shù)據(jù)庫中關(guān)系會作為單獨的一張表建立,其作用在于通過復合主鍵的形式來描述多對多的關(guān)系。由于復合主鍵是通過多個主鍵的排列組合來保證唯一性,因此復合主鍵的排列組合過程實現(xiàn)了多對多關(guān)系,而唯一性則保證了這種關(guān)系是確定的,如圖4所示:

    圖4 多對多的關(guān)系

    (4)帶屬性的多對多的關(guān)系:作為特殊的多對多的關(guān)系,其關(guān)系中存在其他屬性,此時該表的結(jié)構(gòu)與一般的關(guān)系表結(jié)構(gòu)所有差異,該表主鍵只是自增鍵或隨機字符串,而關(guān)聯(lián)實體的主鍵會作為該表的外鍵,同時該表中還包含了其他屬性字段,如圖5所示:

    圖5 帶屬性的多對多的關(guān)系

    基于上述實體-關(guān)系模型到數(shù)據(jù)庫表的轉(zhuǎn)化規(guī)則,現(xiàn)將圖1轉(zhuǎn)化為數(shù)據(jù)庫表,得到的結(jié)果如圖6所示:

    圖6 數(shù)據(jù)庫模型

    2.2 數(shù)據(jù)詞典

    根據(jù)圖6的數(shù)據(jù)庫模型,現(xiàn)將各表數(shù)據(jù)詞典列出,如表1至表4所示:

    表1 學院t_institute表

    表2 課程t_course表

    表3 數(shù)字資源t_resource表

    需要注意的是,在表4中l(wèi)ink_type字段描述了課程-資源關(guān)系類型。一門課程中可能有多本教材以及參考資料,而數(shù)字資源本身是無法區(qū)分其是否為教材還是參考資料的,也就是同一個數(shù)字資源可能在這一門課程里是作為教材,而在另外的課程中則可能是參考資料,因此通過在課程-資源關(guān)系表中加入link_type字段來加以區(qū)分。

    2.3 合理性分析

    從用戶角度來看,數(shù)據(jù)庫設計方案滿足了用戶的一般使用行為。由于該平臺用戶多為在校師生,其關(guān)注的往往是本學院所開設的課程及相關(guān)數(shù)字資源,因此用戶可以根據(jù)學院表進行導航。課程表中的學院序號字段則提供了查詢條件,平臺顯示對應學院下所開設的所有課程,這樣有助于用戶找到本學期或以往的課程。利用課程編號以及課程-資源關(guān)系表,可以進一步查詢出該課程下所關(guān)聯(lián)的數(shù)字資源以及該資源是否為教材或參考資料。整個訪問過程將課程與對應的數(shù)字資源以樹狀結(jié)構(gòu)展示出來,滿足了用戶數(shù)據(jù)上鉆下探的需求。

    從管理員角度來看,數(shù)據(jù)庫設計方案滿足了簡化運維的需求。課程與數(shù)字資源是相對獨立的兩張表,在運維過程中可以分開管理,課程可以與學校教務系統(tǒng)保持一致,數(shù)字資源則可以與第三方廠商保持一致,兩者信息更新可以是異步的,相互之間不會發(fā)生干擾。管理員僅需維護課程-資源關(guān)系表,即在平臺上選擇相關(guān)資源并關(guān)聯(lián)(或解除關(guān)聯(lián))到對應的課程上。整個運維過程簡化為對課程-資源關(guān)聯(lián)關(guān)系的運維,而課程與數(shù)字資源本身的信息則可以與其他系統(tǒng)自動化同步。

    3 對象關(guān)系映射

    對象關(guān)系映射(Object Relational Mapping,ORM)是一種程序設計技術(shù),用于將面向?qū)ο缶幊陶Z言里的對象,與關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)進行轉(zhuǎn)換[6]。由于面向?qū)ο笫菑能浖こ痰幕A(chǔ)上發(fā)展起來的,而關(guān)系數(shù)據(jù)庫則是從數(shù)學理論發(fā)展而來的[7],兩套理論存在顯著的區(qū)別,存在范式不匹配的現(xiàn)象,因此ORM技術(shù)主要實現(xiàn)了在關(guān)系型數(shù)據(jù)庫和程序?qū)ο笾g作數(shù)據(jù)映射,以屏蔽底層復雜的SQL操作。

    Hibernate框架是一種基于Java語言的ORM技術(shù)實例,通過Hibernate框架可以實現(xiàn)Java對象與數(shù)據(jù)庫表間數(shù)據(jù)相互轉(zhuǎn)化。本文采用的Hibernate版本為4.1.7,開發(fā)模式為基于XML配置文件。

    3.1 學院表映射

    由于學院表主要做導航功能,因此對于學院表僅做最基本的映射,直接將其Java代碼與數(shù)據(jù)庫字段進行對應。結(jié)果如表5與表6所示:

    表5 學院對象關(guān)鍵代碼

    表6 學院表映射關(guān)鍵代碼

    3.2 課程表映射

    在實際應用場景中,由于課程對象一方面需要能夠?qū)崿F(xiàn)上鉆,獲取其所開設的學院;另一方面又要能實現(xiàn)下探,得到該課程下的教材與參考資料。因此課程對象中需要同時包含對學院和數(shù)字資源的引用。但事實上需要注意的是,由于課程-資源關(guān)系表中附帶了區(qū)分教材教參的字段,若課程對象直接對數(shù)字資源引用則無法在程序邏輯上實現(xiàn)區(qū)分教材教參,故此時的課程對象不直接對數(shù)字資源引用,而是轉(zhuǎn)化為對課程-資源關(guān)系的引用,進而完成間接引用數(shù)字資源。其結(jié)果如表7與表8所示:

    表7 課程對象關(guān)鍵代碼

    表8 課程表映射關(guān)鍵代碼

    3.3 資源表映射

    與課程表的映射過程類似,資源對象同樣不直接引用課程,而是對課程-資源關(guān)系表引用,這樣才能區(qū)分該資源在課程中的類型是否為教材。映射結(jié)果如表9與表10所示:

    表9 資源對象關(guān)鍵代碼

    表10 資源表映射關(guān)鍵代碼

    需要注意的是,資源的ID采用了UUID生成策略,這是因為一方面,數(shù)字資源的來源可能是多家第三方廠商,平臺需要進行統(tǒng)一編號;另一方面,資源名、ISBN編號等信息不足以對資源加以區(qū)分,特別是針對同一本書籍可能有多個第三方廠商提供網(wǎng)址訪問,故而使用UUID來作為資源的特定編號。

    3.4 課程-資源關(guān)系表映射

    在實際應用場景下,由于需要統(tǒng)計平臺的教材與教參數(shù)量,因此需要對課程-資源關(guān)系表進行映射,結(jié)果如表11與表12所示:

    表11 課程-資源關(guān)系對象關(guān)鍵代碼

    表12 課程-資源關(guān)系表映射關(guān)鍵代碼

    4 結(jié)論

    綜上所述,本文以電子科技大學在線課程資源平臺二期系統(tǒng)為例,分析了基于實體-關(guān)系模型的數(shù)據(jù)建模技術(shù),構(gòu)建了平臺的實體-關(guān)系模型;然后提出了將實體-關(guān)系模型轉(zhuǎn)化為數(shù)據(jù)庫表的方法,基于該方法建立了數(shù)據(jù)庫模型并描述了其數(shù)據(jù)詞典;最后本文基于Java編程語言中的Hibernate框架,提供了數(shù)據(jù)庫表與程序?qū)ο笥成涞年P(guān)鍵代碼。

    基于上述方法,本文展示了數(shù)據(jù)建模到數(shù)據(jù)庫建立,再到程序代碼映射的一般開發(fā)過程,特別是將實體-關(guān)系模型轉(zhuǎn)化為數(shù)據(jù)庫表的方法對于其他資源平臺的建設具有一定的借鑒意義。

    猜你喜歡
    主鍵實體數(shù)據(jù)庫
    基于Go 實現(xiàn)的分布式主鍵系統(tǒng)研究
    前海自貿(mào)區(qū):金融服務實體
    中國外匯(2019年18期)2019-11-25 01:41:54
    基于外鍵的E-R圖繪制方法研究
    實體的可感部分與實體——兼論亞里士多德分析實體的兩種模式
    哲學評論(2017年1期)2017-07-31 18:04:00
    兩會進行時:緊扣實體經(jīng)濟“釘釘子”
    振興實體經(jīng)濟地方如何“釘釘子”
    數(shù)據(jù)庫
    財經(jīng)(2017年2期)2017-03-10 14:35:35
    數(shù)據(jù)庫
    財經(jīng)(2016年15期)2016-06-03 07:38:02
    數(shù)據(jù)庫
    財經(jīng)(2016年3期)2016-03-07 07:44:46
    數(shù)據(jù)庫
    財經(jīng)(2016年6期)2016-02-24 07:41:51
    林周县| 凌海市| 曲阳县| 牡丹江市| 马关县| 利津县| 桐柏县| 上栗县| 修文县| 女性| 永昌县| 荣昌县| 永丰县| 陈巴尔虎旗| 大连市| 民乐县| 忻城县| 张家川| 高要市| 白玉县| 海南省| 荥经县| 蒙城县| 子长县| 瑞安市| 齐河县| 句容市| 贵港市| 开封县| 册亨县| 阳谷县| 泗阳县| 天台县| 嘉鱼县| 安吉县| 蒲城县| 千阳县| 离岛区| 哈巴河县| 宜春市| 隆化县|