數(shù)據(jù)庫相關(guān):大型MIS軟件的開發(fā)必須重視數(shù)據(jù)庫設(shè)計

字號:

80年代初以來,國內(nèi)許多計算機專家先后深入一些大型企業(yè),力圖開發(fā)出理想的大型MIS。實踐證明,開發(fā)出的大型MIS,多數(shù)不很理想。原因何在?據(jù)作者一孔之見,其中一條重要的原因,就是在開發(fā)過程中對MIS的數(shù)據(jù)庫設(shè)計重視不夠,沒有把它當作一件頭等大事來處理。一個大型MIS,如果它的數(shù)據(jù)庫設(shè)計出了問題,就是出了大問題,或者說從根本上出了問題。這樣的MIS,不會成功,只會失敗。既然如此,應(yīng)該怎樣來解決它呢?
    一、MIS的基礎(chǔ)是數(shù)據(jù)庫
    NIS系統(tǒng)包括硬件和軟件兩部分。MIS的軟件,是由文檔加程序組成的。它的文檔,就是MIS的全部設(shè)計說明書。它的程序,就是MIS的全部算法加上相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。MIS的算法無非是它的各種錄入、修改、查詢、處理、輸出與菜單程序的算法。MIS的數(shù)據(jù)結(jié)構(gòu),主要是指數(shù)據(jù)庫設(shè)計中的各種基本表。可以這么說,基本表是MIS的基礎(chǔ)。數(shù)據(jù)庫設(shè)計既是MIS開發(fā)中的重點,又是其難點。說它是重點,因為設(shè)計出一套好的基本表需要許多技巧。
    MIS的發(fā)展是分階段的,不同的階段,對應(yīng)不同的數(shù)據(jù)庫。在MIS的初級(初始與擴展)階段,對應(yīng)的數(shù)據(jù)庫為應(yīng)用數(shù)據(jù)庫。所謂應(yīng)用數(shù)據(jù)庫,就是針對某項具體的應(yīng)用而設(shè)計的基本表的集合,這種數(shù)據(jù)庫的設(shè)計、使用與維護均較容易。在MIS的中級(控制與集成)階段,對應(yīng)的數(shù)據(jù)庫為主題數(shù)據(jù)庫。所謂主題數(shù)據(jù)庫,就是針對某方面的主題而設(shè)計的基本表的集合,它包括本主題范圍內(nèi)的所有應(yīng)用項目,這種數(shù)據(jù)庫的設(shè)計、使用與維護均較復(fù)雜。在MIS的高級(數(shù)據(jù)管理與成熟)階段,對應(yīng)的數(shù)據(jù)庫為綜合數(shù)據(jù)庫。所謂綜合數(shù)據(jù)庫,就是針對某個大型企事業(yè)單位的綜合管理信息系統(tǒng)而設(shè)計的基本表的集合,它包括本單位的所有主題,這種數(shù)據(jù)庫的設(shè)計、使用與維護均很復(fù)雜,對設(shè)計者、用戶與DBA的要求均很高。
    二、數(shù)據(jù)庫設(shè)計的一般方法
    數(shù)據(jù)庫設(shè)計分五大步,即數(shù)據(jù)庫需求分析、概念設(shè)計、邏輯設(shè)計、物理設(shè)計與加載測試。需求分析的任務(wù)是將業(yè)務(wù)管理單證流轉(zhuǎn)化為數(shù)據(jù)流,繪制出數(shù)據(jù)流程圖DFD,并完成相應(yīng)的數(shù)據(jù)字典,概念設(shè)計的任務(wù)是從DFD出發(fā),識別實體及其相互關(guān)系,并繪制出實體關(guān)系圖,即E-R圖。邏輯設(shè)計的任務(wù)是從E-R圖出發(fā),確定各個實體及關(guān)系的具體屬性。物理設(shè)計的任務(wù)是確定所有屬性的類型、寬長與取值范圍,設(shè)計出基本表的主鍵與外鍵,將所有表名與字段名英文化,完成相應(yīng)的數(shù)據(jù)字典,在具體的DBMS環(huán)境上實現(xiàn)物理建庫工作。加載測試工作貫穿于程序測試工作的全過程,整個錄入、修改、查詢、處理、輸出工作,均可視為對數(shù)據(jù)庫的加載測試工作。應(yīng)該指出,大型數(shù)據(jù)庫的設(shè)計不大可能一次順利完成,上述五大步驟,很可能是一個不斷迭代的過程。
    三、基本表與其它表
    MIS中的數(shù)據(jù)庫是由一組基本表所組成的,一個實體可以用一張基本表來描述,一個復(fù)雜關(guān)系也可以用一張基本表來描述。所以,基本表可以代表一個實體,也可以代表一個關(guān)系?;颈碇械淖侄?,就是實體或關(guān)系的屬性?;颈硎谴娣呕A(chǔ)數(shù)據(jù)的地方,這些基礎(chǔ)數(shù)據(jù)具有五個基本性質(zhì)。原子性,即表中的數(shù)據(jù)是元數(shù)據(jù)。演繹性,即由表中的數(shù)據(jù)可以生成系統(tǒng)所有的輸出數(shù)據(jù)。穩(wěn)定性,即表中的數(shù)據(jù)一次錄入、多次使用、長期保存。
    規(guī)范性,即表中的數(shù)據(jù)滿足第三范式??陀^性,即表中的數(shù)據(jù)是客觀存在的數(shù)據(jù),不是主觀想象中的數(shù)據(jù)。
    MIS中的表除了基本表之外,還有一些非基本表,如代碼表、中間表、臨時表與虛表(視圖),它們不屬于數(shù)據(jù)庫的內(nèi)容,但均以表的形式出現(xiàn),為數(shù)據(jù)的錄入、查詢、處理、輸出提供方便。利用基本表的五個性質(zhì),很容易區(qū)分基本表與非基本表。非基本表的設(shè)計是不難的,基本表的設(shè)計是較難的,MIS中的數(shù)據(jù)庫設(shè)計,主要是指基本表的設(shè)計。
    四、數(shù)據(jù)庫的設(shè)計技巧
    數(shù)據(jù)庫設(shè)計中有兩個難點,一是如何處理多對多的關(guān)系,二是如何設(shè)計主鍵。處理多對多的關(guān)系的辦法為:將一個多對多的關(guān)系分解為一個一對多的關(guān)系加上另一個多對一的關(guān)系。例如,若兩個表之間存在多對多的關(guān)系,就在它倆之間增加一個表,該表的字段中至少要包括前兩個表的主鍵在內(nèi)。這樣,就將一個多對多的關(guān)系轉(zhuǎn)化為兩個一對多的關(guān)系了。
    在基本表中,主鍵是記錄的標識。一般而言,主鍵是為索引文件或表間連接服務(wù)的。它對用戶不透明,只提供給程序員使用。因此,主鍵的取值為一串無物理意義的數(shù)值,且由程序自動加1來實現(xiàn)。主鍵是一個永久為非空的字段,一旦產(chǎn)生,便不能修改,但可以被拷貝。通過拷貝,這個表的主鍵可作為那個表的外鍵。要設(shè)計好數(shù)據(jù)庫,除了克服以上兩個難點之外,還應(yīng)遵循下列原則:即基本表的個數(shù)越少越好;主鍵的個數(shù)越少越好;字段的個數(shù)越少越好。
    五、MIS的開發(fā)模式
    結(jié)合我國的特點,大型MIS的開發(fā)與大型數(shù)據(jù)庫的設(shè)計,均應(yīng)分為兩個層次,即內(nèi)核層與外殼層。內(nèi)核層對應(yīng)法治,設(shè)計上講究通用性。外殼層對應(yīng)人治,設(shè)計上講究專用性。隨著中國經(jīng)濟與世界經(jīng)濟接軌進程的發(fā)展,MIS的內(nèi)核層將逐步擴大,外殼層將逐步縮小,通用性將逐步增強。
    當前我國大型企事業(yè)單位的MIS建設(shè),少數(shù)單位已跨過了初級階段,開始邁向中級或高級階段。與此同時,數(shù)據(jù)庫設(shè)計已告別了應(yīng)用數(shù)據(jù)庫時期,開始向主題數(shù)據(jù)庫或綜合數(shù)據(jù)庫過渡。主題數(shù)據(jù)庫或綜合數(shù)據(jù)庫的設(shè)計,與應(yīng)用數(shù)據(jù)庫設(shè)計的本質(zhì)區(qū)別是:前者是面向數(shù)據(jù),后者是面向程序。一個大型企事業(yè)單位的MIS建設(shè),是一個長期的反復(fù)的過程。在這一過程中,應(yīng)用程序與輸出圖表可能逐年變動,但基礎(chǔ)數(shù)據(jù)是穩(wěn)定不變的。只要我們將基本表設(shè)計面向數(shù)據(jù),不面向程序,用基本表組織好元數(shù)據(jù),就能以不變應(yīng)萬變,避免在MIS建設(shè)中的失誤。