數(shù)據(jù)庫的結(jié)構(gòu)(例如表、關(guān)系、視圖和觸發(fā)器)稱為數(shù)據(jù)庫模式??墒褂?SQL 語句創(chuàng)建這些元素并按照所需的方式進(jìn)行排列,但是如果不使用圖形工具,則可能會造成混淆。
PowerDesigner 提供了一種數(shù)據(jù)庫結(jié)構(gòu)的圖形表示。只需繪制新表或輸入信息,即可更好地修改數(shù)據(jù)庫的結(jié)構(gòu)或創(chuàng)建全新的表。在設(shè)計(jì)完成后,PowerDesigner 可生成一個 SQL 腳本以生成新的數(shù)據(jù)庫。
下面的圖示顯示了示例數(shù)據(jù)庫的結(jié)構(gòu),可以使用 PowerDesigner 方便地創(chuàng)建此圖示。
數(shù)據(jù)庫的性能主要取決于設(shè)計(jì)。一般地,應(yīng)將不同類型對象的信息(例如雇員或產(chǎn)品)存儲在單獨(dú)的表中。
可以使用參照來確定這些表之間的關(guān)系,即用一個表中的外鍵來標(biāo)識另一個表中的特定行。參照可以表示多對一和一對多關(guān)系。多對多關(guān)系需要兩個參照和另外一個表。
有關(guān)數(shù)據(jù)庫設(shè)計(jì)的詳細(xì)信息,請參見設(shè)計(jì)數(shù)據(jù)庫。
若要了解 PowerDesigner 的詳細(xì)信息,請單擊 PowerDesigner 主窗口工具欄中的 [Help] 以訪問下面三本書:PowerDesigner General Features Guide、PowerDesigner PDM User's Guide 和 PowerDesigner Report User's Guide。
要獲得更多 PowerDesigner 教程,請打開 PowerDesigner。從 [Help] 菜單中選擇 [Where to Start] > [PDM Getting Started]。此操作可訪問 Physical Data Model Getting Started 一書。
PowerDesigner 可以從用于創(chuàng)建數(shù)據(jù)庫的腳本文件讀取數(shù)據(jù)庫的結(jié)構(gòu)。但是,通常更簡便的方法是:從 PowerDesigner 連接到數(shù)據(jù)庫并使用反向工程特性直接抽取設(shè)計(jì)。
下面的教程將示例數(shù)據(jù)庫作為起點(diǎn)。此教程在闡述 PowerDesigner 時(shí)對示例數(shù)據(jù)庫進(jìn)行了修改,以改進(jìn)示例數(shù)據(jù)庫的設(shè)計(jì)。
當(dāng)前,始終從 product 表中讀取每種產(chǎn)品的價(jià)格。因此,如果更新價(jià)格,就會相應(yīng)地更改以前所有訂單上該產(chǎn)品的銷售價(jià)格。在 sales_order_items 表中添加 unit_price 列,即可解決此問題。這樣,就可以分別存儲每個客戶的實(shí)際銷售價(jià)格。product 表中的價(jià)格記錄當(dāng)前的列表價(jià)格。
啟動 PowerDesigner:
從 [開始] 菜單,選擇 [程序] > [SQL Anywhere 9] > [PowerDesigner 9] > [PowerDesigner]。
此時(shí),就會出現(xiàn) PowerDesigner 主窗口:
PowerDesigner 主窗口包含對象瀏覽器(左側(cè))和輸出窗口(底部)。
從 [File] 菜單中選擇 [New]。
即會出現(xiàn) [New] 對話框。
在 [New] 對話框中,選擇 [Physical Data Model],然后單擊 [OK]。
即會出現(xiàn) [New Physical Data Model] 對話框。
在 [General] 選項(xiàng)卡上,從下拉列表中選擇 [Sybase AS Anywhere 9]。
對剩余選項(xiàng)使用缺省設(shè)置,然后單擊 [OK]。
此時(shí),在瀏覽器和標(biāo)題欄中就會出現(xiàn)模型名稱 PhysicalDataModel_1。
在本節(jié)中,可通過對示例數(shù)據(jù)庫執(zhí)行反向工程,以便給其生成一個物理數(shù)據(jù)模型 (PDM)。
對數(shù)據(jù)庫執(zhí)行反向工程:
單擊 diagram 窗口(PowerDesigner 中心的大窗格)。
從 [Database] 菜單中選擇 [Reverse Engineering Database]。
即會出現(xiàn) [Database Reverse Engineering] 對話框:
確保選中了 [Using an ODBC Data Source],并且數(shù)據(jù)源是 [ASA 9.0 Sample]。
如果未出現(xiàn) [ASA 9.0 Sample],請單擊數(shù)據(jù)源字段右側(cè)的圖標(biāo)。此時(shí),就會出現(xiàn) [連接到 ODBC 數(shù)據(jù)源] 對話框。選擇 [計(jì)算機(jī)數(shù)據(jù)源],然后從下拉列表中選擇 [ASA 9.0 Sample]。輸入用戶 ID DBA 和口令 SQL。單擊 [連接] 以返回到 [Database Reverse Engineering] 對話框。
在 [Database Reverse Engineering] 對話框中,單擊 [OK]。
此時(shí),就會出現(xiàn) [ODBC Reverse Engineering] 對話框:
該對話框的下半部分有 7 個復(fù)選框,用于選擇鍵、索引等。這些都是反向工程選項(xiàng)。確保選中除 [Permissions] 復(fù)選框(缺省值)外的所有選項(xiàng)。還應(yīng)確保已選中所有的表(也是缺省設(shè)置)。
單擊 [OK] 以進(jìn)行數(shù)據(jù)庫反向工程。
示例數(shù)據(jù)庫的圖形表示將出現(xiàn)在圖示窗口中,模型對象將出現(xiàn)在瀏覽器中:
從 [Tools] 菜單中選擇 [Display Preferences] 以查看修改顯示的方式。單擊左側(cè)的每個選項(xiàng)以查看顯示首選項(xiàng)參數(shù)頁。單擊每頁底部的 [Help] 以查看全部信息。
查看圖示??梢允褂?F6 鍵和 F7 鍵放大和縮小圖示以便于查看。
數(shù)據(jù)庫中的每個表均由一個框表示。表的名稱顯示在框的頂部。其下面是列的列表。帶有下劃線的列名是該表主鍵的一部分。每個列的數(shù)據(jù)類型顯示在右側(cè)。在反向工程后,某些表可能會發(fā)生重疊。從 [Symbol] 菜單中,選擇 [Auto-Layout] 重新對其進(jìn)行排列。
這些表之間的引用是用箭頭表示的。這些箭頭指向父表,即包含主鍵的表。在每個標(biāo)識引用的箭頭旁邊有一個等式。
重新排列這些表以便于查看圖示。若要重新排列,請用鼠標(biāo)拖動這些表。引用箭頭自動隨這些表一起移動??赏ㄟ^在單擊時(shí)按下 Shift 鍵來選擇多個對象。
下面就是一種可能的排列方式:
現(xiàn)在,就可以向 sales_order_items 表中添加 unit_price 列了??赏ㄟ^ [Table property] 表訪問列的列表來完成此任務(wù)。
添加列:
選擇 sales_order_items 表。
從 [View] 菜單中選擇 [Properties]。
即會出現(xiàn) [Table Properties] 對話框。
單擊 [Columns] 選項(xiàng)卡。
即會出現(xiàn)列的列表。
添加新列以存儲單價(jià)。
單擊 [Insert a Row] 按鈕。
此時(shí),在行首就會出現(xiàn)一個箭頭,并顯示使用缺省名稱 (Column_6) 的列。
在名稱列中鍵入 unit_price。將此名稱自動作為代碼進(jìn)行復(fù)制。
在 [Data Type] 列,從下拉列表中選擇 [Numeric]。
[Data] 字段可能因太窄而無法查看??梢酝蟿恿械膬蓚?cè)以擴(kuò)展列。
列屬性 P、F 和 M 分別表示 [主鍵]、[外鍵] 和 [強(qiáng)制](解釋如下):
[主鍵] 指定的列的值唯一地標(biāo)識表中的行。
[外鍵] 指定的列取決于另一個表中的主鍵列,并且是從該主鍵列遷移的。
[強(qiáng)制] 要求必須給指定的列賦值。
選擇 [強(qiáng)制],然后單擊 [OK]。
檢查所做的更改對數(shù)據(jù)庫圖示產(chǎn)生的影響。
現(xiàn)在,sales_order_items 表包含一個稱為 unit_price 的新列。
PowerDesigner 還可用于快速檢測新模型中的數(shù)據(jù)庫設(shè)計(jì)錯誤。
檢查新的模式:
從 [Tools] 菜單中選擇 [Check Model]。
此時(shí),就會出現(xiàn) [Check Model Parameters] 對話框??梢允褂萌笔?shù)。
單擊 [確定]。
此時(shí),在 [Result List] 中就會顯示 [Check Model] 的結(jié)果。
在 PowerDesigner 中,將描述數(shù)據(jù)庫設(shè)計(jì)的物理組件(包括表和列)的模型稱為物理數(shù)據(jù)模型 (Physical Data Models, PDM)。PowerDesigner 將這些模型存儲在文件(擴(kuò)展名為 .PDM)中。
保存物理數(shù)據(jù)模型 (PDM):
從 [File] 菜單中選擇 [Save As]。
鍵入文件名 c:\Temp\NewDemo.pdm。
單擊 [Save]。
可以使用 PowerDesigner 生成一個 SQL 腳本,該腳本用于實(shí)施模型的所有組件。然后,使用 SQL 腳本生成一個數(shù)據(jù)庫。
生成 SQL 腳本以新建數(shù)據(jù)庫:
從 [Database] 菜單中選擇 [Generate Database]。
此時(shí),就會出現(xiàn) [Database Generation] 對話框:
在 [Directory] 字段中鍵入 c:\Temp\,并在 [File Name] 字段中鍵入 NewDemo.sql。
確保選中了 [Script Generation]。
單擊 [Database] 選項(xiàng)卡,并確保選中了 [Create Database]。
瀏覽其它選項(xiàng)卡,以查看控制所生成腳本的許多其它屬性的選項(xiàng)。
創(chuàng)建腳本后,就會出現(xiàn) [Result] 對話框。
單擊 [Edit] 以查看腳本。
檢查腳本中是否反映了所做的更改。例如,檢查下面顯示的新 office 表的定義。
/* ========================================= */ /* Table: office */ /* ========================================= */ create table office ( id integer not null default autoincrement check ( id >= 100), name char(15) not null, street char(30) not null, city char(20) not null, state char(2) not null, zip char(5) not null, phone char(10) , fax char(10) , primary key (id) );
完成后,關(guān)閉該對話框:在 [Result] 對話框中,單擊 [Close]。
現(xiàn)在,就可以從 Interactive SQL 新建數(shù)據(jù)庫了。
新建數(shù)據(jù)庫:
啟動 Interactive SQL。
從 [開始] 菜單中,選擇 [程序] > [SQL Anywhere 9] > [Adaptive Server Anywhere] > [Interactive SQL]。
使用 ASA 9.0 Sample ODBC 數(shù)據(jù)源連接到示例數(shù)據(jù)庫。
創(chuàng)建一個空數(shù)據(jù)庫:
執(zhí)行下面的 SQL 語句,用適當(dāng)?shù)哪夸浱娲Z句中的目錄。
CREATE DATABASE 'c:\\Temp\\newdemo.db'
關(guān)閉與示例數(shù)據(jù)庫的連接。
從 [SQL] 菜單中選擇 [斷開連接]。
連接到新的數(shù)據(jù)庫。
從 [SQL] 菜單中選擇 [連接]。
輸入 DBA 作為用戶 ID
輸入 SQL 作為口令
單擊 [數(shù)據(jù)庫] 選項(xiàng)卡,然后在 [數(shù)據(jù)庫文件] 框中輸入新數(shù)據(jù)庫文件的完整路徑和文件名。
使用 read 語句。切記,此語句要求用雙引號將文件名引起來。
執(zhí)行該 SQL 語句:
READ "c:\\Temp\\newdemo.SQL"
可以使用這些基本步驟來修改其它數(shù)據(jù)庫。
此教程僅介紹 PowerDesigner 的一些基本特性。實(shí)際上,它可以處理數(shù)據(jù)庫模式的全部設(shè)計(jì)或修改,其中包括所有的表、視圖、索引、引用、觸發(fā)器和過程。
可以使用其它特性大大簡化大型數(shù)據(jù)庫的設(shè)計(jì)任務(wù)。例如,可以指定域。域包含特定類型的數(shù)據(jù),例如電話號碼。域與某種數(shù)據(jù)類型關(guān)聯(lián),但域更具體一些。例如,可以創(chuàng)建標(biāo)識號域。當(dāng)需要表中的某個標(biāo)識號時(shí),可以將該列與標(biāo)識號域關(guān)聯(lián)起來。同時(shí),自動關(guān)聯(lián)所有與該域關(guān)聯(lián)的屬性和檢查。
域可減少重復(fù)性的定義。這樣,不僅減少了您的工作量,而且還降低了誤用其它類型定義或檢查過程的可能性。不應(yīng)簡單地將列標(biāo)識為一個整數(shù),而是指定該列包含的具體數(shù)據(jù)類型。該數(shù)據(jù)類型的所有實(shí)例共享相同的定義。
有關(guān)詳細(xì)信息,請參見使用域。
業(yè)務(wù)規(guī)則以書面的形式來表達(dá)業(yè)務(wù)運(yùn)營的方式。例如,the order shipped date must be greater than or equal to the order date(訂單交貨日期必須晚于或等于訂單日期)就是一條業(yè)務(wù)規(guī)則。
業(yè)務(wù)規(guī)則共分為四個類別:
定義 表示對象的固有屬性。[定義] 通常用于描述實(shí)體。
事實(shí) 表示肯定或存在。[事實(shí)] 通常用于描述關(guān)系。
校驗(yàn) 是給值設(shè)定的約束。
公式 用于得出值的計(jì)算。
業(yè)務(wù)規(guī)則的使用很方便,因?yàn)樗鼈兣c客戶要求數(shù)據(jù)庫執(zhí)行的任務(wù)直接相關(guān)。通過記錄業(yè)務(wù)規(guī)則并將它們與特定對象關(guān)聯(lián)起來,可以確保數(shù)據(jù)庫執(zhí)行所需的任務(wù)。
posted on 2007-11-07 16:46 liujg 閱讀(217) 評論(0) 編輯 收藏
Powered by: BlogJava Copyright © liujg