PowerDesigner 数据库设计

数据库的结构(例如表、关系、视图和触发器)称为数据库模式。可使用 SQL 语句创建这些元素并按照所需的方式进行排列,但是如果不使用图形工具,则可能会造成混淆。

PowerDesigner 提供了一种数据库结构的图形表示。只需绘制新表或输入信息,即可更好地修改数据库的结构或创建全新的表。在设计完成后,PowerDesigner 可生成一个 SQL 脚本以生成新的数据库。

下面的图示显示了示例数据库的结构,可以使用 PowerDesigner 方便地创建此图示。

 

数据库的性能主要取决于设计。一般地,应将不同类型对象的信息(例如雇员或产品)存储在单独的表中。

可以使用参照来确定这些表之间的关系,即用一个表中的外键来标识另一个表中的特定行。参照可以表示多对一和一对多关系。多对多关系需要两个参照和另外一个表。

有关数据库设计的详细信息,请参见设计数据库

若要了解 PowerDesigner 的详细信息,请单击 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 可以从用于创建数据库的脚本文件读取数据库的结构。但是,通常更简便的方法是:从 PowerDesigner 连接到数据库并使用反向工程特性直接抽取设计。

下面的教程将示例数据库作为起点。此教程在阐述 PowerDesigner 时对示例数据库进行了修改,以改进示例数据库的设计。

当前,始终从 product 表中读取每种产品的价格。因此,如果更新价格,就会相应地更改以前所有订单上该产品的销售价格。在 sales_order_items 表中添加 unit_price 列,即可解决此问题。这样,就可以分别存储每个客户的实际销售价格。product 表中的价格记录当前的列表价格。

启动 PowerDesigner:

  1. 从 [开始] 菜单,选择 [程序]  >  [SQL Anywhere 9]  >  [PowerDesigner 9]  >  [PowerDesigner]。

此时,就会出现 PowerDesigner 主窗口:

 

PowerDesigner 主窗口包含对象浏览器(左侧)和输出窗口(底部)。

  1. 从 [File] 菜单中选择 [New]。

即会出现 [New] 对话框。

  1. 在 [New] 对话框中,选择 [Physical Data Model],然后单击 [OK]。

即会出现 [New Physical Data Model] 对话框。

  1. 在 [General] 选项卡上,从下拉列表中选择 [Sybase AS Anywhere 9]。
  2. 对剩余选项使用缺省设置,然后单击 [OK]。

此时,在浏览器和标题栏中就会出现模型名称 PhysicalDataModel_1。

在本节中,可通过对示例数据库执行反向工程,以便给其生成一个物理数据模型 (PDM)。

对数据库执行反向工程:

  1. 单击 diagram 窗口(PowerDesigner 中心的大窗格)。
  2. 从 [Database] 菜单中选择 [Reverse Engineering Database]。

即会出现 [Database Reverse Engineering] 对话框:

 

  1. 确保选中了 [Using an ODBC Data Source],并且数据源是 [ASA 9.0 Sample]。

如果未出现 [ASA 9.0 Sample],请单击数据源字段右侧的图标。此时,就会出现 [连接到 ODBC 数据源] 对话框。选择 [计算机数据源],然后从下拉列表中选择 [ASA 9.0 Sample]。输入用户 ID DBA 和口令 SQL。单击 [连接] 以返回到 [Database Reverse Engineering] 对话框。

  1. 在 [Database Reverse Engineering] 对话框中,单击 [OK]。

此时,就会出现 [ODBC Reverse Engineering] 对话框:

 

该对话框的下半部分有 7 个复选框,用于选择键、索引等。这些都是反向工程选项。确保选中除 [Permissions] 复选框(缺省值)外的所有选项。还应确保已选中所有的表(也是缺省设置)。

  1. 单击 [OK] 以进行数据库反向工程。

示例数据库的图形表示将出现在图示窗口中,模型对象将出现在浏览器中:

 

  1. 从 [Tools] 菜单中选择 [Display Preferences] 以查看修改显示的方式。单击左侧的每个选项以查看显示首选项参数页。单击每页底部的 [Help] 以查看全部信息。

查看图示。可以使用 F6 键和 F7 键放大和缩小图示以便于查看。

数据库中的每个表均由一个框表示。表的名称显示在框的顶部。其下面是列的列表。带有下划线的列名是该表主键的一部分。每个列的数据类型显示在右侧。在反向工程后,某些表可能会发生重叠。从 [Symbol] 菜单中,选择 [Auto-Layout] 重新对其进行排列。

这些表之间的引用是用箭头表示的。这些箭头指向父表,即包含主键的表。在每个标识引用的箭头旁边有一个等式。

  1. 重新排列这些表以便于查看图示。若要重新排列,请用鼠标拖动这些表。引用箭头自动随这些表一起移动。可通过在单击时按下 Shift 键来选择多个对象。

下面就是一种可能的排列方式:

 

2 课:添加列


现在,就可以向 sales_order_items 表中添加 unit_price 列了。可通过 [Table property] 表访问列的列表来完成此任务。

添加列:

  1. 选择 sales_order_items 表。
  2. 从 [View] 菜单中选择 [Properties]。

即会出现 [Table Properties] 对话框。

 

  1. 单击 [Columns] 选项卡。

即会出现列的列表。

 

  1. 添加新列以存储单价。

单击 [Insert a Row] 按钮。

此时,在行首就会出现一个箭头,并显示使用缺省名称 (Column_6) 的列。

  1. 在名称列中键入 unit_price。将此名称自动作为代码进行复制。

在 [Data Type] 列,从下拉列表中选择 [Numeric]。

[Data] 字段可能因太窄而无法查看。可以拖动列的两侧以扩展列。

  1. 列属性 P、F 和 M 分别表示 [主键]、[外键] 和 [强制](解释如下):

1. [主键] 指定的列的值唯一地标识表中的行。

2. [外键] 指定的列取决于另一个表中的主键列,并且是从该主键列迁移的。

3. [强制] 要求必须给指定的列赋值。

  1. 选择 [强制],然后单击 [OK]。
  2. 检查所做的更改对数据库图示产生的影响。

现在,sales_order_items 表包含一个称为 unit_price 的新列。

3 课:检查所做的工作


PowerDesigner 还可用于快速检测新模型中的数据库设计错误。

检查新的模式:

0. 从 [Tools] 菜单中选择 [Check Model]。

此时,就会出现 [Check Model Parameters] 对话框。可以使用缺省参数。

1. 单击 [确定]。

此时,在 [Result List] 中就会显示 [Check Model] 的结果。

4 课:保存更改并生成数据库


在 PowerDesigner 中,将描述数据库设计的物理组件(包括表和列)的模型称为物理数据模型 (Physical Data Models, PDM)。PowerDesigner 将这些模型存储在文件(扩展名为 .PDM)中。

保存物理数据模型 (PDM):

  1. 从 [File] 菜单中选择 [Save As]。
  2. 键入文件名 c:\Temp\NewDemo.pdm。
  3. 单击 [Save]。

可以使用 PowerDesigner 生成一个 SQL 脚本,该脚本用于实施模型的所有组件。然后,使用 SQL 脚本生成一个数据库。

生成 SQL 脚本以新建数据库:

  1. 从 [Database] 菜单中选择 [Generate Database]。

此时,就会出现 [Database Generation] 对话框:

 

  1. 在 [Directory] 字段中键入 c:\Temp\,并在 [File Name] 字段中键入 NewDemo.sql。
  2. 确保选中了 [Script Generation]。
  3. 单击 [Database] 选项卡,并确保选中了 [Create Database]。

浏览其它选项卡,以查看控制所生成脚本的许多其它属性的选项。

  1. 单击 [确定]。

创建脚本后,就会出现 [Result] 对话框。

  1. 单击 [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)
);

10. 完成后,关闭该对话框:在 [Result] 对话框中,单击 [Close]。

现在,就可以从 Interactive SQL 新建数据库了。

新建数据库:

11. 启动 Interactive SQL。

从 [开始] 菜单中,选择 [程序]  >  [SQL Anywhere 9]  >  [Adaptive Server Anywhere]  >  [Interactive SQL]。

12. 使用 ASA 9.0 Sample ODBC 数据源连接到示例数据库。

13. 创建一个空数据库:

  1. 执行下面的 SQL 语句,用适当的目录替代语句中的目录。

CREATE DATABASE 'c:\\Temp\\newdemo.db'

提示

要在 Interactive SQL 中执行 SQL 语句,请在 [SQL 语句] 窗格中键入或复制该语句,然后按 F5 键。或者,从 [SQL] 菜单中选择 [执行]。

14. 关闭与示例数据库的连接。

从 [SQL] 菜单中选择 [断开连接]。

15. 连接到新的数据库。

从 [SQL] 菜单中选择 [连接]。

  1. 输入 DBA 作为用户 ID
  2. 输入 SQL 作为口令
  3. 单击 [数据库] 选项卡,然后在 [数据库文件] 框中输入新数据库文件的完整路径和文件名。
  4. 单击 [确定]。

16. 使用 read 语句。切记,此语句要求用双引号将文件名引起来。

  1. 执行该 SQL 语句:

READ "c:\\Temp\\newdemo.SQL"

可以使用这些基本步骤来修改其它数据库。

小结


此教程仅介绍 PowerDesigner 的一些基本特性。实际上,它可以处理数据库模式的全部设计或修改,其中包括所有的表、视图、索引、引用、触发器和过程。

可以使用其它特性大大简化大型数据库的设计任务。例如,可以指定。域包含特定类型的数据,例如电话号码。域与某种数据类型关联,但域更具体一些。例如,可以创建标识号域。当需要表中的某个标识号时,可以将该列与标识号域关联起来。同时,自动关联所有与该域关联的属性和检查。

域可减少重复性的定义。这样,不仅减少了您的工作量,而且还降低了误用其它类型定义或检查过程的可能性。不应简单地将列标识为一个整数,而是指定该列包含的具体数据类型。该数据类型的所有实例共享相同的定义。

有关详细信息,请参见使用域

业务规则

业务规则以书面的形式来表达业务运营的方式。例如,the order shipped date must be greater than or equal to the order date(订单交货日期必须晚于或等于订单日期)就是一条业务规则。

业务规则共分为四个类别:

17. 定义    表示对象的固有属性。[定义] 通常用于描述实体。

18. 事实    表示肯定或存在。[事实] 通常用于描述关系。

19. 校验    是给值设定的约束。

20. 公式    用于得出值的计算。

业务规则的使用很方便,因为它们与客户要求数据库执行的任务直接相关。通过记录业务规则并将它们与特定对象关联起来,可以确保数据库执行所需的任务。

 

 

 

 

 

目录(?)[-]

  1. PowerDesigner使用MySQL的auto_increment
  2. PowerDesigner去掉SQL脚本中的双引号
  3. PowerDesigner生成SQL语句时不使用Domain
  4. PowerDesigner中设置Entity的默认字体
  5. PowerDesigner中设置Entity自动调整尺寸大小
  6. 自定义外键命名规则
  7. 如何实现Name和code不自动相等
  8. Power Desienger自增长列的设置
  9. 如何在PowerDesigner下建索引
  10. 如何在PowerDesigner 下检查设计模型
  11. Conceptual Data Model (CDM)与Physical Data Model(PDM)
  12. 使用PowerDesigner生成SQL语句
  13. Warning : table Existence of index 表名
  14. 建立联合主键
  15. 建立外键Foreign Key
  16. 生成数据字典
  17. 由pdm生成建表脚本时,字段超过15字符就发生错误(oracle)
  18. 生成的建表脚本中把对象的双引号去掉
  19. 防止一对一的关系生成两个引用(外键)
  20. 修改报表模板中一些术语的定义
posted @ 2012-11-08 19:57  尼姑哪里跑  阅读(306)  评论(0编辑  收藏  举报