數(shù)據(jù)庫(kù)是按照一種易于利用程序進(jìn)行存儲(chǔ)和檢索的方式組織的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)包含了存儲(chǔ)和檢索信息的方法。
這些信息以及組織這些信息的需求因應(yīng)用程序類型的不同而異。但是,關(guān)系數(shù)據(jù)庫(kù)可以滿足大部分的市場(chǎng)和常見(jiàn)需求。其他類型的數(shù)據(jù)庫(kù),比如層次數(shù)據(jù)庫(kù)、面向?qū)ο髷?shù)據(jù)庫(kù)和超文本數(shù)據(jù)庫(kù)也在市場(chǎng)上占有一席之地。
關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn)了實(shí)體的一個(gè)非常簡(jiǎn)單的原則,該原則可以看作是表,以及作為其他實(shí)體的引用的實(shí)體間的關(guān)系。關(guān)系數(shù)據(jù)庫(kù)支持的其他概念用于實(shí)現(xiàn)更輕松的訪問(wèn)、速度和安全性。
關(guān)系數(shù)據(jù)庫(kù)建模系統(tǒng)(Relational Data Base Modeling System)技術(shù)是市場(chǎng)上最可靠的技術(shù)之一。其基本思想已有三十多年的歷史,第一個(gè)產(chǎn)品也于 25 年前就開(kāi)發(fā)出來(lái)了。
標(biāo)準(zhǔn)化的呼聲越來(lái)越高,于是就產(chǎn)生了 SQL,它是用于數(shù)據(jù)定義和數(shù)據(jù)操縱的標(biāo)準(zhǔn)化語(yǔ)言。有三個(gè)版本的標(biāo)準(zhǔn),分別叫做 SQL-1、SQL-2 和 SQL-3。盡管早在 1992 年就已標(biāo)準(zhǔn)化,但 SQL-2 仍是目前主要供應(yīng)商最常使用的一種標(biāo)準(zhǔn)。他們利用自己的語(yǔ)言和結(jié)構(gòu)構(gòu)造擴(kuò)展了他們的實(shí)現(xiàn),以涵蓋市場(chǎng)需求。
![]() ![]() |
![]()
|
統(tǒng)一建模語(yǔ)言與 SQL 相比算是一種比較新的技術(shù)。UML 在 1997 年被標(biāo)準(zhǔn)化,之后有一些小的修訂。但是 UML 的源頭可追溯到上世紀(jì) 80 年代以及 90 年代初,當(dāng)時(shí)不同的建模語(yǔ)言正試圖建立一種描述和設(shè)計(jì)更好的應(yīng)用程序的方法。
該語(yǔ)言最初針對(duì)軟件開(kāi)發(fā),但是它有足夠的遠(yuǎn)見(jiàn),所以不僅限于任何方向。UML 隱含了自適應(yīng)的概念,可用于描述軟件相關(guān)和不相關(guān)的專業(yè)領(lǐng)域。配置文件在不偏離該語(yǔ)言標(biāo)準(zhǔn)的情況下將 UML 定制到一個(gè)領(lǐng)域。
統(tǒng)一建模的力量在于將所有領(lǐng)域的專業(yè)知識(shí)合并在一個(gè)統(tǒng)一平臺(tái)中。不管使用哪種技術(shù),都可以利用相同的語(yǔ)言對(duì)它們進(jìn)行描述。
![]() ![]() |
![]()
|
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)是最常見(jiàn)的數(shù)據(jù)庫(kù)使用形式。IBM Rational 的 UML 數(shù)據(jù)建模配置文件提供了一種為滿足數(shù)據(jù)庫(kù)建模和數(shù)據(jù)庫(kù)設(shè)計(jì)的需要而使用和理解 UML 的簡(jiǎn)單的方法。數(shù)據(jù)庫(kù)中使用的表和關(guān)系的概念在核心 UML 中被映射為類和關(guān)聯(lián)的概念。但是在數(shù)據(jù)庫(kù)建模中還有其他的構(gòu)造和約束(比如數(shù)據(jù)庫(kù)和模式)必須被可視化地建模。
圖 1 顯示了數(shù)據(jù)庫(kù)部署的多樣性。以下這些復(fù)雜分配:表與視圖到模式、模式到數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)到表空間(tablespace)和節(jié)點(diǎn),把需要底層構(gòu)架的一種簡(jiǎn)單表示的每個(gè)數(shù)據(jù)庫(kù)管理員(DBA)搞得暈頭轉(zhuǎn)向。因此計(jì)劃數(shù)據(jù)庫(kù)的分發(fā)和配置成為一項(xiàng)關(guān)鍵能力。
數(shù)據(jù)庫(kù)所在的物理實(shí)體(計(jì)算機(jī))被表示為節(jié)點(diǎn)。該表示法是核心 UML 的一部分。
節(jié)點(diǎn)用于部署圖中,代表了軟件部署的物理配置。部署圖包括節(jié)點(diǎn)以及節(jié)點(diǎn)間的連接。這些連接代表了通信協(xié)議。
"DB2 Server Lexington"、"Oracle Server Cupertino"和"Oracle Sever Redmond"代表了節(jié)點(diǎn),XML、JDBC 和 OraNet代表了通信協(xié)議。所有的軟件和數(shù)據(jù)庫(kù)都必須部署在物理節(jié)點(diǎn)上。
部署圖對(duì)于數(shù)據(jù)管理員配置服務(wù)器和跟蹤問(wèn)題很重要(首先開(kāi)始部署,然后開(kāi)始鉆研細(xì)節(jié))。
表空間是數(shù)據(jù)的存儲(chǔ)器,代表了一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)。它是稱為 Database 的用戶透明物理結(jié)構(gòu)(在下文中描述)和節(jié)點(diǎn)之間的鏈接。表空間是 UML 數(shù)據(jù)建模配置文件中的原型化組件。
表空間可理解為物理存儲(chǔ)上的一個(gè)區(qū)域,其中該物理存儲(chǔ)由數(shù)據(jù)庫(kù)來(lái)維護(hù)。數(shù)據(jù)庫(kù)本身可以被分發(fā)給數(shù)個(gè)表空間,這些表空間由數(shù)據(jù)的大小、數(shù)據(jù)訪問(wèn)需求和安全需求來(lái)決定。
表空間利用依賴關(guān)系在數(shù)據(jù)庫(kù)中關(guān)聯(lián),并且在數(shù)據(jù)庫(kù)實(shí)現(xiàn)的設(shè)計(jì)階段是可選的。如果沒(méi)有使用,將采用數(shù)據(jù)庫(kù)維護(hù)的默認(rèn)表空間。
表空間在數(shù)據(jù)庫(kù)實(shí)現(xiàn)中的價(jià)值在于計(jì)劃節(jié)點(diǎn)環(huán)境和建立節(jié)點(diǎn)需求。借助于組件圖的幫助,跟蹤部分?jǐn)?shù)據(jù)庫(kù)的問(wèn)題變得更容易。可利用數(shù)據(jù)庫(kù)或表空間來(lái)實(shí)現(xiàn)表。在利用數(shù)據(jù)庫(kù)實(shí)現(xiàn)時(shí),會(huì)使用默認(rèn)的表空間。
表空間作為物理存儲(chǔ)單元的基本結(jié)構(gòu)是由不同的數(shù)據(jù)庫(kù)供應(yīng)商實(shí)現(xiàn)的。他們?cè)诖鎯?chǔ)需求和存儲(chǔ)內(nèi)部結(jié)構(gòu)上給予表空間或多或少的控制。
數(shù)據(jù)庫(kù)是用于物理數(shù)據(jù)存儲(chǔ)以及對(duì)已存儲(chǔ)數(shù)據(jù)的受控訪問(wèn)的系統(tǒng)。它是用于數(shù)據(jù)建模的最大的專門元素。數(shù)據(jù)庫(kù)是一個(gè)原型化組件,并且是 UML 數(shù)據(jù)建模配置文件的一部分。
數(shù)據(jù)庫(kù)定義了數(shù)據(jù)庫(kù)類型,以及用于數(shù)據(jù)建模的約束,比如數(shù)據(jù)類型、存儲(chǔ)過(guò)程、語(yǔ)法等。數(shù)據(jù)庫(kù)級(jí)別是對(duì)信息的基本訪問(wèn)級(jí)別,可以在更高級(jí)別上進(jìn)行精化。
數(shù)據(jù)庫(kù)與組件圖中的其他組件結(jié)合使用,來(lái)定義應(yīng)用程序和數(shù)據(jù)庫(kù)之間的依賴關(guān)系。
數(shù)據(jù)庫(kù)組件對(duì)于設(shè)計(jì)者的價(jià)值在于計(jì)劃數(shù)據(jù)庫(kù)的可訪問(wèn)性。對(duì)數(shù)據(jù)庫(kù)的模式分配定義了信息存儲(chǔ)的基本結(jié)構(gòu)。
數(shù)據(jù)庫(kù)管理員使用部署圖來(lái)找出應(yīng)用程序和數(shù)據(jù)庫(kù)之間的通信問(wèn)題,并定義數(shù)據(jù)以及部署圖的物理部署。
表的基本組織單元就是模式。模式是 UML 的組織單元,用包表示。模式是原型化的包,并且是 UML 數(shù)據(jù)建模配置文件的一部分。
模式是應(yīng)用程序使用的基本單元。它還是一個(gè)可以被授予特權(quán)的單元。模式在下一個(gè)細(xì)節(jié)級(jí)別上被指定給數(shù)據(jù)庫(kù)組件。
模式是在類圖中組織的。
模式應(yīng)該分配給數(shù)據(jù)庫(kù),因?yàn)閿?shù)據(jù)庫(kù)定義了語(yǔ)言約束、數(shù)據(jù)類型、可用觸發(fā)器、可能的數(shù)據(jù)庫(kù)約束以及存儲(chǔ)過(guò)程類型。
模式不僅僅是一個(gè)組織單元;它還是一種安全機(jī)制。類圖允許數(shù)據(jù)庫(kù)管理員和分析人員找出基于應(yīng)用程序的包和數(shù)據(jù)之間的依賴關(guān)系,從而產(chǎn)生數(shù)據(jù)庫(kù)的使用模式。
表是關(guān)系數(shù)據(jù)庫(kù)的基本建模結(jié)構(gòu)。它代表了具有相同結(jié)構(gòu)的一組記錄,也被稱作行(row)。每條記錄都包含數(shù)據(jù)。有關(guān)表結(jié)構(gòu)的信息存儲(chǔ)在數(shù)據(jù)庫(kù)中。
表是一種原型化類,并且是UML數(shù)據(jù)建模配置文件的一部分。
表是在數(shù)據(jù)模型圖中表示的。
由于該圖只是模型的一個(gè)視圖,因此它可以代表面向表焦點(diǎn)的解決方案。這避免了由于構(gòu)建一個(gè)巨型的模型圖而導(dǎo)致無(wú)法找到您正在尋找的物理數(shù)據(jù)模型的范圍。
該數(shù)據(jù)模型圖具有表、視圖、表間的關(guān)系、視圖的依賴關(guān)系和存儲(chǔ)過(guò)程容器,精確地表示了數(shù)據(jù)詞典的一部分。數(shù)據(jù)管理員可以在更加可讀的圖形表示中找出數(shù)據(jù)庫(kù)的結(jié)構(gòu)。
在設(shè)計(jì)方面,利用圖形表示更容易調(diào)整數(shù)據(jù)庫(kù),因?yàn)槟軌蚩吹奖淼膬?nèi)容以及文檔的每個(gè)細(xì)節(jié)。由于調(diào)整經(jīng)常是一個(gè)手動(dòng)過(guò)程,所以表間的數(shù)據(jù)移動(dòng)是一項(xiàng)必需的功能。只需要知道所有模型約束的知識(shí)就能實(shí)現(xiàn)該功能。
構(gòu)架師不關(guān)心數(shù)據(jù)模型圖的詳細(xì)信息,但是他可以檢查是否所有信息都表示在數(shù)據(jù)庫(kù)中。
視圖是一個(gè)虛擬表。它代表了具有相同結(jié)構(gòu)的一組記錄,這與表完全一樣,唯一的區(qū)別在于數(shù)據(jù)的物理資源在其他表中。
視圖是一個(gè)原型化類,并且是 UML 數(shù)據(jù)建模配置文件的一部分。
視圖是在數(shù)據(jù)模型圖中表示的。
由于該圖只是模型的一個(gè)視圖,所以它可以代表面向視圖中焦點(diǎn)表中焦點(diǎn)的解決方案。
在視圖中對(duì)表進(jìn)行建模的價(jià)值不僅僅在于為數(shù)據(jù)庫(kù)定義數(shù)據(jù)結(jié)構(gòu),還在于數(shù)據(jù)的面向問(wèn)題的分析(這不能在數(shù)據(jù)庫(kù)本身的知識(shí)庫(kù)中完成)。很容易發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)源之間的依賴關(guān)系。
列是關(guān)系數(shù)據(jù)庫(kù)內(nèi)部的基本組織元素。每個(gè)數(shù)據(jù)都必須存儲(chǔ)在表中的行的一列中。這些列作為原型化屬性是 UML 數(shù)據(jù)建模配置文件的一部分。
列添加了必須指定的數(shù)據(jù)類型標(biāo)簽值。另外,列數(shù)據(jù)可以作為工件物理存儲(chǔ)在數(shù)據(jù)庫(kù)中,或者利用表達(dá)式從其他列進(jìn)行計(jì)算。
列還具有其他標(biāo)簽值,他們指定了數(shù)據(jù)模型的細(xì)節(jié),比如 null 和唯一性。
列定義的價(jià)值在于數(shù)據(jù)結(jié)果的規(guī)格說(shuō)明。另外,它還可用于不同數(shù)據(jù)源的集成以及實(shí)現(xiàn)互相之間相同點(diǎn)和不同點(diǎn)的發(fā)現(xiàn)。
鍵用于訪問(wèn)表。主鍵唯一標(biāo)識(shí)了表中的一行,而外鍵則訪問(wèn)其他相關(guān)表中的數(shù)據(jù)。
主鍵通常是內(nèi)容無(wú)關(guān)的,并且由數(shù)據(jù)庫(kù)自動(dòng)生成,以方便數(shù)據(jù)的更新。
外鍵總是從與其他表的關(guān)系派生而來(lái)。
鍵是鍵約束(Key Constraints)的實(shí)現(xiàn)。鍵約束指定了鍵的內(nèi)容(哪些列生成了鍵),以及鍵的物理實(shí)現(xiàn)。為了輕松識(shí)別表中的鍵列,它們被用主鍵(<<PK>>)或外鍵(<<FK>>)原型標(biāo)記。在將外鍵用做主鍵的情況下,組合鍵被標(biāo)記為(<<PFK>>)原型。
鍵代表數(shù)據(jù)的識(shí)別。因此它們是識(shí)別數(shù)據(jù)庫(kù)(所有鏈接都位于數(shù)據(jù)之間)的完整結(jié)構(gòu),以獲得純工件之外的信息所必需的。
索引是支持快速數(shù)據(jù)訪問(wèn)的物理數(shù)據(jù)結(jié)構(gòu)。它完全不改變數(shù)據(jù)的質(zhì)量。
索引在 UML 數(shù)據(jù)建模配置文件中被表示為操作上的原型。
索引和鍵都包含了幾個(gè)列。索引中的列必須有順序。
索引規(guī)格說(shuō)明不但包含索引的列,還包含索引的類型(唯一性等)。
當(dāng)某些因素影響了應(yīng)用程序的性能時(shí),索引的價(jià)值就被體現(xiàn)出來(lái)。索引是首先要注意的地方。
約束是應(yīng)用于數(shù)據(jù)庫(kù)結(jié)構(gòu)的規(guī)則。該規(guī)則可應(yīng)用于列和/或表,并且可能被限制到一個(gè)模式或數(shù)據(jù)庫(kù)。
UML 數(shù)據(jù)建模配置文件中定義了幾種類型的約束,但是,它們作為原型化操作來(lái)實(shí)現(xiàn)。
定義的約束值位于規(guī)格說(shuō)明的細(xì)節(jié)中。約束描述了數(shù)據(jù)庫(kù)的動(dòng)態(tài)行為,而列和表則沒(méi)有描述這些內(nèi)容。
主鍵
主鍵約束定義了表的一個(gè)主鍵。每個(gè)表只能有一個(gè)主鍵。
主鍵約束在 UML 數(shù)據(jù)建模配置文件中使用了原型<<PK>>。
外鍵
外鍵是實(shí)現(xiàn)一個(gè)關(guān)系的約束。該約束總是在子表上實(shí)現(xiàn)的。
外鍵約束在 UML 數(shù)據(jù)建模配置文件中使用了原型<<FK>>。
觸發(fā)器
作為其他活動(dòng)的結(jié)果自動(dòng)被執(zhí)行的一個(gè)活動(dòng)就是一個(gè)觸發(fā)器。它經(jīng)常是數(shù)據(jù)庫(kù)中數(shù)據(jù)修改的副產(chǎn)品,并且大部分情況下保證了數(shù)據(jù)庫(kù)的一致行為。
觸發(fā)器約束在 UML 數(shù)據(jù)建模配置文件中使用了原型<<Trigger>>。
值驗(yàn)證
列中的值可以利用觸發(fā)器驗(yàn)證。觸發(fā)器不但能與固定范圍的值進(jìn)行比較,還能與數(shù)據(jù)庫(kù)中的其他數(shù)據(jù)進(jìn)行比較。
值驗(yàn)證約束在 UML 數(shù)據(jù)建模配置文件中使用了原型<<Check>>。
唯一性
唯一性約束保證了指定列的所有值都是不同的。
唯一性約束在UML數(shù)據(jù)建模配置文件中使用了原型<<Unique>>。
數(shù)據(jù)模型中表之間任意種類的依賴關(guān)系被稱作關(guān)系。
關(guān)系是原型化關(guān)聯(lián)和一組主鍵和外鍵的匯總。每個(gè)關(guān)系都位于一個(gè)父表和一個(gè)子表之間,其中父表必須定義一個(gè)主鍵。子鍵創(chuàng)建了一個(gè)外鍵列和外鍵約束,以滿足父表的要求。
non-identifying 關(guān)聯(lián)代表了兩個(gè)獨(dú)立表之間的關(guān)系。子表的外鍵不包含所有的主鍵列。
一個(gè)識(shí)別關(guān)系是兩個(gè)依賴表間的關(guān)系,其中如果沒(méi)有父表子表就不能存在。父表(本例中為 Person)的所有主鍵在子表(Account)中同時(shí)變成了主鍵列和外鍵列。
一個(gè)關(guān)系有兩個(gè)與之關(guān)聯(lián)的角色。它們定義了與其他表關(guān)聯(lián)的一個(gè)表的角色。可以利用不同角色在兩個(gè)表間指定一個(gè)以上的關(guān)系。
每個(gè)關(guān)系都創(chuàng)建了從父表到子表的遷移鍵。
聯(lián)系客服