• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      應(yīng)用環(huán)境中最優(yōu)數(shù)據(jù)庫(kù)模式的構(gòu)建

      2011-11-01 07:09:54河南省無(wú)線發(fā)射傳輸管理中心于中遠(yuǎn)
      河南科技 2011年11期
      關(guān)鍵詞:字段設(shè)計(jì)階段文檔

      河南省無(wú)線發(fā)射傳輸管理中心 于中遠(yuǎn)

      鄭州源碼科技有限公司 王亞平

      應(yīng)用環(huán)境中最優(yōu)數(shù)據(jù)庫(kù)模式的構(gòu)建

      河南省無(wú)線發(fā)射傳輸管理中心 于中遠(yuǎn)

      鄭州源碼科技有限公司 王亞平

      數(shù)據(jù)庫(kù)是信息系統(tǒng)的核心和基礎(chǔ),它把信息系統(tǒng)中大量的數(shù)據(jù)按照一定的模型組織起來(lái),具有存儲(chǔ)、維護(hù)、檢索數(shù)據(jù)的功能,使信息系統(tǒng)可以方便、及時(shí)、準(zhǔn)確地從數(shù)據(jù)庫(kù)中獲得所需要的信息。數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)數(shù)據(jù),從而滿足各種用戶的應(yīng)用需求。本文,筆者主要從數(shù)據(jù)庫(kù)設(shè)計(jì)技巧方面闡述在應(yīng)用環(huán)境中如何構(gòu)造出最優(yōu)的數(shù)據(jù)庫(kù)模式。

      一、數(shù)據(jù)庫(kù)設(shè)計(jì)的主要內(nèi)容

      數(shù)據(jù)庫(kù)是信息系統(tǒng)的各個(gè)部分能否緊密結(jié)合在一起的關(guān)鍵所在。數(shù)據(jù)庫(kù)設(shè)計(jì)是信息系統(tǒng)開(kāi)發(fā)和建設(shè)的重要組成部分,其設(shè)計(jì)特點(diǎn)主要是:把數(shù)據(jù)庫(kù)的設(shè)計(jì)和對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)處理的設(shè)計(jì)緊密地結(jié)合起來(lái),并將這2個(gè)方面的需求分析、設(shè)計(jì)和實(shí)現(xiàn)在各個(gè)階段同時(shí)進(jìn)行,相互參照、相互補(bǔ)充,從而不斷完善設(shè)計(jì)。設(shè)計(jì)人員必須具備以下知識(shí)和技能:數(shù)據(jù)庫(kù)的基本知識(shí)和數(shù)據(jù)庫(kù)設(shè)計(jì)技術(shù);計(jì)算機(jī)科學(xué)的基礎(chǔ)知識(shí)和程序設(shè)計(jì)方法;軟件工程的原理和方法;應(yīng)用領(lǐng)域的相關(guān)知識(shí)。

      二、數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟

      1.需求分析階段。需求分析階段可以準(zhǔn)確地了解和分析用戶的需求(包括數(shù)據(jù)與處理),不僅是整個(gè)設(shè)計(jì)過(guò)程的基礎(chǔ),也是最困難和最耗費(fèi)時(shí)間的過(guò)程。

      2.概念結(jié)構(gòu)設(shè)計(jì)階段。概念結(jié)構(gòu)設(shè)計(jì)階段是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵。在此階段,數(shù)據(jù)庫(kù)設(shè)計(jì)人員通過(guò)對(duì)用戶需求的綜合、歸納與抽象,從而形成一個(gè)獨(dú)立于具體數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)的概念模型。

      3.邏輯結(jié)構(gòu)設(shè)計(jì)階段。邏輯結(jié)構(gòu)設(shè)計(jì)階段是將概念結(jié)構(gòu)轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型并對(duì)其進(jìn)行優(yōu)化。

      4.數(shù)據(jù)庫(kù)物理設(shè)計(jì)階段。在數(shù)據(jù)庫(kù)物理設(shè)計(jì)階段,數(shù)據(jù)庫(kù)設(shè)計(jì)人員要為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)和存取方法)。

      5.數(shù)據(jù)庫(kù)實(shí)施階段。數(shù)據(jù)庫(kù)實(shí)施階段是運(yùn)用DBMS提供的數(shù)據(jù)語(yǔ)言、工具及宿主語(yǔ)言,根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫(kù),編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫(kù),并進(jìn)行試運(yùn)行。

      6.數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段。數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)經(jīng)過(guò)試運(yùn)行后即可投入正式運(yùn)行,但是在其運(yùn)行過(guò)程中,還要對(duì)其進(jìn)行評(píng)價(jià)、修改和調(diào)整。

      三、數(shù)據(jù)庫(kù)的形成過(guò)程

      數(shù)據(jù)庫(kù)的形成過(guò)程依次為:在需求分析階段,綜合各個(gè)用戶的應(yīng)用需求;在概念設(shè)計(jì)階段,形成獨(dú)立于機(jī)器特點(diǎn)和各個(gè)DBMS產(chǎn)品的概念模式;在邏輯設(shè)計(jì)階段,首先將ER圖轉(zhuǎn)換成具體數(shù)據(jù)庫(kù)產(chǎn)品所支持的數(shù)據(jù)模型,形成數(shù)據(jù)庫(kù)邏輯模式,然后基于用戶處理的安全性,在基本表的基礎(chǔ)上建立必要的視圖(View),形成數(shù)據(jù)的外模式;在物理設(shè)計(jì)階段,根據(jù)DBMS的特點(diǎn)和處理的需要,進(jìn)行物理存儲(chǔ)的安排,建立索引,形成數(shù)據(jù)庫(kù)的內(nèi)模式。

      四、數(shù)據(jù)庫(kù)設(shè)計(jì)技巧

      1.數(shù)據(jù)庫(kù)前期設(shè)計(jì)。

      (1)理解客戶需求。詢(xún)問(wèn)用戶如何看待未來(lái)需求的變化。讓客戶解釋其需求。隨著開(kāi)發(fā)的繼續(xù),還要經(jīng)常詢(xún)問(wèn)客戶來(lái)保證其需求仍然處在開(kāi)發(fā)之中。

      (2)了解企業(yè)的業(yè)務(wù)。了解企業(yè)的業(yè)務(wù),可以在以后的開(kāi)發(fā)階段節(jié)約大量的時(shí)間。

      (3)重視輸入和輸出。在定義數(shù)據(jù)庫(kù)表和字段的需求輸入時(shí),首先應(yīng)檢查已設(shè)計(jì)出的報(bào)表和視圖,以確定必要的表和字段。假如客戶需要一個(gè)報(bào)表按照郵政編碼排序、分段和求和,首先要保證其中包括了單獨(dú)的郵政編碼字段,且不能把郵政編碼摻進(jìn)地址字段里。

      (4)創(chuàng)建數(shù)據(jù)字典和ER圖。數(shù)據(jù)字典和ER圖可以使任何了解數(shù)據(jù)庫(kù)的人明白如何從數(shù)據(jù)庫(kù)中獲得數(shù)據(jù)。ER圖表達(dá)了各個(gè)表之間的關(guān)系,數(shù)據(jù)字典則說(shuō)明了每個(gè)字段的用途以及任何可能存在的別名。

      (5)定義標(biāo)準(zhǔn)的對(duì)象命名。在數(shù)據(jù)庫(kù)中,對(duì)于各種對(duì)象的命名必須規(guī)范。

      2.表和字段的設(shè)計(jì)。

      (1)標(biāo)準(zhǔn)化和規(guī)范化。數(shù)據(jù)的標(biāo)準(zhǔn)化有助于消除數(shù)據(jù)庫(kù)中的冗余數(shù)據(jù)。標(biāo)準(zhǔn)化有多種形式,通常認(rèn)為3NF(第3范式)在性能、擴(kuò)展性和數(shù)據(jù)完整性方面表現(xiàn)最好。簡(jiǎn)單來(lái)說(shuō),遵守3NF標(biāo)準(zhǔn)的表的設(shè)計(jì)原則為One Factin One Place,即某個(gè)表只包括其本身基本的屬性,當(dāng)不是它們本身所具有的屬性時(shí),需要進(jìn)行分解。表與表之間通過(guò)外鍵鏈接,并有一組表專(zhuān)門(mén)用來(lái)存放通過(guò)鍵鏈接起來(lái)的關(guān)聯(lián)數(shù)據(jù)。例如,某個(gè)存放客戶及其有關(guān)訂單的3NF數(shù)據(jù)庫(kù)就可能有2個(gè)表:Customer和Order。Order表不包含訂單關(guān)聯(lián)客戶的任何信息,但表內(nèi)會(huì)存放一個(gè)鍵值,該鍵值指向Customer表里中包含該客戶信息的那一行。

      (2)采用數(shù)據(jù)驅(qū)動(dòng)。采用數(shù)據(jù)驅(qū)動(dòng)而非硬編碼的方式,可以使策略的變更和維護(hù)更加方便,大大增強(qiáng)系統(tǒng)的靈活性和擴(kuò)展性。例如,用戶界面要訪問(wèn)外部數(shù)據(jù)源(如文件、XML文檔、其他數(shù)據(jù)庫(kù)等),不妨把相應(yīng)的鏈接和路徑信息存儲(chǔ)在用戶界面支持表里。如果用戶界面執(zhí)行工作流之類(lèi)的任務(wù)(如發(fā)送郵件、打印信箋、修改記錄狀態(tài)等),那么產(chǎn)生工作流的數(shù)據(jù)也可以存放在數(shù)據(jù)庫(kù)里。并且,角色權(quán)限管理也可以通過(guò)數(shù)據(jù)驅(qū)動(dòng)來(lái)完成。事實(shí)上,如果過(guò)程是數(shù)據(jù)驅(qū)動(dòng)的,可以把相當(dāng)多的工作交給用戶,由用戶來(lái)維護(hù)自己的工作流。

      (3)認(rèn)真考慮各種變化。設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)就要考慮哪些數(shù)據(jù)字段將來(lái)可能會(huì)發(fā)生變更。例如,對(duì)于姓氏的變更,不僅需要在建立系統(tǒng)存儲(chǔ)客戶信息時(shí),將姓氏字段存儲(chǔ)在一個(gè)單獨(dú)的數(shù)據(jù)表里,還要附加起始日和終止日等字段,以便跟蹤這一數(shù)據(jù)條目的變化。

      (4)每個(gè)表中都應(yīng)該添加3個(gè)有用的字段,即dRecordCreationDate在VB下默認(rèn)是Now(),而在SQLServer下默認(rèn)為GETDATE();sRecordCreator在SQLServer下默認(rèn)為NOTNULLDEFAULTUSER;nRecordVersion為記錄的版本標(biāo)記,有助于準(zhǔn)確說(shuō)明記錄中出現(xiàn)null數(shù)據(jù)或者丟失數(shù)據(jù)的原因。

      (5)對(duì)地址和電話應(yīng)采用多個(gè)字段。描述街道地址僅短短一行的記錄是不夠的,可以采用Address_Line1,Address_Line2和Address_Line3可以提供更大的靈活性。電話號(hào)碼和郵件地址最好擁有各自的數(shù)據(jù)表,具有自身的類(lèi)型和標(biāo)記類(lèi)別。

      (6)使用角色實(shí)體定義屬于某類(lèi)別的列。在對(duì)屬于特定類(lèi)別或者具有特定角色的事物進(jìn)行定義時(shí),可以用角色實(shí)體來(lái)創(chuàng)建特定的時(shí)間關(guān)聯(lián)關(guān)系,從而實(shí)現(xiàn)文檔自動(dòng)化。例如,當(dāng)JohnSmith,Engineer提升為JohnSmith,Director時(shí),就要改變PERSON和PERSON_TYPE的鍵值,同時(shí)增加1個(gè)日期和時(shí)間字段來(lái)說(shuō)明變化是何時(shí)發(fā)生的。這樣,PERSON_TYPE就包含了所有PERSON的可能類(lèi)型,如Associate,Engineer,Director,CIO或者CEO等。

      (7)選擇的數(shù)字類(lèi)型和文本類(lèi)型應(yīng)盡量充足。在SQL中使用smallint和tinyint類(lèi)型要特別小心。例如,查看月銷(xiāo)售總額時(shí),總額字段類(lèi)型是smallint,如果總額超過(guò)了$32,767就不能進(jìn)行計(jì)算操作了。對(duì)于ID類(lèi)型的文本字段,比如客戶ID或訂單號(hào)等,都應(yīng)該設(shè)置得比預(yù)期數(shù)據(jù)更大。假設(shè)客戶ID為10個(gè)字符長(zhǎng),就要把數(shù)據(jù)庫(kù)表字段的長(zhǎng)度設(shè)為12或13個(gè)字符長(zhǎng),但這些額外占據(jù)的空間無(wú)需重構(gòu)整個(gè)數(shù)據(jù)庫(kù),就可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的規(guī)模增長(zhǎng)。

      (8)增加刪除標(biāo)記字段。在表中包含一個(gè)“刪除標(biāo)記”的字段,就可以把行標(biāo)記為刪除。在關(guān)系數(shù)據(jù)庫(kù)里不要單獨(dú)刪除某一行,最好采用清除數(shù)據(jù)程序,以維護(hù)索引的整體性。

      3.選擇鍵和索引。

      (1)選擇鍵的設(shè)計(jì)原則。要遵循4個(gè)原則:為關(guān)聯(lián)字段創(chuàng)建外鍵,所有的鍵都必須唯一,避免使用復(fù)合鍵,外鍵總是關(guān)聯(lián)唯一的鍵字段。

      (2)使用系統(tǒng)生成的主鍵。設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)采用系統(tǒng)生成的鍵作為主鍵,實(shí)際上就是控制了數(shù)據(jù)庫(kù)的索引完整性。這樣,數(shù)據(jù)庫(kù)和非人工機(jī)制就有效地控制了對(duì)存儲(chǔ)數(shù)據(jù)中每一行的訪問(wèn)。采用系統(tǒng)生成鍵作為主鍵還有一個(gè)優(yōu)點(diǎn),即當(dāng)擁有一致的鍵結(jié)構(gòu)時(shí),找到邏輯缺陷會(huì)很容易。

      (3)不要使用用戶的鍵。在確定采用那個(gè)字段作為表的鍵的時(shí)候,要注意用戶將要編輯的字段,通常情況下不要選擇用戶可編輯的字段作為主鍵。

      (4)可選鍵也可做主鍵。把可選鍵進(jìn)一步用作主鍵,可以使數(shù)據(jù)庫(kù)擁有更強(qiáng)大的索引能力。

      4.數(shù)據(jù)完整性設(shè)計(jì)。

      (1)利用數(shù)據(jù)庫(kù)系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)的完整性。不但包括通過(guò)標(biāo)準(zhǔn)化實(shí)現(xiàn)完整性,還包括數(shù)據(jù)的功能性。在寫(xiě)數(shù)據(jù)的時(shí)候還可以增加觸發(fā)器,以保證數(shù)據(jù)的正確性。保證數(shù)據(jù)完整性,不要依賴(lài)于商務(wù)層,因?yàn)樗鼰o(wú)法保證表之間(外鍵)的完整性,所以也無(wú)法強(qiáng)加于其他完整性規(guī)則之上。

      (2)強(qiáng)制指示完整性。即在有害數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)之前,將強(qiáng)制指示剔除,從而激活數(shù)據(jù)庫(kù)系統(tǒng)的指示完整性特性,以保證數(shù)據(jù)的清潔。

      (3)使用查找控制數(shù)據(jù)完整性??刂茢?shù)據(jù)完整性的最佳方式就是限制用戶的選擇。只要有可能,都應(yīng)該提供給用戶一個(gè)清晰的價(jià)值列表供其選擇。這樣,不僅可以減少錯(cuò)誤的鍵入代碼,還有助于保證數(shù)據(jù)的一致性。

      (4)采用視圖。為了在數(shù)據(jù)庫(kù)和應(yīng)用程序代碼之間提供另一層抽象,可以為應(yīng)用程序建立專(zhuān)門(mén)的視圖,而不必非要應(yīng)用程序直接訪問(wèn)數(shù)據(jù)表。

      5.其他設(shè)計(jì)技巧。

      (1)避免使用觸發(fā)器。觸發(fā)器的功能通常采用其他方式實(shí)現(xiàn)。在調(diào)試程序時(shí),觸發(fā)器可能會(huì)成為干擾。假如確實(shí)需要,最好集中對(duì)其進(jìn)行文檔化。

      (2)使用常用英語(yǔ)(或者其他任何語(yǔ)言)。在創(chuàng)建下拉菜單、列表、報(bào)表時(shí),最好按照英語(yǔ)名稱(chēng)排序,而不要使用編碼。如需編碼,應(yīng)在編碼旁附上用戶知道的英語(yǔ)。

      (3)保存常用信息。專(zhuān)門(mén)指定一個(gè)表來(lái)存放一般數(shù)據(jù)庫(kù)信息,如數(shù)據(jù)庫(kù)當(dāng)前版本、最近檢查和關(guān)聯(lián)設(shè)計(jì)文檔的名稱(chēng)、客戶等。這樣,不僅可以實(shí)現(xiàn)一種簡(jiǎn)單機(jī)制的跟蹤數(shù)據(jù)庫(kù),而且對(duì)非客戶機(jī)/服務(wù)器環(huán)境特別有用。

      (4)包含版本機(jī)制。即在數(shù)據(jù)庫(kù)中引入版本控制機(jī)制來(lái)確定使用中的數(shù)據(jù)庫(kù)版本。隨著時(shí)間的推進(jìn),用戶的需求總是會(huì)發(fā)生變化的,最終可能會(huì)要求修改整個(gè)數(shù)據(jù)庫(kù)的結(jié)構(gòu),因此把版本信息直接存放在數(shù)據(jù)庫(kù)中更為方便。

      (5)編制文檔。所有的快捷方式、命名規(guī)范、限制和函數(shù)都要編制文檔。一些為表、列、觸發(fā)器等加注釋的數(shù)據(jù)庫(kù)工具,在開(kāi)發(fā)、支持和跟蹤修改方面十分有用。數(shù)據(jù)庫(kù)文檔化,或者在數(shù)據(jù)庫(kù)的內(nèi)部單獨(dú)建立文檔,可以減少編制新版本。

      (6)反復(fù)測(cè)試。在建立或者修訂數(shù)據(jù)庫(kù)后,必須使用用戶新輸入的數(shù)據(jù)測(cè)試數(shù)據(jù)字段。最重要的是,要讓用戶參與測(cè)試,以保證選擇的數(shù)據(jù)類(lèi)型能夠滿足設(shè)計(jì)要求。并且,測(cè)試需要在新數(shù)據(jù)庫(kù)投入實(shí)際服務(wù)之前完成。

      (7)檢查設(shè)計(jì)。在開(kāi)發(fā)期間,常用技術(shù)是通過(guò)其所支持的應(yīng)用程序原型檢查數(shù)據(jù)庫(kù)。

      猜你喜歡
      字段設(shè)計(jì)階段文檔
      圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
      有人一聲不吭向你扔了個(gè)文檔
      BIM技術(shù)在設(shè)計(jì)階段的應(yīng)用
      基于RI碼計(jì)算的Word復(fù)制文檔鑒別
      Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
      CNMARC304字段和314字段責(zé)任附注方式解析
      無(wú)正題名文獻(xiàn)著錄方法評(píng)述
      探討基于設(shè)計(jì)階段的暖通工程預(yù)算管理
      河南科技(2014年18期)2014-02-27 14:15:16
      決策及設(shè)計(jì)階段對(duì)工程造價(jià)的影響
      關(guān)于CNMARC的3--字段改革的必要性與可行性研究
      栖霞市| 广灵县| 嘉义市| 兴安县| 东乡县| 佛冈县| 德阳市| 镇平县| 巴林右旗| 洪湖市| 山阴县| 双鸭山市| 宿松县| 宁德市| 许昌县| 定结县| 工布江达县| 吉林市| 阿合奇县| 拜泉县| 海门市| 铅山县| 务川| 宁晋县| 新乐市| 肥乡县| 贵南县| 武定县| 永善县| 资兴市| 泸溪县| 泸定县| 临沭县| 从江县| 德兴市| 内江市| 遂昌县| 曲松县| 永和县| 西昌市| 辉县市|