文:阿蜜果
日期:2015-6-25
請勿轉(zhuǎn)載
6.1物理數(shù)據(jù)模型簡介
6.1.1 PDM的概念
PDM模型依賴于使用者想要使用的數(shù)據(jù)庫管理系統(tǒng)(DBMS)的類型,使用者可以在Power Designer中使用不同的DBMS類型。PDM模型的示意圖如下圖所示:

PDM模型的示意圖
在上圖中:
(1)可操作的PDM:可以使用PDM模型設(shè)計(jì)一個可操作的數(shù)據(jù)庫,通常情況,在數(shù)據(jù)建模時,物理模型建模在CDM模型或LDM模型建模之后,它將細(xì)化一個實(shí)際的數(shù)據(jù)庫實(shí)現(xiàn)的細(xì)節(jié),以便適應(yīng)性能和物理限制。
(2)商業(yè)智能PDM:可以使用PDM模型來設(shè)計(jì)數(shù)據(jù)環(huán)境的結(jié)構(gòu),包括:
Ø 數(shù)據(jù)倉庫或數(shù)據(jù)集市數(shù)據(jù)庫:包括可操作的數(shù)據(jù)庫中填入的數(shù)據(jù),以及可能需要在聯(lián)機(jī)分析處理數(shù)據(jù)庫中使用的所有信息??梢允褂?/span>PDM模型來設(shè)計(jì)數(shù)據(jù)倉庫或數(shù)據(jù)集市數(shù)據(jù)庫,這些數(shù)據(jù)庫通常包括存儲了非常大型的數(shù)據(jù),可以為OLAP數(shù)據(jù)庫中多重結(jié)構(gòu)的預(yù)覽的數(shù)據(jù)庫表定義類型。
Ø 多維的OLAP數(shù)據(jù)庫:這通常是封裝了數(shù)據(jù),首先被聚集在數(shù)據(jù)倉庫和數(shù)據(jù)集市(雖然有時是直接從操作數(shù)據(jù)庫傳輸),并促進(jìn)組織的信息查詢通過不同的工具。業(yè)務(wù)分析師使用OLAP數(shù)據(jù)庫發(fā)送查詢,并從數(shù)據(jù)庫中現(xiàn)有的不同維度的信息檢索業(yè)務(wù),使用者可以使用PDM多維圖表來設(shè)計(jì)OLAP數(shù)據(jù)庫中不同維度和不同web的內(nèi)容。
Power Designer支持DBMS,超過50種,例如Oracle、MySQL、Microsoft SQL Server、DB2和Informix等常見的DBMS,Power Designer支持的DBMS如下圖所示:


Power Designer支持的DBMS列表
6.1.2 PDM的作用
PDM模型的主要作用:
(1)可以完成多種常用數(shù)據(jù)庫的物理模型設(shè)計(jì);
(2)可以根據(jù)當(dāng)前的PDM模型設(shè)計(jì)生成SQL腳本或數(shù)據(jù)庫;
(3)可以逆向從SQL腳本或連接數(shù)據(jù)庫生成PDM模型;
(4)可以轉(zhuǎn)換為XML模型、OOM模型、CDM模型或LDM模型;
(5)可以簡便的從一個數(shù)據(jù)庫移植到另一個數(shù)據(jù)庫;
(6)可以方便的從一種DBMS類型變更為另一種DBMS類型;
(7)可以預(yù)估數(shù)據(jù)庫的規(guī)模;
(8)可以定義測試數(shù)據(jù);
(9)可以定制生成標(biāo)準(zhǔn)的模型報(bào)告。
6.1.3 PDM的基本術(shù)語
與CDM模型的實(shí)體、屬性、主標(biāo)識符、候選標(biāo)識符、聯(lián)系和域等基本術(shù)語相對應(yīng),PDM模型中包括表、字段、主鍵、候選鍵、外鍵和域等基本術(shù)語。另外,PDM模型還具有與數(shù)據(jù)庫管理系統(tǒng)相關(guān)的索引、視圖、存儲過程、存儲函數(shù)、觸發(fā)器、參照和序列等。
1、表
表是存儲數(shù)據(jù)庫信息的基本單位,它以行和列的方式表示數(shù)據(jù),它主要包括如下對象:
(1)列:某個表的命名屬性,用于描述表的特征。
(2)索引:基于表的一種特殊的數(shù)據(jù)結(jié)構(gòu),它在邏輯上基于鍵的值排序,常用于提高查詢速度。
(3)鍵:可以是列或列的組合,用來唯一標(biāo)識表的唯一行。每個鍵將創(chuàng)建一個唯一索引或者一個目標(biāo)庫的唯一約束。
(4)觸發(fā)器:表的一個SQL代碼段,存儲在數(shù)據(jù)庫中,當(dāng)嘗試對相關(guān)的表視圖做修改或查詢操作時觸發(fā)器被自動被調(diào)用。
2、列
列通常被稱為字段,它用于表示一行數(shù)據(jù)中特別的一個數(shù)據(jù)項(xiàng)。當(dāng)定義一列時,必須指定name和code屬性,而且需要選擇數(shù)據(jù)類型,可以從眾多數(shù)據(jù)類型中選擇,也可將某列綁定到域。
3、主鍵、候選鍵和外鍵
一個鍵可以是某一個列或列的組合,它唯一的標(biāo)識表中的一行。每個鍵會創(chuàng)建一個唯一索引,或者到指定數(shù)據(jù)庫的一個唯一的約束。
PDM模型支持如下三種鍵:
(1)主鍵:可以由某一個列或多個列組成主鍵,在表中主鍵能唯一標(biāo)識某行。需要注意的是,一個表只能有一個主鍵。
(2)候選鍵:可以由某列或多個列組成候選鍵,在表中候選鍵能唯一標(biāo)識某行??梢园ǘ鄠€候選鍵,而且不能與主鍵列一致。
(3)外鍵:可以由某列或多個列組成外鍵鍵,外鍵的值需要是另一個表的主鍵或候選鍵。
4、索引
基于表的一種特殊的數(shù)據(jù)結(jié)構(gòu),它在邏輯上基于鍵的值排序,常用于提高查詢速度。一般在一些訪問有規(guī)律,而且對時間要求高的列上創(chuàng)建索引,索引在包含唯一值的一到多個列上最為高效。
索引分為如下三種類型:
(1)唯一索引:不會有兩條索引具有相同鍵值。
(2)非唯一索引:可能有多條索引具有相同鍵值,不對索引列的屬性值進(jìn)行唯一性約束。
(3)復(fù)合索引:在多個列上創(chuàng)建的索引。
5、默認(rèn)值
默認(rèn)值指的是數(shù)據(jù)庫系統(tǒng)中某個列或某個域的默認(rèn)值。例如為會員表的“state”(狀態(tài))字段設(shè)定默認(rèn)值為0。
6、域
域幫助識別模型中信息的類型。它定義某個列或?qū)嶓w屬性的有效值。使用域有利于列或?qū)嶓w屬性的標(biāo)準(zhǔn)化,它提取不同表中某些相同列的共性。
在PDM模型中,域定義時可以包括如下信息:
(1)數(shù)據(jù)類型、數(shù)據(jù)長度和精度;
(2)檢查參數(shù);
(3)業(yè)務(wù)規(guī)則;
(4)強(qiáng)制性約束。
7、視圖
視圖是從查詢一個表或多個表數(shù)據(jù)的一種特定方式,它是一個表或多個表的列的集合。
視圖又被稱為虛擬表,視圖并不在數(shù)據(jù)庫中以存儲的數(shù)據(jù)值集形式存在,數(shù)據(jù)庫中僅僅只有存儲視圖的定義,從數(shù)據(jù)庫系統(tǒng)內(nèi)部來看,視圖是由一張或多張表中的數(shù)據(jù)組成的,從數(shù)據(jù)庫系統(tǒng)外部來看,視圖就如同一張表一樣,對表能夠進(jìn)行的一般操作都可以應(yīng)用于視圖,例如查詢,插入,修改和刪除操作等。
視圖的優(yōu)點(diǎn):
(1)安全性:通過視圖用戶只能查看和修改其所能看到的數(shù)據(jù),其它數(shù)據(jù)庫或表既不可見也不可以訪問。如果某一用戶想要訪問視圖的結(jié)果集,必須為其授予訪問權(quán)限。視圖所引用表的訪問權(quán)限與視圖權(quán)限的設(shè)置互不影響。
(2)簡化用戶對數(shù)據(jù)的操作:在定義視圖時,視圖本身就是一個復(fù)雜查詢的結(jié)果集,這樣在每一次執(zhí)行相同的查詢時,不必重新寫這些復(fù)雜的查詢語句,只要一條簡單的查詢視圖語句即可??梢娨晥D向用戶隱藏了表與表之間的復(fù)雜的連接操作。
(3)定制數(shù)據(jù):視圖能夠?qū)崿F(xiàn)讓不同的用戶以不同的方式看到不同或相同的數(shù)據(jù)集。因此,當(dāng)有許多不同水平的用戶共用同一數(shù)據(jù)庫時,這顯得極為重要。
(4)合并切分?jǐn)?shù)據(jù):在有些情況下,由于表中數(shù)據(jù)量太大,故在表的設(shè)計(jì)時常將表進(jìn)行水平切分或垂直切分,但表的結(jié)構(gòu)的變化卻對應(yīng)用程序產(chǎn)生不良的影響。如果使用視圖就可以重新保持原有的表結(jié)構(gòu)關(guān)系,從而使外模式保持不變,原有的應(yīng)用程序仍可以通過視圖來重載數(shù)據(jù)。
8、存儲過程
存儲過程是在大型數(shù)據(jù)庫管理系統(tǒng)中,一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫管理系統(tǒng)中,用戶通過指定存儲過程的名字并給出輸入?yún)?shù)(如果該存儲過程帶有參數(shù))來執(zhí)行存儲過程。存儲過程是數(shù)據(jù)庫中的一個重要對象,一個設(shè)計(jì)良好的數(shù)據(jù)庫應(yīng)用程序可以用到存儲過程。
存儲過程的優(yōu)點(diǎn):
(1)安全性:參數(shù)化的存儲過程可以防止SQL注入式攻擊,而且可以將Grant、Deny以及Revoke權(quán)限應(yīng)用于存儲過程。
(2)重復(fù)使用:存儲過程可以重復(fù)使用,從而可以減少數(shù)據(jù)庫開發(fā)人員的工作量。
(3)提高性能:存儲過程在創(chuàng)建的時候在進(jìn)行了編譯,將來使用的時候不再重新翻譯。一般的SQL語句每執(zhí)行一次就需要編譯一次,所以使用存儲過程提高了效率。
(4)減少網(wǎng)絡(luò)流量:存儲過程位于服務(wù)器上,調(diào)用的時候只需要傳遞存儲過程的名稱以及參數(shù),因此降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。
存儲過程的缺點(diǎn):
(1)調(diào)試問題:調(diào)試比較麻煩,但是某些工具軟件可以彌補(bǔ)這個缺點(diǎn)。
(2)移植問題:存儲過程代碼可能與相應(yīng)數(shù)據(jù)庫系統(tǒng)和版本相關(guān),如果存在換數(shù)據(jù)庫系統(tǒng)類型的可能性,可能造成移植工作量的大幅增加。
(3)重新編譯問題:因?yàn)榇鎯^程代碼是運(yùn)行前編譯的,如果帶有引用關(guān)系的對象發(fā)生改變時,受影響的存儲過程、包將需要重新編譯(不過也可以設(shè)置成運(yùn)行時自動編譯)。
9、存儲函數(shù)
存儲函數(shù)與存儲函數(shù)類似,兩者的唯一區(qū)別是存儲函數(shù)總是向調(diào)用者返回?cái)?shù)據(jù),而存儲過程則不返回?cái)?shù)據(jù)。
10、觸發(fā)器
觸發(fā)器與存儲過程類似,觸發(fā)器是存儲在數(shù)據(jù)庫管理系統(tǒng)中為完成某個特定功能而編寫的程序塊。觸發(fā)器與存儲過程的區(qū)別在于,存儲過程需要顯式調(diào)用,而觸發(fā)器可以由特定事件自動觸發(fā),它是隱式調(diào)用。
觸發(fā)器一般分為以下幾類:
(1)DML觸發(fā)器:由DML語句觸發(fā),例如INSERT、UPDATE和DELETE語句。按照觸發(fā)時間,DML觸發(fā)器又被分為BEFORE觸發(fā)器和AFTER觸發(fā)器,分別表示在DML事件發(fā)生之前還是發(fā)生之后調(diào)用觸發(fā)器。又可分為語句觸發(fā)器和行級觸發(fā)器,前者針對某一條語句觸發(fā)一次,而后者針對語句所影響的每一行都觸發(fā)一次。例如某條DELETE語句刪除某個表的50行數(shù)據(jù),針對該DELETE事件的語句級觸發(fā)器將被觸發(fā)一次,而行級觸發(fā)器將被觸發(fā)50次。
(2)DDL觸發(fā)器:由DDL語句觸發(fā),例如CREATE、ALTER和DROP語句。按照觸發(fā)時間,DDL觸發(fā)器又被分為BEFORE觸發(fā)器和AFTER觸發(fā)器。
(3)替代觸發(fā)器:用于執(zhí)行一個替代操作來代替觸發(fā)事件的操作。例如針對INSERT事件的INSTEAD OF觸發(fā)器,當(dāng)出現(xiàn)INSERT語句時,該語句不會被執(zhí)行,而是執(zhí)行INSTEAD OF觸發(fā)器中定義的語句。該類觸發(fā)器只能創(chuàng)建在視圖上,而且不能指定BEFORE或AFTER處罰時間選項(xiàng)。
(4)系統(tǒng)事件觸發(fā)器:發(fā)生在數(shù)據(jù)庫啟動或關(guān)閉等系統(tǒng)事件時觸發(fā)器,例如數(shù)據(jù)庫服務(wù)器的啟動或關(guān)閉、用戶的登錄和退出,或者數(shù)據(jù)庫服務(wù)錯誤等。
11、檢查參數(shù)
檢查參數(shù)是對數(shù)據(jù)保證有效性的一系列條件的集合。
有三種類型的檢查參數(shù):
(1)標(biāo)準(zhǔn)檢查參數(shù):可用在列和實(shí)體屬性中,指定數(shù)據(jù)列的范圍,例如指定數(shù)據(jù)的最大值和最小值等。
(2)附加檢查參數(shù):可用在列和實(shí)體屬性中,使用SQL表達(dá)式來限制,可使用具化的標(biāo)準(zhǔn)參數(shù)值,例如%MINMAX%、%LISTVAL%和%RULES%等變量。
(3)驗(yàn)證規(guī)則:可用在表、實(shí)體、列或?qū)嶓w屬性中,用于指定業(yè)務(wù)規(guī)則。
12、業(yè)務(wù)規(guī)則
業(yè)務(wù)規(guī)則是具體業(yè)務(wù)的規(guī)則,可以按照政府約定、客戶需求或內(nèi)部指導(dǎo)文件進(jìn)行指定。例如客戶等級分為6個等級。在設(shè)計(jì)的過程中,可以將這些約定細(xì)化,例如約定1表示普通客戶……6表示高級大客戶等。
業(yè)務(wù)規(guī)則指引或文檔化模型的創(chuàng)建過程。例如“會員只能屬于一個區(qū)域”的規(guī)則能夠幫助設(shè)計(jì)人員創(chuàng)建會員和區(qū)域的關(guān)聯(lián)關(guān)系。
業(yè)務(wù)規(guī)則不好被圖形化,Power Designer中的業(yè)務(wù)規(guī)則使用信息對圖形模型進(jìn)行補(bǔ)充。例如某些規(guī)則指定表格公式或有效性規(guī)則,這些技術(shù)表達(dá)式無法使用圖形表示出來。
13、完整性約束
數(shù)據(jù)庫完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和相容性。數(shù)據(jù)庫完整性由各種各樣的完整性約束來保證,因此可以說數(shù)據(jù)庫完整性設(shè)計(jì)就是數(shù)據(jù)庫完整性約束的設(shè)計(jì)。數(shù)據(jù)庫完整性約束可以通過DBMS或應(yīng)用程序來實(shí)現(xiàn),基于DBMS的完整性約束作為模式的一部分存入數(shù)據(jù)庫中。
完整性約束分為如下三類:
(1)實(shí)體完整性:指表中行的完整性。主要用于保證操作的記錄非空、唯一且不重復(fù)。即實(shí)體完整性要求每個表有且僅有一個主鍵,每一個主鍵值必須唯一,而且不允許為NULL或重復(fù)。
(2)參照完整性:若屬性組F是關(guān)系模式R1的主鍵,同時F也是關(guān)系模式R2的外鍵,則在R2的關(guān)系中,F的取值只允許兩種可能:空值或等于R1關(guān)系中某個主鍵值。
(3)用戶自定義完整性:包括列的值域、列類型和列有效規(guī)則(如小數(shù)位數(shù))等約束,是由確定關(guān)系結(jié)構(gòu)時所定義的字段的屬性決定的。例如,百分制成績的取值范圍在0~100之間等。
14、用戶
為了保護(hù)數(shù)據(jù)庫中各類數(shù)據(jù)的安全,不同的數(shù)據(jù)庫管理系統(tǒng)提供了不同的安全管理措施。例如:用戶(Usser)、用戶組(Group)、角色(Role)、系統(tǒng)權(quán)限(System Privilege)和對象權(quán)限(Object Premission)等,以此保障數(shù)據(jù)庫管理系統(tǒng)的安全。
用戶(User)是指能連接到數(shù)據(jù)庫的一個用戶。用戶可以歸屬于一個特定的用戶組(Group)或角色(Role),也可以歸屬于一個公共用戶組。
用戶可以同時擁有系統(tǒng)權(quán)限(System Privilege)和對象權(quán)限(Object Premission),用戶的權(quán)限是這兩類權(quán)限的合集。系統(tǒng)權(quán)限指的是用戶針對某一類數(shù)據(jù)庫對象或數(shù)據(jù)庫管理的操作權(quán)利,例如創(chuàng)建表、創(chuàng)建數(shù)據(jù)庫、連接數(shù)據(jù)庫和刪除數(shù)據(jù)庫等。對象權(quán)限是指用戶對某個數(shù)據(jù)庫對象的操作權(quán)利,例如對“會員表”的查詢、插入、刪除和更新操作權(quán)限等。
15、同義詞
同義詞(Synonyms)又稱為數(shù)據(jù)庫對象的別名(Alias),同義詞與其源對象具有相同的對象屬性,一個數(shù)據(jù)庫對象可以有多個同義詞。
posted on 2015-06-24 14:57
阿蜜果 閱讀(2787)
評論(0) 編輯 收藏 所屬分類:
database 、
架構(gòu)師之路