官术网_书友最值得收藏!

3.3 軟件項目數(shù)據(jù)庫設(shè)計

數(shù)據(jù)庫設(shè)計是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使其能夠有效地存儲數(shù)據(jù),滿足各種用戶的信息要求和處理要求。

數(shù)據(jù)庫設(shè)計包括需求分析、概念結(jié)構(gòu)設(shè)計、邏輯結(jié)構(gòu)設(shè)計、物理結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫的實施及數(shù)據(jù)庫的運行和維護6個階段。

3.3.1 需求分析

需求分析也稱為軟件需求分析或系統(tǒng)需求分析,是開發(fā)人員經(jīng)過深入細致地調(diào)研和分析,準(zhǔn)確理解用戶和項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)換為完整的需求定義,從而確定系統(tǒng)必須做什么的過程。

需求分析是在用戶調(diào)查的基礎(chǔ)上,通過分析,逐步明確用戶對系統(tǒng)的需求,包括數(shù)據(jù)需求和圍繞這些數(shù)據(jù)的業(yè)務(wù)處理需求。同時,需求分析是軟件生存周期中的一個重要環(huán)節(jié),該階段主要是分析系統(tǒng)在功能上需要“實現(xiàn)什么”,而不是考慮如何去“實現(xiàn)”。

需求分析主要表現(xiàn)在以下3個方面。

(1)功能性需求。功能性需求即軟件必須完成哪些事、必須實現(xiàn)哪些功能,以及為了向其用戶提供有用的功能所需執(zhí)行的動作。功能性需求是軟件需求的主體。開發(fā)人員需要親自與用戶進行交流,核實用戶需求,從軟件幫助用戶完成事務(wù)的角度上充分描述外部行為,形成軟件需求規(guī)格說明書。

(2)非功能性需求。作為對功能性需求的補充,軟件需求分析的內(nèi)容中還應(yīng)該包括一些非功能性需求,主要包括軟件使用時對性能方面的要求、運行環(huán)境要求,以及軟件設(shè)計時必須遵循的相關(guān)標(biāo)準(zhǔn)和規(guī)范、用戶界面設(shè)計的具體細節(jié)、未來可能的擴充方案等。

(3)設(shè)計約束。一般也稱為設(shè)計限制條件,通常是對一些設(shè)計或?qū)崿F(xiàn)方案的約束說明。例如,要求待開發(fā)軟件必須使用Oracle數(shù)據(jù)庫系統(tǒng)完成數(shù)據(jù)管理功能,運行時必須基于Linux環(huán)境等。

3.3.2 概念結(jié)構(gòu)設(shè)計

概念結(jié)構(gòu)設(shè)計的任務(wù)是在需求分析階段產(chǎn)生的需求說明書基礎(chǔ)上,按照特定的方法把它們抽象為一個不依賴于任何具體機器的數(shù)據(jù)模型,即概念模型。概念模型使設(shè)計者的注意力能夠從復(fù)雜的實現(xiàn)細節(jié)中解脫出來,而只集中在最重要信息的組織結(jié)構(gòu)和處理模式上。

概念數(shù)據(jù)模型主要在系統(tǒng)開發(fā)的數(shù)據(jù)庫設(shè)計階段使用,是按照用戶的觀點來對數(shù)據(jù)和信息進行建模,利用實體關(guān)系圖來實現(xiàn)的。它描述系統(tǒng)中的各個實體及相關(guān)實體之間的關(guān)系,是系統(tǒng)特性和靜態(tài)描述。數(shù)據(jù)字典也將是系統(tǒng)進一步開發(fā)的基礎(chǔ)。

1.概念模型的主要特點

概念模型的主要特點包括以下幾個方面。

(1)能真實、充分地反映現(xiàn)實世界,包括事物和事物之間的聯(lián)系,能滿足用戶對數(shù)據(jù)的處理要求,是現(xiàn)實世界的一個真實模型。

(2)易于理解,可以用它和不熟悉計算機的用戶交換意見。用戶的積極參與是數(shù)據(jù)庫設(shè)計成功的關(guān)鍵。

(3)易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求改變時容易對概念模型修改和擴充。

(4)易于向關(guān)系、網(wǎng)狀、層次等各種數(shù)據(jù)模型轉(zhuǎn)換。

概念結(jié)構(gòu)設(shè)計是對信息世界進行建模,常用的概念模型是E-R模型。E-R模型是用E-R圖來描述現(xiàn)實世界的概念模型。

2.實體之間的聯(lián)系

在現(xiàn)實世界中,事物內(nèi)部及事物之間是有聯(lián)系的。而在計算機世界中,實體內(nèi)部的聯(lián)系通常是指組成實體的各屬性之間的聯(lián)系,實體之間的聯(lián)系通常是指不同實體型實體集之間的聯(lián)系。

(1)一對一聯(lián)系(1:1)。如果對于實體集A中的每一個實體,實體集B中至多有一個(也可以沒有)實體與其聯(lián)系,反之亦然,則稱實體集A與實體集B具有一對一聯(lián)系,記為1:1。

(2)一對多聯(lián)系(1:n)。如果對于實體集A中的每一個實體,實體集B中有n個實體(n>1)與其聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中至多只有一個實體與其聯(lián)系,則稱實體集A與實體集B有一對多聯(lián)系,記為1:n。

(3)多對多聯(lián)系(m:n)。如果對于實體集A中的每一個實體,實體集B中有n個實體(n>0)與其聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中也有m個實體(m>0)與之聯(lián)系,則稱實體集A與實體集B具有多對多聯(lián)系,記為m:n。

兩個實體之間的聯(lián)系如圖3-1所示。

圖3-1 實體之間的聯(lián)系

3.3.3 邏輯結(jié)構(gòu)設(shè)計

邏輯結(jié)構(gòu)設(shè)計是將概念結(jié)構(gòu)設(shè)計階段完成的概念模型轉(zhuǎn)換成能被選定的數(shù)據(jù)庫管理系統(tǒng)支持的數(shù)據(jù)模型。這里主要是將E-R模型轉(zhuǎn)換為關(guān)系模型。需要具體說明把原始數(shù)據(jù)進行分解、合并后重新組織起來的數(shù)據(jù)庫全局邏輯結(jié)構(gòu),包括所確定的關(guān)鍵字和屬性、重新確定的記錄結(jié)構(gòu)和文件結(jié)構(gòu)、所建立的各個文件之間的相互關(guān)系,形成本數(shù)據(jù)庫的數(shù)據(jù)庫管理員視圖。

邏輯結(jié)構(gòu)設(shè)計一般分為以下3個步驟。

(1)從E-R圖向關(guān)系模式轉(zhuǎn)換。數(shù)據(jù)庫的邏輯設(shè)計主要是將概念模型轉(zhuǎn)換成一般的關(guān)系模式,也就是將E-R圖中的實體、實體的屬性和實體之間的聯(lián)系轉(zhuǎn)換為關(guān)系模式。

(2)數(shù)據(jù)模型的優(yōu)化。數(shù)據(jù)庫邏輯設(shè)計的結(jié)果不是唯一的。為了進一步提高數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能,還應(yīng)該適當(dāng)修改數(shù)據(jù)模型的結(jié)構(gòu),以提高查詢的速度。

(3)關(guān)系視圖的設(shè)計。關(guān)系視圖的設(shè)計又稱為外模式的設(shè)計,也稱為用戶模式設(shè)計,該模式是用戶可直接訪問的數(shù)據(jù)模式。同一系統(tǒng)中,不同用戶可有不同的關(guān)系視圖。關(guān)系視圖來自邏輯模式,但在結(jié)構(gòu)和形式上可能不同于邏輯模式,所以它不是邏輯模式的簡單子集。

關(guān)系視圖主要有以下3個作用。

(1)通過外模式對邏輯模式的屏蔽,為應(yīng)用程序提供一定的邏輯獨立性。

(2)能更好地適應(yīng)不同用戶對數(shù)據(jù)的不同需求。

(3)為不同用戶劃定不同的訪問數(shù)據(jù)范圍,有利于數(shù)據(jù)的保密。

3.3.4 物理結(jié)構(gòu)設(shè)計

數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計是指數(shù)據(jù)庫存儲結(jié)構(gòu)和存儲路徑的設(shè)計,即將數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計在實際的物理存儲設(shè)備上加以實現(xiàn),從而建立一個具有較好性能的物理數(shù)據(jù)庫,該過程依賴于給定的計算機系統(tǒng)。在這一階段,設(shè)計人員需要考慮數(shù)據(jù)庫的存儲問題,即所有數(shù)據(jù)在硬件設(shè)備上的存儲方式管理和存取數(shù)據(jù)的軟件系統(tǒng)數(shù)據(jù)庫存儲結(jié)構(gòu)(以保證用戶以其所熟悉的方式存取數(shù)據(jù)),以及數(shù)據(jù)在各個位置的分布方式等。

總的來說,數(shù)據(jù)庫的物理設(shè)計包括以下幾個方面。

(1)確定數(shù)據(jù)庫的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫中主要指存取方法和存儲結(jié)構(gòu)。

(2)對物理結(jié)構(gòu)進行評價,評價的重點是時間和空間效率。

如果評價結(jié)構(gòu)滿足原設(shè)計要求,則可進入到物理實施階段;否則,就需要重新設(shè)計或修改物理結(jié)構(gòu),有時甚至要返回邏輯設(shè)計階段修改數(shù)據(jù)模型。

1.?dāng)?shù)據(jù)庫物理設(shè)計的方法

(1)對于數(shù)據(jù)庫查詢事務(wù),需要得到查詢的關(guān)系、查詢條件所涉及的屬性、連接條件所涉及的屬性、查詢的投影屬性。

(2)對于數(shù)據(jù)更新事務(wù),需要得到被更新的關(guān)系、每個關(guān)系上的更新操作條件所涉及的屬性、修改操作要改變的屬性值。

(3)除此以外,還需要制定每個事務(wù)在各關(guān)系上運行的頻率和性能要求。

通常,關(guān)系數(shù)據(jù)庫物理設(shè)計的內(nèi)容主要包括選擇關(guān)系模式存取方法,以及設(shè)計關(guān)系、索引等數(shù)據(jù)庫文件的物理存儲結(jié)構(gòu)。

2.關(guān)系模式存取方法的選擇

1)B+樹索引

如果一個(或一組)屬性經(jīng)常在查詢條件中出現(xiàn),則考慮在這個(或這組)屬性上建立索引(或組合索引);如果一個屬性經(jīng)常作為最大值和最小值等聚集函數(shù)的參數(shù),則考慮在這個屬性上建立索引;如果一個(或一組)屬性經(jīng)常在連接操作的連接條件中出現(xiàn),則考慮在這個(或這組)屬性上建立索引。

2)hash索引

如果一個關(guān)系的屬性主要出現(xiàn)在等值連接條件中或主要出現(xiàn)在等值比較選擇條件中,則此關(guān)系可以選擇hash存取方法。

3.3.5 數(shù)據(jù)庫的實施

數(shù)據(jù)庫實施階段包括數(shù)據(jù)的載入與應(yīng)用程序的編碼和調(diào)試。

1.載入數(shù)據(jù)

為提高數(shù)據(jù)輸入工作的效率和質(zhì)量,我們可以針對具體的應(yīng)用環(huán)境設(shè)計一個數(shù)據(jù)輸入子系統(tǒng),由計算機來完成數(shù)據(jù)入庫的任務(wù)。在源數(shù)據(jù)入庫前,要采用多種方法對其進行檢驗,以防止不正確的數(shù)據(jù)入庫,這部分的工作在整個數(shù)據(jù)輸入子系統(tǒng)中是非常重要的。

2.?dāng)?shù)據(jù)庫的試運行

在原有系統(tǒng)的數(shù)據(jù)有一小部分已輸入數(shù)據(jù)庫后,就可以開始對數(shù)據(jù)庫系統(tǒng)進行聯(lián)合調(diào)試了,稱為數(shù)據(jù)庫的試運行。這一階段要實際運行數(shù)據(jù)庫應(yīng)用程序,執(zhí)行對數(shù)據(jù)庫的各種操作,測試應(yīng)用程序的功能是否滿足設(shè)計要求。如果不滿足,對應(yīng)用程序部分則要修改、調(diào)整,直到達到設(shè)計要求為止。

在數(shù)據(jù)庫試運行時,還要測試系統(tǒng)的性能指標(biāo),分析其是否達到設(shè)計目標(biāo)。在對數(shù)據(jù)庫進行物理設(shè)計時已初步確定了系統(tǒng)的物理參數(shù)值,但在試運行階段也要實際測量和評價系統(tǒng)性能指標(biāo)。

(1)組織數(shù)據(jù)入庫是十分費時、費力的事,如果試運行后需要修改數(shù)據(jù)庫的設(shè)計,則還要重新組織數(shù)據(jù)入庫。因此,應(yīng)分期分批地組織數(shù)據(jù)入庫,先輸入小批量數(shù)據(jù)做調(diào)試用,待試運行基本合格后再大批量輸入數(shù)據(jù),逐步增加數(shù)據(jù)量,逐步完成運行評價。

(2)在數(shù)據(jù)庫試運行階段,系統(tǒng)還不穩(wěn)定,軟、硬件故障隨時可能發(fā)生,而系統(tǒng)操作人員對新系統(tǒng)還不熟悉,誤操作也在所難免,因此要做好數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)工作,以減少對數(shù)據(jù)庫的破壞。

3.3.6 數(shù)據(jù)庫的運行和維護

數(shù)據(jù)庫試運行合格后,數(shù)據(jù)庫開發(fā)工作就基本完成了。但是由于應(yīng)用環(huán)境的不斷變化,數(shù)據(jù)庫運行過程中物理存儲也會不斷變化,因此對數(shù)據(jù)庫設(shè)計進行評價、調(diào)整、修改等維護工作是一個長期的任務(wù),也是設(shè)計工作繼續(xù)提高、改進的原因。

數(shù)據(jù)庫的維護工作主要包括以下幾個方面。

(1)數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)。數(shù)據(jù)庫的轉(zhuǎn)儲與恢復(fù)是系統(tǒng)正式運行后最重要的維護工作之一。

(2)數(shù)據(jù)庫的安全性、完整性控制。在數(shù)據(jù)庫運行過程中,由于應(yīng)用環(huán)境的變化,對安全性的要求也會發(fā)生變化,系統(tǒng)中用戶的密級也會改變,因此需要數(shù)據(jù)庫管理員不斷修正以滿足用戶要求。

(3)數(shù)據(jù)庫性能的監(jiān)督、分析和改造。在數(shù)據(jù)庫運行過程中,監(jiān)督系統(tǒng)運行、對監(jiān)測數(shù)據(jù)進行分析、找出改進系統(tǒng)性能的方法是數(shù)據(jù)庫管理員的另一重要任務(wù)。

(4)數(shù)據(jù)庫的重組織與重構(gòu)造。數(shù)據(jù)庫運行一段時間后,記錄不斷被添加和修改會使數(shù)據(jù)庫的物理存儲情況變壞,降低數(shù)據(jù)的存取效率及數(shù)據(jù)庫的性能,這時數(shù)據(jù)庫管理員就要對數(shù)據(jù)庫進行重組織或部分重組織。關(guān)系數(shù)據(jù)庫管理系統(tǒng)一般都提供數(shù)據(jù)重組織的實用程序。在重組織過程中,按原設(shè)計要求重新安排存儲位置、回收垃圾、減少指針鏈等,以提高系統(tǒng)性能。

數(shù)據(jù)庫的重組織并不修改原設(shè)計的邏輯和物理結(jié)構(gòu),而數(shù)據(jù)庫的重構(gòu)造是指修改部分數(shù)據(jù)庫的模式和內(nèi)模式。

主站蜘蛛池模板: 奎屯市| 五寨县| 阜新| 宝清县| 吉安县| 陆川县| 永济市| 万载县| 平度市| 云阳县| 南木林县| 乌鲁木齐市| 嘉义县| 黄骅市| 水城县| 会同县| 高密市| 厦门市| 金堂县| 龙口市| 年辖:市辖区| 阿鲁科尔沁旗| 东海县| 新安县| 靖远县| 响水县| 左贡县| 天峻县| 安顺市| 临夏市| 峨山| 灌南县| 论坛| 平阴县| 张家口市| 吉水县| 奎屯市| 珲春市| 太仓市| 萨迦县| 长治市|