亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ERwin軟件的高校學(xué)年制學(xué)生成績管理系統(tǒng)的重構(gòu)與實現(xiàn)

        2013-01-15 06:41:32杜海舟石光輝潘耀芳秦勁松
        上海電力大學(xué)學(xué)報 2013年4期
        關(guān)鍵詞:數(shù)據(jù)文件重構(gòu)建模

        杜海舟,石光輝,潘耀芳,秦勁松

        (上海電力學(xué)院a.計算機(jī)科學(xué)與技術(shù)學(xué)院,b.教務(wù)處,上海 200090)

        隨著近年來高校的迅速發(fā)展,原有的學(xué)籍管理方式和信息化系統(tǒng)已經(jīng)無法適應(yīng)當(dāng)前教學(xué)實踐的需要.上海電力學(xué)院2000年以前的學(xué)籍管理采用學(xué)年制管理,使用的是Foxpro文件型數(shù)據(jù)庫,2000年后的學(xué)籍管理采用通用的學(xué)分制管理,而FoxPro文件型數(shù)據(jù)庫用于現(xiàn)在的學(xué)籍管理系統(tǒng)存在很多問題.

        對于數(shù)據(jù)庫重構(gòu)方法,國內(nèi)有人針對數(shù)據(jù)庫重構(gòu)中特定物理模型和邏輯模型,分別提出了各自的元模型,以統(tǒng)一各方法中模型的表現(xiàn)形式,并進(jìn)一步提出如何把現(xiàn)有方法的規(guī)則轉(zhuǎn)化為對查詢/視圖/轉(zhuǎn)換的描述.在該框架下,對于一個特定的數(shù)據(jù)庫而言,交叉使用現(xiàn)有重構(gòu)方法中的某幾種方法,只需要把幾種方法的規(guī)則重新組合成新的方法,最后交由特定的模型驅(qū)動框架來實現(xiàn)[1].有人利用計算機(jī)輔助軟件設(shè)計 ERwin和Sqlserver數(shù)據(jù)庫自帶的工具Osql進(jìn)行數(shù)據(jù)庫的重構(gòu)[2].也有人在剖析基本表結(jié)構(gòu)的基礎(chǔ)上,提出利用數(shù)據(jù)解析的方式建立數(shù)據(jù)庫重構(gòu)模型的設(shè)計方法,并采用PB設(shè)計實現(xiàn)了向?qū)綌?shù)據(jù)庫重構(gòu)模塊[3].筆者基于模型驅(qū)動和逆向工程開發(fā)了一個基于c/s結(jié)構(gòu)的重構(gòu)系統(tǒng),其目的就是將原有的學(xué)年制學(xué)生成績管理的文件型數(shù)據(jù)庫進(jìn)行重構(gòu),并將數(shù)據(jù)還原和加載到目前主流的Oracle關(guān)系型數(shù)據(jù)庫中.

        1 重構(gòu)過程

        由于原有的FoxPro數(shù)據(jù)庫系統(tǒng)開發(fā)時間較早,因而存在原有數(shù)據(jù)庫不支持多線程編程調(diào)用,存儲和讀取效率低,又缺乏相應(yīng)的開發(fā)、維護(hù),以及說明文檔等問題,因此有必要對教學(xué)管理數(shù)據(jù)庫進(jìn)行重構(gòu).

        數(shù)據(jù)庫結(jié)構(gòu)重構(gòu)是指在新運(yùn)行環(huán)境下重新構(gòu)造數(shù)據(jù)庫結(jié)構(gòu),使之與開發(fā)程序時的結(jié)構(gòu)完全一致.數(shù)據(jù)庫結(jié)構(gòu)重構(gòu)是數(shù)據(jù)庫發(fā)布的中心環(huán)節(jié)[4].本文采用以下幾個步驟進(jìn)行數(shù)據(jù)庫結(jié)構(gòu)的重構(gòu):

        (1)讀取FoxPro數(shù)據(jù)庫的數(shù)據(jù)文件;

        (2)分析中間數(shù)據(jù)集的數(shù)據(jù);

        (3)基于ERwin專業(yè)建模軟件工具重新建模;

        (4)生成相應(yīng)的Oracle數(shù)據(jù)庫的Sql腳本;

        (5)新的數(shù)據(jù)結(jié)構(gòu)建成后開發(fā)新的學(xué)生成績管理系統(tǒng).

        2 讀取FoxPro數(shù)據(jù)庫的數(shù)據(jù)文件

        由于原有的FoxPro數(shù)據(jù)庫沒有相應(yīng)的開發(fā)文檔,所以整個數(shù)據(jù)庫的結(jié)構(gòu)無法獲得,只能通過讀取原有FoxPro數(shù)據(jù)庫的數(shù)據(jù)文件后根據(jù)數(shù)據(jù)集重新進(jìn)行分析.要分析dbf數(shù)據(jù)文件,需要通過以下步驟打開相應(yīng)的數(shù)據(jù)文件:

        (1)讀取文件頭信息;

        (2)將字段類型轉(zhuǎn)化為系統(tǒng)數(shù)據(jù)類型;

        (3)構(gòu)建Dataset類型數(shù)據(jù).

        由于dbf數(shù)據(jù)文件是一張表格對應(yīng)一個文件,其分散的形式不利于數(shù)據(jù)庫的重構(gòu),而且在處理數(shù)據(jù)時還需要整合和批量讀取,但文件流操作全部在內(nèi)存進(jìn)行,所以整合和表格的重構(gòu)就不能在當(dāng)前的文件流進(jìn)行,需要增加相應(yīng)的文件流操作.增加的操作如下:

        (1)采用打開文件流的方式來打開FoxPro數(shù)據(jù)庫的dbf自由表文件;

        (2)讀取文件頭信息;

        (3)將字段類型轉(zhuǎn)換為系統(tǒng)數(shù)據(jù)類型;

        (4)獲取dbf自由表文件對應(yīng)的數(shù)據(jù)集;

        (5)設(shè)置相應(yīng)的標(biāo)題及數(shù)據(jù)類型;

        (6)逐條添加數(shù)據(jù).

        通過這些步驟能把dbf文件在脫離FoxPro的環(huán)境下以Dataset數(shù)據(jù)結(jié)構(gòu)讀取到內(nèi)存中.其中要先分析DBF文件結(jié)構(gòu)特征.FoxPro數(shù)據(jù)庫的DBF數(shù)據(jù)文件結(jié)構(gòu)包括文件結(jié)構(gòu)說明區(qū)和數(shù)據(jù)區(qū)兩大部分.文件結(jié)構(gòu)說明區(qū)包括數(shù)據(jù)庫參數(shù)區(qū)和記錄結(jié)構(gòu)表區(qū).其中數(shù)據(jù)庫參數(shù)區(qū)占32 B,具體參數(shù)說明見表1.

        表1 數(shù)據(jù)庫參數(shù)說明

        同樣,數(shù)據(jù)記錄結(jié)構(gòu)表包括每個字段參數(shù),每個字段占32 B,具體說明如表2所示.

        表2 記錄結(jié)構(gòu)表說明

        在數(shù)據(jù)區(qū)中還通過一些特殊標(biāo)志來描述FoxPro的相應(yīng)版本信息[5],具體對應(yīng)關(guān)系見表3.

        表3 FoxPro版本信息對應(yīng)

        通過以上步驟,可以把相應(yīng)FoxPro數(shù)據(jù)庫的數(shù)據(jù)文件中的數(shù)據(jù)讀取到內(nèi)容中,形成中間數(shù)據(jù)集.

        3 中間數(shù)據(jù)集的處理

        把中間數(shù)據(jù)集當(dāng)成內(nèi)存中的數(shù)據(jù)庫,數(shù)據(jù)集是不依賴于數(shù)據(jù)庫的獨(dú)立數(shù)據(jù)集合.數(shù)據(jù)集在內(nèi)部是用XML來描述數(shù)據(jù)的,由于XML是一種與平臺、語言無關(guān)的數(shù)據(jù)描述語言,而且可以用來描述復(fù)雜關(guān)系的數(shù)據(jù),比如父子關(guān)系的數(shù)據(jù),因此數(shù)據(jù)集實際上可以容納具有復(fù)雜關(guān)系的數(shù)據(jù),而且不再依賴于數(shù)據(jù)庫鏈路.

        Dataset數(shù)據(jù)集是ADO.NET結(jié)構(gòu)的主要組件,是從數(shù)據(jù)源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存.還可通過使用UniqueConstraint和ForeignKeyConstraint對象在DataSet中實現(xiàn)數(shù)據(jù)的完整性.在訪問數(shù)據(jù)表對象時,需注意它們是按條件區(qū)分大小寫的.數(shù)據(jù)集可將數(shù)據(jù)和架構(gòu)作為XML文檔進(jìn)行讀寫.數(shù)據(jù)和架構(gòu)可通過 HTTP傳輸,并在支持XML的任何平臺上讓所有的應(yīng)用程序使用.

        在典型的多層實現(xiàn)中,創(chuàng)建和刷新數(shù)據(jù)集并依次更新原始數(shù)據(jù)的步驟包括:

        (1)通過DataAdapter使用數(shù)據(jù)源中的數(shù)據(jù)生成和填充數(shù)據(jù)集中的每個數(shù)據(jù)表;

        (2)通過添加、更新或刪除DataRow對象更改單個數(shù)據(jù)表對象中的數(shù)據(jù);

        (3)調(diào)用GetChanges方法以創(chuàng)建只反映對數(shù)據(jù)進(jìn)行更改的第二個Dataset數(shù)據(jù)集;

        (4)調(diào)用DataAdapter的Update方法,并將第二個數(shù)據(jù)集作為參數(shù)傳遞;

        (5)調(diào)用Merge方法將第二個數(shù)據(jù)集中的更改合并到第一個中;

        (6)針對數(shù)據(jù)集調(diào)用AcceptChanges,接受更改,或調(diào)用RejectChanges以取消更改.

        數(shù)據(jù)集所有數(shù)據(jù)都加載在內(nèi)存上執(zhí)行,雖然可以提高數(shù)據(jù)訪問速度,極大改善程序運(yùn)行的速度和穩(wěn)定性,但由于在內(nèi)存中讀取數(shù)據(jù)集、批量轉(zhuǎn)換這些文件時會有內(nèi)存溢出等問題,因此采用直接將數(shù)據(jù)集Dataset處理并直接寫入數(shù)據(jù)庫、再調(diào)數(shù)據(jù)庫函數(shù)對數(shù)據(jù)進(jìn)行操作的方法.

        經(jīng)過上面的技術(shù)分析后,可以確定該過程的開發(fā)分為以下幾個步驟:

        (1)連接Oracle數(shù)據(jù)庫,取其數(shù)據(jù)源作為數(shù)據(jù)集;

        (2)通過DataAdapter使用數(shù)據(jù)源中的數(shù)據(jù),生成和填充DataSet中的每個DataTable;

        (3)讀取單個或多個 dbf文件,并構(gòu)建其Dataset和DataTable;

        (4)輸出XML文件,或與同類型的Oracle數(shù)據(jù)庫的數(shù)據(jù)集合并;

        (5)用 DataAdapter的Update方法修改返回Oracle數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)的合并;

        (6)數(shù)據(jù)提交返回Oracle數(shù)據(jù)庫后,便對Oracle數(shù)據(jù)庫進(jìn)行操作.

        因為在早期的FoxPro數(shù)據(jù)庫中,每門課都沒有相應(yīng)的課程編號,無法與現(xiàn)在的學(xué)生成績管理系統(tǒng)相結(jié)合,因此在重構(gòu)過程中應(yīng)先根據(jù)數(shù)據(jù)集列出所有課程名稱,然后根據(jù)入學(xué)年份+專業(yè)+學(xué)期+課程號(自增編號)的格式生成學(xué)生成績管理系統(tǒng)中作為唯一標(biāo)識列的內(nèi)部課程號.

        4 用基于ERwin專業(yè)建模軟件工具重新建模

        ERwin是關(guān)系數(shù)據(jù)庫應(yīng)用開發(fā)的優(yōu)秀計算機(jī)輔助軟件設(shè)計工具,可用于建立實體關(guān)系(Entity Relation,E-R)模型,方便地構(gòu)造實體和聯(lián)系,表達(dá)實體間的各種約束關(guān)系,并根據(jù)模板創(chuàng)建相應(yīng)的存儲過程,以及包、觸發(fā)器、角色等,還可編寫相應(yīng)的擴(kuò)展屬性等.通過它不僅能得到優(yōu)化的業(yè)務(wù)功能和數(shù)據(jù)需求模型,而且可以實現(xiàn)由E-R模型向數(shù)據(jù)庫物理設(shè)計的轉(zhuǎn)換.ERwin所支持的數(shù)據(jù)庫多達(dá)20多種,是最常用的建模工具之一[6].

        ERwin的設(shè)計和使用包括正向和逆向兩個過程:正向過程是用ERwin模型到數(shù)據(jù)庫物理結(jié)構(gòu)轉(zhuǎn)換來生成數(shù)據(jù)庫的表結(jié)構(gòu)以及生成建立數(shù)據(jù)庫結(jié)構(gòu)的Sql命令的過程;逆向過程是在生成Sql和建立數(shù)據(jù)模型時,建模工具根據(jù)已經(jīng)部署的物理數(shù)據(jù)模式,抽出實體和關(guān)系信息,再重新構(gòu)建數(shù)據(jù)庫結(jié)構(gòu)的過程.通過ERwin的正向過程來設(shè)計數(shù)據(jù)庫的物理結(jié)構(gòu),進(jìn)而形成開發(fā)時需要的數(shù)據(jù)字典;利用ERwin的逆向過程來實現(xiàn)系統(tǒng)數(shù)據(jù)庫結(jié)構(gòu)的重構(gòu).通過數(shù)據(jù)庫正向過程實現(xiàn)對前面的兩個表的重構(gòu)的過程[7],即:建立數(shù)據(jù)庫結(jié)構(gòu)的實體關(guān)系;生成目標(biāo)數(shù)據(jù)庫結(jié)構(gòu).

        要將上面設(shè)計的數(shù)據(jù)表結(jié)構(gòu)移植到指定的目標(biāo)數(shù)據(jù)庫,需要數(shù)據(jù)庫管理系統(tǒng)和目標(biāo)數(shù)據(jù)庫的支持.通過ERwin直接與目標(biāo)數(shù)據(jù)庫相連,可以將已設(shè)計好的表結(jié)構(gòu)轉(zhuǎn)移到目標(biāo)數(shù)據(jù)庫中.

        通過ERwin正向過程來進(jìn)行數(shù)據(jù)庫結(jié)構(gòu)的設(shè)計,簡化了手工建立數(shù)據(jù)庫結(jié)構(gòu)的大量工作,提高了設(shè)計效率.ERwin可以進(jìn)行逆向工程,能夠自動生成文檔,支持與數(shù)據(jù)庫同步,為目標(biāo)Ooracle數(shù)據(jù)庫生成合適的Sql命令文件[8].

        通過ERwin專業(yè)重構(gòu)工具,根據(jù)教學(xué)管理系統(tǒng)的業(yè)務(wù)邏輯,創(chuàng)建E-R圖,并將E-R圖點擊生成數(shù)據(jù)字典后產(chǎn)生相應(yīng)的Oracle數(shù)據(jù)庫數(shù)據(jù)字典,其建模過程如圖1所示.

        最后將基于ERwin軟件生成的數(shù)據(jù)字典自動產(chǎn)生相應(yīng)的Sql腳本語言.

        圖1 ERwin工具建模過程

        5 開發(fā)相應(yīng)的數(shù)據(jù)庫重構(gòu)系統(tǒng)

        根據(jù)以上的開發(fā)步驟和思路,本課題利用Visual Studio2008軟件中的c#作為開發(fā)語言,成功開發(fā)了一套相應(yīng)的數(shù)據(jù)庫重構(gòu)系統(tǒng),實現(xiàn)了對原有的用于學(xué)年制學(xué)生成績管理的FoxPro文件型數(shù)據(jù)庫的重新構(gòu)建,并且將數(shù)據(jù)還原和加載到現(xiàn)有主流的Oracle關(guān)系型數(shù)據(jù)庫.數(shù)據(jù)庫的重構(gòu)如圖2所示.

        圖2 數(shù)據(jù)庫重構(gòu)系統(tǒng)管理界面

        圖2a是原來FoxPro數(shù)據(jù)庫中學(xué)生在大學(xué)4年的選課信息,而圖2b則是數(shù)據(jù)庫重構(gòu)后導(dǎo)入到Oracle數(shù)據(jù)庫中的選課信息.

        6 結(jié)語

        建立學(xué)生成績管理系統(tǒng)重構(gòu)數(shù)據(jù)庫是快速有效地進(jìn)行學(xué)生學(xué)籍重構(gòu)的主要方法.在以前FoxPro文件型數(shù)據(jù)庫的基礎(chǔ)上,根據(jù)軟件的逆向工程,以及ERwin專業(yè)建模軟件工具建立了適合Oracle關(guān)系型數(shù)據(jù)庫的高校學(xué)生重構(gòu)系統(tǒng),以滿足上海電力學(xué)院教學(xué)實際的需要.同時,本文也為數(shù)據(jù)庫開發(fā)者實現(xiàn)數(shù)據(jù)庫從開發(fā)環(huán)境到應(yīng)用環(huán)境的轉(zhuǎn)變提供了一種可行的解決方案.

        [1] 王函哲,沈備軍.基于模型驅(qū)動架構(gòu)的數(shù)據(jù)庫重構(gòu)[J].計算機(jī)工程,2009(24):25-37.

        [2] 劉立,金甌.一種基于ERwin和Osql實現(xiàn)數(shù)據(jù)庫重構(gòu)的方法研究[J].電腦與信息技術(shù).2003(2):9-11.

        [3] 戴大蒙,劉均.關(guān)系數(shù)據(jù)庫重構(gòu)模型的研究與實現(xiàn)[J]計算機(jī)工程2005(23):211-213.

        [4] 鄭勁松,盧志明.在Oracle中創(chuàng)建自己的數(shù)據(jù)庫及優(yōu)化[J].計算機(jī)應(yīng)用與軟件,2002(5):16-17.

        [5] 馮文雍,葉斌,陳興源,等.Visual FoxPro 5.0數(shù)據(jù)庫開發(fā)實例[M].北京:人民郵電出版社,1999:25-36.

        [6] 賴尚丁,齊文春,李輝.生產(chǎn)過程重構(gòu)數(shù)據(jù)庫設(shè)計[J].航空制造工程,1997(6):16-17.

        [7] 朱更明,李和軍.基于用戶數(shù)據(jù)庫系統(tǒng)表的數(shù)據(jù)字典輔助工具設(shè)計[J].計算機(jī)應(yīng)用研究,2001,18(8):128-130.

        [8] 屈松.同義詞的數(shù)據(jù)庫重構(gòu)[J].科技信息,2008(13):36-38.

        猜你喜歡
        數(shù)據(jù)文件重構(gòu)建模
        長城敘事的重構(gòu)
        攝影世界(2022年1期)2022-01-21 10:50:14
        聯(lián)想等效,拓展建模——以“帶電小球在等效場中做圓周運(yùn)動”為例
        北方大陸 重構(gòu)未來
        基于PSS/E的風(fēng)電場建模與動態(tài)分析
        電子制作(2018年17期)2018-09-28 01:56:44
        不對稱半橋變換器的建模與仿真
        數(shù)據(jù)文件恢復(fù)專題問答
        數(shù)據(jù)文件安全管控技術(shù)的研究與實現(xiàn)
        SQL數(shù)據(jù)文件恢復(fù)工具
        北京的重構(gòu)與再造
        商周刊(2017年6期)2017-08-22 03:42:36
        論中止行為及其對中止犯的重構(gòu)
        亚洲av无一区二区三区久久蜜桃| 国产自偷亚洲精品页65页| 久久精品日韩av无码| 欧美亚洲国产丝袜在线| 中文字幕一区二区三区精品在线| 午夜精品久久99蜜桃| 在线观看人成视频免费| 性色av浪潮av色欲av| 久久精品国产精品亚洲毛片| 中文字幕亚洲精品码专区| 人妻 日韩精品 中文字幕| 欧美人与禽交zozo| 日本国主产一区二区三区在线观看 | 亚洲电影久久久久久久9999| 久久久一本精品久久久一本| 国内自拍色第一页第二页| 国内精品伊人久久久久网站| 亚洲av无码之日韩精品| 国产做床爱无遮挡免费视频 | 精品国产乱子伦一区二区三| 野花香社区在线视频观看播放| 久久久无码人妻精品一区| 亚洲无码a∨在线视频| 日韩av最新在线地址| 激情免费视频一区二区三区| 日本伊人精品一区二区三区| 国产精品无码v在线观看| 乱码午夜-极国产极内射| 久久国产av在线观看| 亚洲综合视频一区二区| 永久亚洲成a人片777777| 女人扒开下面无遮挡| 无码熟妇人妻AV不卡| 成人大片在线观看视频| 无码人妻一区二区三区免费看| 人妻少妇精品专区性色av| 草莓视频中文字幕人妻系列| 隔壁的日本人妻bd高清中字| 亚洲精品一区二区三区麻豆| 国产精品午夜无码av天美传媒| 亚洲AV无码国产精品色午夜软件|