用 Rational Data Architect 设计和开发数据库,第 1 部分:RDA 入门简介和数据库设计
2010-05-13 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備胶绮崝锕傚礈濞嗘挸绀夐柕鍫濇川绾剧晫鈧箍鍎遍幏鎴︾叕椤掑倵鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝懐顦ч柣蹇撶箲閻楁鈧矮绮欏铏规嫚閺屻儱寮板┑鐐板尃閸曨厾褰炬繝鐢靛Т娴硷綁鏁愭径妯绘櫓闂佸憡鎸嗛崪鍐簥闂傚倷娴囬鏍垂鎼淬劌绀冮柨婵嗘閻﹂亶姊婚崒娆掑厡妞ゃ垹锕ら埢宥夊即閵忕姷顔夐梺鎼炲労閸撴瑩鎮橀幎鑺ョ厸闁告劑鍔庢晶鏇犵磼閳ь剟宕橀埞澶哥盎闂婎偄娲ゅù鐑剿囬敃鈧湁婵犲﹤鐗忛悾娲煛鐏炶濡奸柍瑙勫灴瀹曞崬鈻庤箛鎾寸槗缂傚倸鍊烽梽宥夊礉鎼达絽鍨濇い鏍仜妗呴梺鍛婃处閸ㄦ壆绮婚幎鑺ュ€甸柨婵嗙凹缁ㄨ棄霉閻樿崵鐣烘慨濠冩そ濡啫鈽夊▎鎰€烽梺璇插閻噣宕¢幎鑺ュ仒妞ゆ洍鍋撶€规洖鐖奸、妤佸緞鐎n偅鐝┑鐘愁問閸n垳寰婇崜褉鍋撶粭娑樻搐缁犳煡鏌涢妷顔煎闁藉啰鍠栭弻锝夊棘閹稿孩鍠愰梺鑽ゅ枎缂嶅﹪寮诲☉鈶┾偓锕傚箣濠靛洨浜俊鐐€ら崜娆撴偋閸℃稈鈧棃宕橀鍢壯囧箹缁厜鍋撻懠顒€鍤紓鍌氬€风欢锟犲窗濡ゅ懎绠伴柟闂寸劍閸嬧晠鏌i幋锝嗩棄缁绢厸鍋撻梻浣虹帛閸旀洜绮旈棃娴虫盯宕橀鍏兼К闂侀€炲苯澧柕鍥у楠炴帡骞嬪┑鎰磻闁诲氦顫夐幐椋庣矆娓氣偓閸╃偤骞嬮敂钘変汗闂佸湱绮敮鈺傚閳ь剛绱撴担鐟板姢鐟滄壆鍋熼崚鎺戔枎閹惧疇鎽曞┑鐐村灦閻喖鈻介鍫熺厵閻熸瑥瀚慨鍥ㄣ亜閵夛妇绠炴慨濠冩そ閺屽懘鎮欓懠璺侯伃婵犫拃鍌氬祮闁哄瞼鍠栭幖褰掝敃閿濆懐锛撻梻浣瑰缁诲嫰宕戝☉銏犵厴闁瑰濮崑鎾绘晲鎼存ê浜炬い鎾寸⊕濞呭﹪鏌$仦鐣屝f繛纰变邯楠炲繒浠﹂挊澶婅厫闂傚倷鐒﹂惇褰掑磹閺囥垹绠犻柟閭﹀枟椤洟鏌熼幆褏鎽犲┑顖涙尦閺屾盯骞橀弶鎴犵シ闂佸憡鎸稿畷顒勨€旈崘顔嘉ч柛鈩冾殘娴犳悂姊洪懡銈呮毐闁哄懏鐩幃楣冩倻閽樺)銊ф喐婢舵劕纾婚柟鍓х帛閺呮煡骞栫划鐟板⒉闁诲繐绉瑰铏圭磼濡闉嶅┑鐐插级閿曘垺淇婇悽绋跨妞ゆ牗姘ㄩ悿鈧梻鍌氬€搁悧濠勭矙閹邦喛濮抽柤娴嬫櫇绾捐棄霉閿濆牊顥夐柣鎾村姈閹便劌螣缁嬪灝顬嬪┑鈥冲级閸旀瑩鐛Ο鍏煎珰闁肩⒈鍓﹀Σ浼存⒒娴gǹ鏆遍柟纰卞亰瀹曟劖绻濆В绋挎喘瀵埖鎯旈幘瀛樻澑婵$偑鍊栧濠氬Υ鐎n亶鍟呴柕澶涜礋娴滄粍銇勯幘璺轰粶婵℃彃顭烽弻锝夋晲閸パ冨箣濡ょ姷鍋炵敮锟犵嵁鐎n喖绫嶉柍褜鍓熼幃妤佺節濮橆厸鎷洪柣鐔哥懃鐎氼參宕曞Δ鍛厱婵☆垵銆€閸嬫捇鎮㈤幓鎺戠阀濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻戦妵鍕箻閸楃偟浠肩紒鐐劤椤兘寮婚悢鐓庣鐟滃繒鏁☉銏$厓闂佸灝顑呴悘锕傛煏閸パ冾伃妤犵偞甯″畷鍗烆渻閹屾缂傚倸鍊搁崐椋庣矆娓氣偓钘濋梺顒€绉撮弸浣糕攽閻樿櫕鐨戠€规挷绶氶弻娑㈠焺閸愵亖濮囬梺绋匡功閸忔﹢寮诲☉妯锋斀闁糕剝顨忔导鈧俊鐐€栧褰掑礉閺囥垹鐓橀柟杈鹃檮閸婂鏌涢妷銏℃珖閺嶏繝姊绘担鍛婂暈闁圭ǹ顭烽幃鐑芥晜閻e备鏀虫繝鐢靛Т濞诧箓宕甸崘顔界厓闁告繂瀚弳鐔兼煥濞戞瑧鐭掓慨濠囩細閵囨劙骞掗幋婊冩瀳闂備礁鎲¢悷銉︻殽閹间礁鐓濋柟鐐灱閸亪鏌涢銈呮灁闁告ɑ鎮傞弻锝堢疀閺囩偘鎴风紒缁㈠幖閻栫厧鐣烽幋锕€绠婚悹鍥皺閻も偓濠电偠鎻徊浠嬪箟閿熺姴纾规い鏍仦閳锋垹鐥鐐村櫣濞存粌缍婇幃璺衡槈閺嵮冨Е闂佺硶鏂侀崑鎾愁渻閵堝棗绗掗柛鐕佸亰閹啫煤椤忓懐鍘告繛杈剧到濠€杈ㄦ櫠椤忓牊鐓冮悷娆忓閻忔挳鏌熼鐣屾噰鐎殿喖鐖奸獮瀣偐鏉堫煈鏁囬梻鍌氬€风粈浣革耿鏉堛劎浠氶梻浣侯攰婵倗鍒掓惔銊ョ闁圭儤顨呯猾宥夋煕椤愩倕鏋庡ù鐘烘缁辨挻鎷呴崜鎻掑壍濡炪倖娲樻繛濠囧极閸愵喖纾兼繛鎴炶壘楠炲牓姊绘担鍛婃儓婵炲眰鍨藉畷婵嗙暆閸曨剙鈧爼鏌eΟ鑲╁笡闁绘挻娲熼弻鐔兼嚋椤掆偓婵$厧霉濠婂嫬鍔ら柍瑙勫灴閺佸秹宕熼鈩冩線闂備胶枪閿曘儵鎮ч悩鑼殾婵犻潧顑嗛弲婵嬫煃瑜滈崜鐔煎灳閿曞倸閿ゆ俊銈傚亾闁绘帒鐏氶妵鍕箳瀹ュ牆鍘$紓浣哄Т婢т粙鍩€椤掆偓閸樻粓宕戦幘鏂ユ斀闁绘ǹ浜粣鏃堟煕鐎n偒娈旈柍瑙勫灴椤㈡瑧娑甸悜鐣屽弽婵犵數鍋涢幏鎴犲緤閸啣锝夊箛閺夎法顔婇梺鐟板暱绾绢參宕伴幘璇茬闁绘ḿ绮崵鎴︽煠缁嬭法浠涙慨锝嗗姍濮婂宕掑顑藉亾閻戣姤鍤勯柤鍝ユ暩娴犳碍绻濋悽闈涗粶妞ゆ洦鍙冨畷妤€螣娓氼垰娈ㄥ銈嗗姂閸婃牜鈧碍姘ㄩ埀顒傛嚀婢瑰﹪宕伴弽褉鏋旈柕濠忓缁♀偓闂佹眹鍨藉ḿ褎鐗庣紓浣哄亾濠㈡ḿ绮旈悷閭﹀殨闁哄被鍎辩粻鐢告煙閻戞ḿ绠橀柛鐐垫暬閺岋綁鎮╅悜姗嗕哗闁诲繐绻堥崝宀勵敊韫囨稑唯鐟滃宕戦幘鑸靛枂闁告洦鍓欑喊宥呪攽閳藉棗浜濈紒璇插€块敐鐐剁疀濞戞瑦鍎梺闈╁瘜閸橀箖鏁嶅⿰鍐f斀闁宠棄妫楅悘鐘绘煙绾板崬浜伴柨婵堝仜椤撳ジ宕堕埡鍐跨闯濠电偠鎻紞渚€藟閹捐绀夌€广儱顦伴悡娆戠磼鐎n亞浠㈤柡鍡涗憾閺岋綁鏁愰崶褍骞嬪Δ鐘靛仜椤戝寮崘顔肩劦妞ゆ帒鍊绘稉宥呪攽閻樺磭顣查柛瀣剁秮閺屾盯濡烽幋婵嗘殶濡ょ姴娲幃妤冩喆閸曨剙纰嶇紓浣割槹閹告娊鍨鹃弮鍫濈妞ゆ柨妲堣閺屾盯鍩勯崗鐙€浜Λ鍕吋閸モ晝锛濇繛杈剧到婢瑰﹪宕曢幇鐗堢厱闁靛ǹ鍎遍。宕囩磼椤旂⒈鍎忔い鎾冲悑瀵板嫮鈧綆浜栭崑鎾绘煥鐎c劋绨婚梺鐟版惈缁夊爼藝閿旈敮鍋撳▓鍨灈闁诲繑绻堥崺鐐哄箣閿曗偓閻擄繝鏌涢埄鍐炬畼濞寸媭鍨跺娲川婵犲海鍔堕梺鍛婃处閸欏骸煤閸涘﹣绻嗛柕鍫濈箳閸掍即鏌涢悤浣哥仸鐎规洘鍔欏畷褰掝敃閿濆懎浼庢繝纰樻閸ㄦ娊宕㈣缁傚秵銈i崘鈺佲偓鍨叏濡厧浜鹃悗姘炬嫹

开始之前
预备知识
需要你了解关系数据库基本知识,另外你最好了解 Eclipse。
目标
在学完本教程之后,你将能够使用 RDA 来创建数据库的逻辑数据模型和物理数据模型。
必要条件
本教程适用于数据库设计开发人员以及程序员。
系统要求
您需要安装 Rational Data Architect 7.0.0.0。您可以下载一个 Rational Data Architect 7.0.0.0 试用版。
Rational Data Architect 简介
RDA 简介
IBM Rational Data Architect (RDA) 是一款企业数据建模和集成设计开发工具。它提供丰富的功能帮助数据架构师进行多种数据库产品的建模和集成设计工作,并且帮助开发人员开发和调试数据库应用。它的主要功能有:
数据库逻辑和物理模型建模
数据源发现和数据源结构的可视化浏览
多数据源间关系的发现和映射
两数据源结构的比较和同步
分析模型和数据源的标准兼容性
数据库应用开发和调试
新版本 (V7) 更加强了与 IBM Rational Software Architect, Eclipse 3.2 和 IBM Information Server 的集成;另外还增加了对 XML, DB2 V9, Sybase, Informix 以及 MySQL 的支持。
它支持的数据库种类有:
DB2 UDB V7.2, V8.1, V8.2, V9.1
DB2 UDB iSeries V5R2, V5R3, V5R4
DB2 zSeries V7, V8 (Compatibility Mode), V8 (New-Function Mode)
Oracle V8, V9, V10
SQL Server 2000, 2005
Informix V9.2, V9.3, V9.4, V10.0
Cloudscape V5.1
Derby V10.0, V10.1
MySql V4.0, V4.1
Sybase V12.x, V15.0
还支持 Generic JDBC 1.0。
由于 RDA 基于 Eclipse 3.2,所以设计和开发人员很容易上手,用不着花大量的时间去学习如何操作。
例子
本教程将围绕一个 Order 例子(示意图如下),讲述如何利用 RDA 进行逻辑和物理建模。
图 1: Order 例子示意图
例子的最终 RDA 项目 (project) 被打包成一个 OrderDesign.zip 文件,可以在本教程的 下载部分 下载。
准备工作
打开 RDA V7,选择一个新的工作区 (Workspace),关闭欢迎视图,并切换到 Data 透视图 (Window -> Open Perspective -> Data),这是我们主要用的透视图。
图 2: Data 透视图
逻辑数据建模
在这一节里,我们将要创建 Order 的逻辑数据模型。
逻辑数据模型 (Logical data model) 是一种不依赖于特定数据库的用来表现数据结构以及数据之间关系的模型,它的特点是易于被人阅读和理解。一个逻辑数据模型包含若干包 (Package),每个包包含若干实体 (Entity),实体包含若干属性 (Attribute) 和与其它实体的关系 (Relationship),属性可能包含主键,外键或其它约束 (Constraint),而关系也有多种类型,如标识性的 (Identifying),非标识性的 (Non-Identifying) 以及多对多 (Many To Many)。
逻辑数据模型还可以包含或引用一到多个域模型 (domain model) 或词汇表 (glossary model)。域模型是用来定义企业数据建模所用到的各种数据类型,如身份证号,性别,身高等。合理的运用域模型可以提高数据类型的可重用性以及可维护性。词汇表可以用来定义逻辑或物理数据模型中对象的命名标准。
下面我们首先创建一个数据设计项目 (Data Design Project),用来盛装我们的模型文件;然后创建一个域模型来定义一些可重用的数据类型;最后创建我们的 Order 逻辑数据模型。
创建数据设计项目
右键点击 Data Project Explorer 中的空白部分,选择 New -> Data Design Project(如果菜单里没有,就选择 Other…,然后选择 Data -> Data Design Project)。
图 3: 开始创建数据设计项目
在弹出的对话框里输入 Project Name 的值 OrderDesign,然后点击 Finish。
图 4: 在弹出的对话框里输入 Project Name 的值
Data Design Project 创建了。
图 5: Data Design Project 创建了。
创建域模型
在 Data Project Explorer 视图里,右键单击 OrderDesign 项目的 Data Models 文件夹,选择 New -> Domain Model。
图 6: 开始创建域模型
在弹出的对话框里指定域模型的文件名 OrderDomain,并且勾选小方框。
图 7: 指定域模型的文件名
点击 Finish,一个空的域模型便生成和打开了。
图 8: 空的域模型生成完毕
右键单击 Package1,选择 Add Data Object -> Atomic Domain。
图 9: 增加 Atomic Domain
命名这个 Atomic Domain 为 Money,在它的属性视图 (Properties View) 中,指定它的 Base Type 为 DECIMAL,Precision 为 10,以及 Scale 为 2,然后右键点击 Data Project Explorer 中的 OrderDomain.ddm 文件,选择 Save 来保存更改。
图 10: 设置 Atomic Domain
我们定义了一个 Money 数据类型,它是一个十进制数,精度为 10,保留 2 位小数。下面同样的我们右键单击 Package1,选择 Add Data Object -> Atomic Domain 生成一个 Percent 数据类型,设置它为十进制数,精度为 2,没有小数位,并且保存 OrderDomain.ddm 的更改。
图 11: 定义一个 Money 数据类型
以同样的方法,再定义一个 SSN(Social Security Number) 数据类型,一个长为 18 的字符型。
图 12: 再定义一个 SSN(Social Security Number) 数据类型
我们将要在接下来的逻辑数据模型中用到这些数据类型。
创建逻辑数据模型
创建实体 (Entity)
右键单击 Data Models 文件夹,选择 New -> Logical Data Model。
图 13: 开始创建逻辑数据模型
在弹出的对话框里,指定文件名为 OrderLogical。
图 14: 指定文件名为 OrderLogical
单击 Finish,从而生成并打开一个空的逻辑数据模型。
图 15: 生成并打开一个空的逻辑数据模型
这个逻辑数据模型中包含一个默认生成的包 Package1,这个包里目前没有实体,只有一个空的图表 Diagram1,我们将要在 Diagram1 上绘制我们的 Order 模型。虽然 Outline 视图和 Palette 栏都是很好用的工具,但我们不打算在我们的例子里用到它们,所以暂时先关闭它们。
单击 Diagram1 的空白部分并点选弹出的小蓝方块生成一个实体,命名它为 Order。
图 16: 生成一个实体
鼠标选中 Order 实体,会出现一个小方框,里面有两个按钮,选择钥匙形状的按钮,生成主键,命名为 Order ID。
图 17: 命名为 Order ID
在 Order ID 的属性视图里,选择 Type 标签来设置类型。单击 Data Type 右边的’…’按钮,在弹出的对话框里选择 Predefined Data Types -> INTEGER。
图 18: 选择 Type 标签来设置类型
单击 OK 后,再勾选 Surrogate Key 复选框 (Primary Key 和 Required 复选框对主键是默认选中的 )。
图 19: 勾选 Surrogate Key 复选框
为了清楚起见,我们单击 Diagram1 的空白处,在属性视图里选择 Filters 标签,然后勾选 Show data types 复选框,这样我们就能在 Diagram1 里看见实体属性(包括主外键)的数据类型了。
图 20: 查看实体属性(包括主外键)的数据类型
鼠标选中 Order 实体,在弹出的小方框内选择第二个按钮,生成一个属性 (Attribute),命名它为 Submit Date。
图 21: 生成一个属性
在属性视图里指定 Submit Date 的 Data Type 为 TIMESTAMP,并且勾选 Required 复选框。
图 22: 指定 Submit Date 的 Data Type 为 TIMESTAMP
接下来,再在 Order 实体上加一个属性 Total Price,这次我们指定它的 Data Type 为我们之前在域模型里定义的 Money。
图 23: 在 Order 实体上加一个属性 Total Price
单击 OK 之后,再勾选 Required 复选框。
图 24: 勾选 Required 复选框
相似的,我们再在 Order 实体上增加一个属性 Tax Rate,设置它的 Data Type 为 Percent( 在我们的域模型里 ),并勾选 Required 复选框。
图 25: 再在 Order 实体上增加一个属性 Tax Rate
此时右键单击 OrderLogical.ldm 并选择 Save 来保存所做的更改。
之后,请按照下表创建其他的实体。
Entity | Attribute | Type | |||
Data Type | Primary Key | Required | Surrogate Key | ||
Order | Order ID | INTEGER | x | x | x |
Submit Date | TIMESTAMP | x | |||
Total Price | MONEY | x | |||
Tax Rate | PERCENT | x | |||
Customer | Customer ID | INTEGER | x | x | x |
Social Security Number | SSN | ||||
Name | VARCHAR(100) | x | |||
Phone Number | VARCHAR(50) | x | |||
Address | VARCHAR(300) | x | |||
Line Item | Line Item Sequence | INTEGER | x | x | |
Number Ordered | INTEGER | x | |||
Item | Item Number | INTEGER | x | x | x |
Name | VARCHAR(200) | x | |||
Description | VARCHAR(1000) | ||||
Unit Price | MONEY | x | |||
Product | Product Code | VARCHAR(300) | x | ||
Service | Labor Hour | INTEGER | x |
最终结果是这样的:
图 26: 最终结果
创建实体间的关系 (Relationship)
实体间的关系有两种:外键 (Foreign Key) 关系和继承 (Generalization) 关系。
首先我们创建 Customer 和 Order 实体之间的外键关系。鼠标指向 Customer 实体,会出现两个箭头,托拽指向外的箭头至 Order 实体,在弹出的菜单里选择 Create Non-Identifying Mandatory Foreign Key Relationship。
图 27: 创建 Customer 和 Order 实体之间的外键关系
创建出的关系如下图所示
图 28: 创建出的关系图
这个关系在 Diagram1 中的标示线右端是一条竖线,左端是一个分叉加一个圆圈,这表明一个 Customer 对应 0 到多个 Order。在属性视图的 Type 标签里可以看到这个关系的类型信息。一个外键关系有以下这些类型属性:
子实体 (Child Entity) 和父实体 (Parent Entity),这里分别为 Order 和 Customer。
Relationship Type:
Identifying: 子实体的主键依赖于父实体的主键,即子实体的主键定义中包含父实体的主键定义,作为关联父实体的外键。你可以在属性视图中把 Non-Identifying 改为 Identifying 看看 Order 实体有什么变化。Identifying 限定父实体在关系中有且只有一个。
Non-Identifying: 子实体的主键独立于父实体的主键,但子实体中需要有外键关联父实体,这里你可以看到 Order 实体中加入了一个 Customer ID 外键。Non-Identifying 限定父实体在关系中最多只有一个。
Many To Many: 子实体和父实体相互独立,它们之间是多对多的关系。
Existence:
Optional: 关系中父实体可以有 0 个或更多。
Mandatory: 关系中父实体至少有一个。
Cardinality: 关系中子实体的个数
当一个外键关系被创建的时候,会自动加上子实体的 Verb,它的默认值为 Verb1,如图 30 Diagram1 中所示。我们单击 Verb1 修改它为 is placed by。你还可以通过关系的属性视图的 Details 标签来为父实体加上 Verb。
图 29: 当一个外键关系被创建的时候,会自动加上子实体的Verb。
下面我们创建 Order 和 Line Item 实体之间的外键关系。这回我们希望 Order 作为父实体,并且希望 Order 能 Identify Line Item(即 Line Item 的主键定义中包括 Order 的主键)所以鼠标选中 Order 实体,托拽向外的箭头至 Line Item 实体,在弹出的菜单里选择 Create Identifying Foreign Key Relationship。
图 30: 创建 Order 和 Line Item 实体之间的外键关系
关系生成后,我们删除子实体 Line Item 的 Verb,并为父实体 Order 加上 Verb ‘contains’。
图 31: 删除子实体 Line Item 的 Verb,并为父实体 Order 加上 Verb ‘contains’。
你可以看到子实体 Line Item 的主键定义中加入了一个 Order ID 属性,作为关联父实体 Order 的外键。
按照同样的步骤,我们继续创建 Item 实体(父)和 Line Item 实体(子)之间的外键关系,这个关系的类型是 Non-Identifying Mandatory,我们同时设置 Line Item 的 Verb 为 is described by。
图 32: 创建 Item 实体(父)和 Line Item 实体(子)之间的外键关系
接下来,我们创建 Product 和 Item 之间的关系,这是一个继承关系,因为 Product 是 Item 的一种。鼠标选中 Product 实体,托拽向外的箭头至 Item 实体,在弹出的菜单中选择 Create Generalization。
图 33: 创建 Product 和 Item 之间的关系
继承关系是一种比较简洁的关系。在继承关系中,没有子实体和父实体这样的概念,取而代之的是子类型 (Subtype) 和父类型 (Supertype),这里分别为 Product 和 Item,同时也没有那么多相关的属性(如 Identifying 等)。但你可以看到,Item 实体的主键被加到了 Product 实体中,有点类似于外键关系中的 Identifying。
我们以同样的步骤创建 Labor 和 Item 之间的继承关系,然后保存一下 OrderLogical.ldm。
图 34: 创建 Labor 和 Item 之间的继承关系
至此,我们完成了逻辑数据建模,得到了一张非常漂亮的图表,不是吗?如果你想把这张图表 (Diagram1) 打印出来与大家分享,仅仅需要用鼠标选中这张图表,然后从菜单栏里选择 File -> Print Preview 来预览一下,没问题后选择 File -> Print…或点击工具栏里(这里是第一排)的 Print 按钮来打印图表。
关闭所有打开的编辑器 (Editor)。
生成物理数据模型
物理数据模型
物理数据模型 (Physical data model) 是一种特定于某数据库(如 DB2)的模型,它描述该数据库中的数据对象(如表,字段等)和它们之间的关系。物理数据模型可以由逻辑数据模型来生成,而它也可以用来生成可部署的 DDL。
下面我们基于上一节中创建的逻辑数据模型,首先创建一个词汇表,用来规定逻辑数据模型中各对象的名字在物理数据模型中的短名,然后再生成 DB2 V9.1 物理数据模型。之所以要用短名,是因为 DB2,像许多数据库产品一样,对数据库对象名字的长度有一定的限制。
创建词汇表
在 Data Project Explorer 中,鼠标右键点击 Order Design 项目的 Data Models 文件夹,从上下文菜单中选择 New -> Glossary Model,弹出 New Glossary Model 对话框,输入词汇表的文件名 OrderGlossary。
图 35: 输入词汇表的文件名 OrderGlossary
点击 Finish,一个空的词汇表便生成了。
图 36: 生成一个空的词汇表
可以看到,一个空的 Glossary1 自动生成并在词汇表编辑器中打开了。
在词汇表编辑器的 Contained Words 区块里,点击 Create New Word 按钮添加一个单词 (Word),输入它的 Name ‘Address’, Abbreviation ‘ADR’,选择它的 Type ‘PRIME’,其它列保持默认值,单词 Address 便生成好了。按照同样的步骤,把下表中的单词全部添加到 Glossary1 中。
Name | Abbreviation | Name | Abbreviation |
Address | ADR | Ordered | ODD |
Code | CD | Phone | PHO |
Customer | CST | Price | PRC |
Date | DAT | Product | PRD |
Description | DSC | Rate | RAT |
Hour | HUR | Security | SEC |
Item | ITM | Sequence | SEQ |
Labor | LBR | Service | SRV |
Line | LIN | Social | SOC |
Name | NAM | Submit | SBT |
Number | NUM | Total | TOL |
Order | ORD | Unit | UNT |
结果是这样的:
图 37: 结果
右键单击 Data Project Explorer 中的 OrderGlossary.ndm,选择 Save 保存这个词汇表,然后关闭词汇表编辑器。
生成物理数据模型
在 Data Project Explorer 中,用鼠标选中 OrderLogical.ldm,然后从菜单栏选择 Data -> Transform -> Physical Data Model,或者直接点击工具栏上的 Transform To Physical Data Model 按钮,从而打开 Transform To Physical Data Model 向导。
图 38: 打开 Transform To Physical Data Model 向导
点击 Next,输入逻辑数据模型的 File name ‘OrderPhysical’,选择 Database 为 DB2 UDB,选择 Version 为 V9.1。
图 39: 输入逻辑数据模型的 File name,选择 Database。
点击 Next,输入 Schema name ‘Order’,其他输入项保持默认值。
图 40: 输入 Schema name
点击 Next,然后点击 Finish,物理数据模型 OrderPhysical.dbm 便生成了。
图 41: 物理数据模型生成完毕
我们从 Data Project Explorer 中可以看到,OrderPhysical.dbm 中包含一个 Database,其中又包含一个 Order schema,在这个 schema 下面有相对应 OrderLogical.ldm 中各实体而生成的一系列表 (Table),还有一个图表 Diagram1 用来显示这些表的结构和它们之间的关系。Diagram1 已经在图表编辑器中被打开了,同时被打开的还有所有和 OrderPhysical.dbm 相关的模型和图表。
从 Diagram1 中可以清楚地看到,我们在逻辑数据模型中创建的各种对象已经被转换成 DB2 数据库的相应对象,而且对象名变成了短名,比如 Order 实体被转换成了 ORD 表,Order ID 主键被转换成了 ORD_ID 主键,这得益于我们之前创建的词汇表。
用鼠标在 Diagram1 中选择 ORD_ID 主键,并在属性试图中选择 Type 标签,我们可以看到 ORD_ID 的详细信息。
图 42: ORD_ID 的详细信息
值得注意的是三个 Properties: Primary Key, Not Null, Identity,它们都被打上了勾,其实它们对应的是逻辑数据模型(图 21)中所示的 Primary Key, Required 和 Surrogate Key。
这个物理数据模型是不是也很漂亮?你同样也可以把它打印出来与同事分享。
总结
本教程介绍了用 RDA 进行数据库设计的基本知识和步骤。RDA 的功能非常强大,可以进行非常复杂的数据库集成,分析和设计,是数据架构师,数据分析师以及软件工程师的得力助手。
本文示例源代码或素材下载
- ››DataGrid中CheckBox绑定bool属性来进行选中判断
- ››data/data/目录下的私有数据
- ››Rational Insight 与 Rational Team Concert 集成...
- ››Data Web Services:访问IBM数据库服务器的新方式...
- ››Rational开发过程
- ››datagridview checkbox控件
- ››DataGridView表尾统计控件3
- ››DataReader与DataSet的区别
- ››data/tmp等文件夹777检测属性不通过的解决方法
- ››DataSet导出到Excel比较完整的解决方案(一)--客...
- ››DataSet导出到Excel比较完整的解决方案(二)--服...
- ››DataSet导出到Excel比较完整的解决方案(二)--服...
更多精彩
赞助商链接