<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    PowerDesigner設(shè)計(jì)數(shù)據(jù)庫(kù)經(jīng)驗(yàn)

    (轉(zhuǎn)載自--http://www.cnblogs.com/qiubole/articles/116152.html)

    采用 PowerDesigner 設(shè)計(jì)數(shù)據(jù)庫(kù)

    PowerDesigner 作為數(shù)據(jù)庫(kù)建模和設(shè)計(jì)的 CASE 工具之一,在數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)中發(fā)揮著重要作用。

    運(yùn)用 PowerDesigner 進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),不但給人直觀地理解模型,而且充分運(yùn)用數(shù)據(jù)庫(kù)的技術(shù),優(yōu)化數(shù)據(jù)庫(kù)的設(shè)計(jì)。 PowerDesigner 支持 Sybase Oracle Informix SQL Server 等多種數(shù)據(jù)庫(kù)系統(tǒng),在應(yīng)用系統(tǒng)做數(shù)據(jù)庫(kù)遷移時(shí)不必維護(hù)多個(gè)數(shù)據(jù)庫(kù)腳本。

    對(duì)于采用結(jié)構(gòu)化分析( SA ), E - R 圖、數(shù)據(jù)流圖直至最后的數(shù)據(jù)庫(kù)物理圖都是系統(tǒng)設(shè)計(jì)時(shí)不可缺少的一個(gè)部分,當(dāng)數(shù)據(jù)庫(kù)物理圖完成后,應(yīng)該產(chǎn)生系統(tǒng)的數(shù)據(jù)字典。運(yùn)用 PowerDesigner 完全能夠完成這一設(shè)計(jì)流程。

    對(duì)于采用面向?qū)ο蟮姆治觯?/span> OOA ),由于數(shù)據(jù)庫(kù)采用的是 RDBMS ,因此存在對(duì)象和關(guān)系數(shù)據(jù)庫(kù)之間的映射,也需要進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)。

    兩種數(shù)據(jù)庫(kù)模型

    PowerDesigner 可以設(shè)計(jì)兩種數(shù)據(jù)庫(kù)模型圖:數(shù)據(jù)庫(kù)邏輯圖(即 E - R 圖或概念模型)和數(shù)據(jù)庫(kù)物理圖(物理模型),并且這兩種數(shù)據(jù)庫(kù)圖是互逆的。

    數(shù)據(jù)庫(kù)邏輯圖是對(duì)現(xiàn)實(shí)世界的一種抽象,體現(xiàn)實(shí)體之間的關(guān)系,可以有 1 對(duì) 1 1 對(duì)多、多對(duì)多等關(guān)系。特別說一點(diǎn),在擴(kuò)充 E - R 圖中有概括這種關(guān)系,體現(xiàn)類型之間的一種子集聯(lián)系,它定義了超類和子類。在 PowerDesigner 設(shè)計(jì)的 E - R 圖中,不具備這種關(guān)系,但在 E - RWin 設(shè)計(jì)的模型中支持這種關(guān)系,因此在用 E - RWin 圖設(shè)計(jì)的模型轉(zhuǎn)化為 PowerDesigner 的模型時(shí)注意這種關(guān)系

    數(shù)據(jù)庫(kù)物理圖中是邏輯模型的物理實(shí)現(xiàn),體現(xiàn)了表間的參照關(guān)系。在物理模型中不可能存在多對(duì)多的關(guān)系。在邏輯圖向物理圖轉(zhuǎn)換時(shí),多對(duì)多的關(guān)系變成兩個(gè) 1 對(duì)多的關(guān)系。

    ?????? 邏輯模型和物理模型有著緊密的聯(lián)系,也有本質(zhì)的區(qū)別。邏輯模型的設(shè)計(jì)遵循數(shù)據(jù)庫(kù)設(shè)計(jì)理論的第三范式(在一般的數(shù)據(jù)庫(kù)應(yīng)用達(dá)到第三范式即可),邏輯模型要求具有應(yīng)用系統(tǒng)所表達(dá)的所有信息并消除數(shù)據(jù)冗余。物理模型是在邏輯模型的基礎(chǔ)上,為了優(yōu)化應(yīng)用系統(tǒng)的性能而采用增加冗余,創(chuàng)建索引等數(shù)據(jù)庫(kù)技術(shù),它主要用非規(guī)范化的一些理論。

    ?????? 在考慮設(shè)計(jì)的任何非規(guī)范化之前,數(shù)據(jù)庫(kù)應(yīng)先完全規(guī)范化,在沒有完全理解數(shù)據(jù)和用戶需求之前,不能進(jìn)行非規(guī)范化。否則導(dǎo)致數(shù)據(jù)的組織越來越混亂,應(yīng)用程序越來越復(fù)雜。

    ?????? 因此邏輯模型和物理模型是相互矛盾又緊密聯(lián)系的,這點(diǎn)需要設(shè)計(jì)人員好好把握。

    PowerDesigner 設(shè)計(jì)數(shù)據(jù)庫(kù)物理圖

    PowerDesigner 設(shè)計(jì)數(shù)據(jù)庫(kù)物理圖,包括多個(gè)對(duì)象,如表( Table )、字段( Column )、域( Domain )等。設(shè)計(jì)時(shí)主要在 PowerDesigner Dictionary Database 兩個(gè)菜單中。

    表( Table

    ?????? 表是數(shù)據(jù)存儲(chǔ)的一個(gè)邏輯對(duì)象,包括其它對(duì)象如字段( Column )、索引( Index )、觸發(fā)器( Trigger )、存儲(chǔ)過程( Procedure )等,表的優(yōu)化設(shè)計(jì)有分割等技術(shù),對(duì)于表的存儲(chǔ),如果訪問數(shù)據(jù)量大,訪問頻率高則可考慮將表放在不同的存儲(chǔ)( Storage )上。

    ?????? 在設(shè)計(jì)表時(shí),應(yīng)該估算表的大小和增長(zhǎng)量,便于創(chuàng)建數(shù)據(jù)庫(kù)時(shí)分配數(shù)據(jù)庫(kù)空鍵,這樣減少了磁盤碎片的產(chǎn)生。

    ?????? 在關(guān)系數(shù)據(jù)庫(kù)中設(shè)計(jì)主鍵時(shí),采用有意義的主鍵是致命的錯(cuò)誤。如果用戶決定改變字段的商業(yè)含義,則需要在所有使用到該信息的地方進(jìn)行修改。主鍵的作用應(yīng)是保持唯一性和作為外鍵使用。任何對(duì)主鍵的修改會(huì)導(dǎo)致巨大的數(shù)據(jù)庫(kù)維護(hù)工作量,顯然這是不合適宜的設(shè)計(jì)。就關(guān)系數(shù)據(jù)庫(kù)而言,設(shè)計(jì)主鍵策略采用的是代理主鍵的方法。

    ?????? 設(shè)計(jì)主鍵時(shí)應(yīng)該避免“熱點(diǎn)”現(xiàn)象,但也需要分析具體的應(yīng)用系統(tǒng)的并發(fā)用戶而定。

    字段( Column

    ?????? 定義一個(gè)字段主要有字段名、字段類型及長(zhǎng)度、是否主外鍵、是否空、約束、默認(rèn)值、域等。

    ?????? 變長(zhǎng)和定長(zhǎng)的數(shù)據(jù)類型在數(shù)據(jù)庫(kù)設(shè)計(jì)中討論比較多,作為一般原則,如果預(yù)期某列中的數(shù)據(jù)范圍變化很大,但變化并不頻繁,那末對(duì)這樣的列使用變長(zhǎng)數(shù)據(jù)類型最為適宜。

    ?????? 決定行長(zhǎng)時(shí),既不能太浪費(fèi),又不能太吝惜。考慮到將來的需要,并且意識(shí)到,如果增加行長(zhǎng)而沒有改變一頁(yè)中容納的行數(shù),那末增加的空間就等于免費(fèi)使用。

    ?????? 設(shè)計(jì)時(shí),字段盡量使用域,方便維護(hù)字段的類型。每個(gè)字段最好將默認(rèn)值加上,因?yàn)樵跀?shù)據(jù)庫(kù)查詢中,有 NULL 值會(huì)影響查詢的性能。

    ?????? 通過 CHECK 約束可限制字段的取值。

    域( Domain

    簡(jiǎn)單地說,是用戶自定義類型,但域還可以定義它的取值范圍或默認(rèn)值,采用域減少了維護(hù)字段類型的工作量,也減少數(shù)據(jù)的不一致性。

    參照( Reference

    參照在數(shù)據(jù)庫(kù)設(shè)計(jì)中是一個(gè)比較復(fù)雜的問題, 它是實(shí)現(xiàn) 數(shù)據(jù)的完整性主 要要素之一,詳細(xì)論述參考后面數(shù)據(jù)的約束。

    PowerDesigner中,可對(duì)參照完整性進(jìn)行各項(xiàng)設(shè)置,參照的基數(shù)從0到n,對(duì)修改和刪除約束可分別設(shè)置為None、Restrict、Cascade、Set Null、Set Default。由于INSERT包含在UPDATE操作中,因此沒有單獨(dú)的INSERT約束。

    約束的不同設(shè)置產(chǎn)生不同的效果,以修改為例(刪除相同):

    None:父表修改,子表不影響。

    Restrict:父表修改,如果子表存在,則出錯(cuò)。

    Cascade:父表修改,如果子表存在,則相應(yīng)的修改。

    Set Null:父表修改,如果子表存在,則相應(yīng)置空。

    Set Default:父表修改,如果子表存在,則相應(yīng)置默認(rèn)值。

    索引( Index

    ?????? 索引是優(yōu)化查詢時(shí)采用一種數(shù)據(jù)庫(kù)技術(shù),索引有簇索引、非簇索引、唯一索引等。

    ?????? 設(shè)計(jì)索引時(shí),要注意索引寬度,盡量減少索引的寬度。索引的寬度不是由字段的多少?zèng)Q定的,而是由字段的長(zhǎng)度來決定。對(duì)于窄索引關(guān)鍵字,在每一索引頁(yè)上放置更多的關(guān)鍵字和指針,這樣就能花銷更少的 I/O 找到數(shù)據(jù)。

    ?????? 對(duì)于復(fù)合索引,選擇首列相當(dāng)重要,否則可能不能利用該索引,當(dāng)利用復(fù)合索引查詢時(shí)。必須確保查詢從首列開始。

    ?????? 索引還有一個(gè)填充因子( FillFactor ),填充因子的大小視表的數(shù)據(jù)增長(zhǎng)量和主鍵定義的情況而定。

    觸發(fā)器和存儲(chǔ)過程( Trigger&&Procedure

    ?????? 觸發(fā)器在維護(hù)數(shù)據(jù)完整性起著重要作用,它比參照更具靈活性,

    也能實(shí)現(xiàn)三層結(jié)構(gòu)中數(shù)據(jù)層的業(yè)務(wù)規(guī)則。

    ?????? 存儲(chǔ)過程是采用 SQL 及流程控制語句編寫的完成某種業(yè)務(wù)的腳本。存儲(chǔ)過程在數(shù)據(jù)處理上具有處理速度快、處理靈活等優(yōu)點(diǎn)。

    但是,存儲(chǔ)過程極大地增加了與數(shù)據(jù)庫(kù)之間的耦合,在數(shù)據(jù)庫(kù)遷移時(shí),需要重寫存儲(chǔ)過程,從而增加了版本維護(hù)的工作量。如果數(shù)據(jù)庫(kù)要求從遷移性考慮,應(yīng)盡量避免使用存儲(chǔ)過程或者觸發(fā)器。

    ?????? 如果不人為修改 PowerDesigner 的觸發(fā)器,其遷移性 PowerDesigner 自動(dòng)解決。

    存儲(chǔ)( Storage

    不同的數(shù)據(jù)庫(kù)中有不同的概念, Sybase 稱為設(shè)備( Device ), SQL Server 稱為文件或文件組( File FileGroup , Oracle 稱為表空間( TableSpace )。

    根據(jù)系統(tǒng)創(chuàng)建一個(gè)或多個(gè)存儲(chǔ),按一定的優(yōu)化規(guī)則存放。

    數(shù)據(jù)庫(kù)的劃分

    ?????? 數(shù)據(jù)庫(kù)的劃分以它的物理分布為原則,而不應(yīng)數(shù)據(jù)量、表類型等原則來劃分,數(shù)據(jù)庫(kù)的多少對(duì)數(shù)據(jù)庫(kù)的性能影響不大。對(duì)于訪問數(shù)據(jù)量大、訪問頻繁的表來說, I/O 操作很容易形成嚴(yán)重的瓶頸,因此減少 I/O 操作和 I/O 操作阻塞是數(shù)據(jù)庫(kù)設(shè)計(jì)考慮的主要問題,解決方法將將表放在多個(gè)設(shè)備上,設(shè)備需創(chuàng)建在不同的物理驅(qū)動(dòng)器上,最好能用智能型或陣列。

    ?????? 日志和數(shù)據(jù)分開存儲(chǔ)在不同設(shè)備上,如果索引多且占用空間大,也可以采用如此方式。

    ?????? 數(shù)據(jù)庫(kù)數(shù)量少的維護(hù)成本比數(shù)量大少。

    ?????? 因此數(shù)據(jù)庫(kù)劃分以物理分布為原則。

    ?????? PowerDesigner 提供計(jì)算數(shù)據(jù)庫(kù)或表的方法( Compute Database Size ),可幫助設(shè)計(jì)者完成數(shù)據(jù)庫(kù)的劃分。

    數(shù)據(jù)庫(kù)的完整性

    ?????? 數(shù)據(jù)庫(kù)完整性可通過存儲(chǔ)過程、聲明性參照完整性( DRI )、

    數(shù)據(jù)類型、約束、規(guī)則、默認(rèn)值,以及觸發(fā)器來實(shí)現(xiàn)。在數(shù)據(jù)庫(kù)內(nèi),這些功能各以特有的方式發(fā)揮作用。綜合利用這些完整性功能,可以使數(shù)據(jù)庫(kù)靈活,易于管理,而且很安全。

    數(shù)據(jù)完整性概念分為幾個(gè)方面。

    ? 表域完整性

    通過主鍵來強(qiáng)制表的域完整性。

    ? 引用完整性

    利用參照來加強(qiáng)表之間的邏輯關(guān)系。

    ? 數(shù)值域完整性

    任何輸入的數(shù)據(jù)在類型和范圍上必須與指定的數(shù)據(jù)類型相匹配,只有當(dāng)某列被說明允許 NULL 值,才允許向該列輸入 NULL

    數(shù)據(jù)庫(kù)的性能測(cè)試

    ?????? 生成數(shù)據(jù)庫(kù)之后,應(yīng)進(jìn)行數(shù)據(jù)庫(kù)性能測(cè)試,以便優(yōu)化數(shù)據(jù)庫(kù)的設(shè)計(jì),因此需要生成測(cè)試數(shù)據(jù),由于是性能測(cè)試,數(shù)據(jù)的規(guī)范性要求不高。通過 PowerDesigner 可方便地生成測(cè)試數(shù)據(jù)( Generate Test Data ),完成性能測(cè)試。

    數(shù)據(jù)的約束

    O-O 約束

    對(duì)父表的 INSERT UPDATE DELETE 操作沒有限制。

    M-O 約束

    對(duì)父表操作的約束:

    父表的INSERT操作,對(duì)M-O約束,父表中間的記錄可以沒有任何約束地添加到表中,因?yàn)檫@種約束中不一定必須有子女。

    ??? 父表的鍵值修改操作,只有在子表中其所有的子女對(duì)應(yīng)均做修改后,才能修改,即一般采用級(jí)聯(lián)更新的方法。

    ??? 父表的刪除,父親只有在其所有子女均被刪除或重新分配之后該父親才能被刪除。

    強(qiáng)制對(duì)可選(M-O)約束

    O-M 約束

    ??? 父表操作的約束:

    父表的INSERT操作,對(duì)O-M約束,一個(gè)父親只有當(dāng)至少當(dāng)它的一個(gè)、子女同時(shí)被加入或至少存在一個(gè)合法的子女時(shí),才能被加入。

    父表的鍵值修改操作,只有當(dāng)一個(gè)子女被創(chuàng)建或已經(jīng)有一名子女存在才行。

    父表的刪除,理論上刪除父親是沒有限制的,實(shí)際上,刪除主表記錄時(shí),不采用級(jí)聯(lián)刪除子表的方案,而采用將子表的外鍵置空。


    ?????????? 可選對(duì)強(qiáng)制(O-M)約束

    ?


    M-M 約束

    父表操作的約束:

    父表的INSERT操作,可能隨后需要生成子女,即在子表中創(chuàng)建新的行。也可能通過對(duì)子表的重新分配來實(shí)施完整行限制。

    父表的鍵值修改操作,只有在子表對(duì)應(yīng)的外鍵的值修改成新值時(shí)才能進(jìn)行。實(shí)際可能是先創(chuàng)建新的父表紀(jì)錄,接著修改子表所有對(duì)應(yīng)的紀(jì)錄,使其與父表的新紀(jì)錄關(guān)聯(lián),最后刪除原父表紀(jì)錄。

    父表的刪除,只有在子表中所有相關(guān)的行全部刪除或重新分配之后,才能刪除父表中的紀(jì)錄,一般對(duì)子表也進(jìn)行刪除操作。


    ?????????? 強(qiáng)制對(duì)強(qiáng)制(M-M)約束

    ?


    在四類約束: M - M M-O O-M O-O 。鍵值的修改可能會(huì)改變表之間的關(guān)系,而且可能違反一些約束。違反約束的操作是不允許的。具體的應(yīng)用必須根據(jù)實(shí)際的要求和商業(yè)規(guī)則進(jìn)行適當(dāng)?shù)倪x擇。但在設(shè)計(jì)和開發(fā)時(shí),必須考慮所分析的約束。

    物理圖的組織

    數(shù)據(jù)庫(kù)物理的組織以功能來組織為好,讓人很容易就明白該功能需要操作哪些表,數(shù)據(jù)是如何流向的,但是按此組織,可能有些參照建立比較亂,其實(shí)有些參照可以不必建立,如在寫入一個(gè)表時(shí),其數(shù)據(jù)的來源就是從另一個(gè)查詢得到的,可以保證數(shù)據(jù)的正確性,從功能劃分來組織物理圖,就可以不建立這個(gè)參照。

    數(shù)據(jù)庫(kù)的生成

    有了數(shù)據(jù)庫(kù)物理圖,在生成數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)腳本時(shí),應(yīng)注意如下的問題:

    參照完整性的實(shí)現(xiàn),可以采用聲明性參照實(shí)現(xiàn)或觸發(fā)器實(shí)現(xiàn),至于兩種實(shí)現(xiàn)的優(yōu)缺點(diǎn),前面已經(jīng)論述過,這里僅說一點(diǎn),如果采用觸發(fā)器實(shí)現(xiàn)需要在生成數(shù)據(jù)庫(kù)后再生成觸發(fā)器。

    當(dāng)參照含有級(jí)聯(lián)(Cascade)刪除或修改時(shí),其實(shí)現(xiàn)要分情況處理:

    Sybase SQL Server 不支持聲明性 級(jí)聯(lián)(Cascade)刪除或修改,只能通過觸發(fā)器(Trigger)來實(shí)現(xiàn)。

    Oracle、Informix支持 聲明性 級(jí)聯(lián)(Cascade)刪除,但不支持

    級(jí)聯(lián)(Cascade)修改,也只能通過觸發(fā)器(Trigger)來實(shí)現(xiàn)。

    ??? 當(dāng)定義了用戶自定義類型時(shí),在生成數(shù)據(jù)庫(kù)時(shí),最好轉(zhuǎn)換成數(shù)據(jù)庫(kù)基本類型,對(duì)數(shù)據(jù)庫(kù)性能和遷移都有利。

    數(shù)據(jù)字典

    ?????? 數(shù)據(jù)字典作為產(chǎn)品的一個(gè)歸檔文檔,它定義應(yīng)用系統(tǒng)數(shù)據(jù)庫(kù)的各個(gè)方面。數(shù)據(jù)庫(kù)物理模型建好后,就可以生成數(shù)據(jù)字典,數(shù)據(jù)字典的內(nèi)容和形式可以在 PowerDesigner 定義模板,依據(jù)模板生成數(shù)據(jù)字典,再處理一下文檔格式。

    ?????? PowerDesigner Create Report 生成數(shù)據(jù)字典。

    目前系統(tǒng)需要處理和優(yōu)化的地方

    主鍵的定義:

    由于對(duì)業(yè)務(wù)了解的深度不夠,某些表的主鍵建立存在一些問題,隨著業(yè)務(wù)的深入逐步完善。

    ?????? 參照的建立:

    主鍵的定義不完善導(dǎo)致了參照建立的不完善,這也只能以后組不完善。

    ?????? 數(shù)據(jù)庫(kù)的劃分:

    ?????? 數(shù)據(jù)庫(kù)的劃分前面已經(jīng)談過,由于這個(gè)劃分影響著服務(wù)器和客戶端的程序,也只能以后的新版中解決。

    ?????? 表結(jié)構(gòu)的調(diào)整:

    ?????? 對(duì)于有些表,如系統(tǒng)設(shè)置表,可以將它的橫向結(jié)構(gòu)改為縱向結(jié)構(gòu),這樣增加了系統(tǒng)的靈活性



    posted on 2006-08-07 11:42 nbt 閱讀(1889) 評(píng)論(1)  編輯  收藏 所屬分類: 數(shù)據(jù)庫(kù)技術(shù)

    評(píng)論

    # re: PowerDesigner設(shè)計(jì)數(shù)據(jù)庫(kù)經(jīng)驗(yàn)[未登錄] 2007-12-04 12:14 HH

    說點(diǎn)有用的  回復(fù)  更多評(píng)論   

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    收藏夾

    Java技術(shù)網(wǎng)站

    友情鏈接

    國(guó)內(nèi)一些開源網(wǎng)站

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产一级高清免费观看| 污污的视频在线免费观看| 久久精品国产亚洲AV嫖农村妇女| 亚洲线精品一区二区三区影音先锋 | 亚洲AV无码1区2区久久| 亚洲大成色www永久网站| 国产亚洲综合色就色| 亚洲成AV人片一区二区| 亚洲精品国产字幕久久不卡| 亚洲国产精品无码av| 亚洲91av视频| 亚洲精品福利网站| wwwxxx亚洲| 亚洲精品成a人在线观看☆| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲第一街区偷拍街拍| 男女超爽视频免费播放| 一区二区三区免费电影| 国产成人无码区免费网站| 日韩免费在线视频| 亚洲综合免费视频| 大地资源免费更新在线播放| 国产女高清在线看免费观看 | 亚洲欧洲免费视频| 天天影院成人免费观看| 精品国产免费观看久久久| 亚洲国产电影av在线网址| 亚洲AV无码成人精品区在线观看 | 亚洲AV无码国产精品色| 亚洲成av人无码亚洲成av人| 免费看一级毛片在线观看精品视频| 国产成人无码精品久久久久免费| 香蕉免费一区二区三区| 毛片免费全部免费观看| yy6080亚洲一级理论| 国产亚洲一区二区精品| 亚洲最大的黄色网| 大片免费观看92在线视频线视频| 日韩免费观看一区| 男女啪啪永久免费观看网站| 亚洲午夜成人精品电影在线观看|