賀星河2006-4-1
首先感謝好友陳海華的幫助,在我都要忘記這些步驟的時候給我提示,寫這樣一個教程,既是給自己一個參考,同時希望也能給大家帶來一些方便。
這裡以MS SQL Server2000中已有的一個Northwind庫為例,我們命名新的資料庫名為NorthwindRose;我們只挑其中的兩個表Customers和Employees做範例,另外我們再新建一個Card表,來建立表間關係,其他依此類推;前提當然是你已經安裝了Rose 2003和SQL Server2000,OK,我們開始
注:對文章中提到的一些概念,如模式、表空間,請參考書《UML資料庫設計應用》 ,人民郵電出版社出版
先看最終效果
圖一、SQLServer2000中的關係圖
圖二、Rose2003中的關係圖
第一步:在Rose2003中新建一個MDL文檔,命名為Northwind.mdl
第二步:展開Componet View,New一個DataBase,命名為NorthwindRose,這就是會出現在SQLServer中的新函式庫名,這裡可以注意到,Rose自動在“Logical View”中新建了兩個套件“Global Data Types”以及“Schemas”
圖三、新建DataBase
第三步:右鍵選取“NorthwindRose”,開啟“Open Specification”,選擇Target為“Micfosoft SQL Server2000.x”,如果要匯入到別的類型的資料庫,同樣可以選擇,目前我還沒有試過,歡迎大家寫其他各種版本的參考手冊
圖四、選擇目標資料庫類型
第四步:新建NorthwindRose的表空間,右鍵開啟“NorthwindRose”-“Data Modeler”-“New”-“Tablespace”,一般情況下,請把錶空間命名成“PRIMARY”,範例裡我將表空間命名為NorthwindSpace,這裡待會還要重點講一下,因為導入SQLServer2000的時候可不是隨便什麼表空間名都可以的,必須與SQLServer中的「文件組」中的項目相對應。
圖五、新建表空間
步驟五:右鍵選取“Logical View”中的“Schemas”,新建一個Schema,我在這裡命名為Schema_Actor,大家可以隨意命名,自己理解就行;
圖六、建立一個模式
第六步:右鍵開啟“Schema Actor”,新建一個Data Model Diagram,取名為Main,雙擊這個Main圖標,我們可以看到工具列的變化,如下圖
圖七、建立資料模型視圖,並雙擊打開,出現新的Toolbar
第七步:右鍵開啟"Schema_Actor"的“Open Specification”,將DataBase選擇為"NorthwindRose",表示從屬關係,同時新建一個Table
圖八、在模式下新建表格
第八步:在模式「Schema_Actor」下新建三個表Card、Customers和Employees,這裡我以建立Card表為例,介紹怎麼在Rose2003中建立表格,以及如何設定主鍵、選擇資料類型以及資料長度等
1.將工具列的「Table」拖曳放入Main資料視圖,出現T_5表格
2、雙擊T_5表格,設定表格參數將Name設定為Card,選擇Tablespace為NotrhwindSpace
3.選擇“Columns”,右鍵空白區域選擇“Insert”插入新列
4、編輯新建的列屬性,將Name設定為CardID,註解為卡片的ID,主鍵
5.選擇「Type」設定CardID的資料類型和長度,並設定成主鍵
6.同樣建立一個名為CardType的列設定資料類型為nvarchar,長度為10
第九步:模仿第八步驟提到的方法,建立Customers表和Employees表,並使用Toolbar中的Identifying Relationship和Non-identifying Relationship兩個工具建立三個表之間的關係,Identifying Relationship表示主外鍵關係,拖曳方向應該是從父表指向子表,下圖中的Card表為父表,Customers和Employees表為子表,CardID為其他兩個表的主鍵和外鍵;Non-identifying Relationship則只是建立外鍵關係
注意:先選取工具,然後選擇Parent表,拖曳連線指向子表即可
圖十二:建好後的表關係圖
建立好表關係之後,就可以導入資料庫了,請按照以下步驟進行操作
第十步:打開SQLServer的“企業管理器”,新建一個名為“NorthwindRose”的資料庫,與Rose中的DB同名,打開屬性,在“文件組”一欄加上“NorthwindSpace”,這裡就是對應Rose中的Tablespace
圖十三、Tablespace和檔案群組的關係
第十一步:右鍵開啟“NorthwindRose”,並選擇“Forward Engineer”,點擊“下一步”,選擇想匯入的部分,再“下一步”,選擇“Execute” ,填入SQLServer的登陸帳號密碼,選擇剛才建立的「NorthwindRose」資料庫,選擇下一步匯入
圖十四、匯入程序
檢查一下SQLServer2000,應該可以看到表格都已經自動建立好了,如果匯入不成功,基本上是以下幾個原因:
1、 在建立表格的時候,沒有選擇對應的Tablespace
2、 Rose中的Tablespace在SQLServer2000中的檔案群組中找不到對應項
圖十五、導入後的表格結構
到這裡,似乎一切都很順利應該成功了,我們試著在Card表裡添加一條數據看看,會出現如下錯誤提示:
圖十六、新建資料時候的錯誤
可以看出,我們自己命名的「NorthwindSpace」的表空間是有問題的,這時候我們還是把Rose2003的Tablespace改為「PRIMARY」;重新導入,再試試看。重新導入之前,要先把NorthwindRose庫裡的表先刪除。最後可以看到一個可以使用的函式庫了
好的,下次再寫寫Rose2003和SQLServer的資料視圖、預存程序匯入以及如何保持兩者同步