[转帖]使用 PowerDesigner 设计数据库(http://www.ianywhere.com/上的例子)
<p>数据库的结构(例如表、关系、视图和触发器)称为数据库<strong>模式</strong>。可使用 SQL 语句创建这些元素并按照所需的方式进行排列,但是如果不使用图形工具,则可能会造成混淆。</p><p>PowerDesigner 提供了一种数据库结构的图形表示。只需绘制新表或输入信息,即可更好地修改数据库的结构或创建全新的表。在设计完成后,PowerDesigner 可生成一个 SQL 脚本以生成新的数据库。</p><p>下面的图示显示了示例数据库的结构,可以使用 PowerDesigner 方便地创建此图示。</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/asademo.gif" scriptwindow46openthis46src="" style="WIDTH: 524px; CURSOR: pointer; ZOOM: 130%;" alt=""/><br/><p>数据库的性能主要取决于设计。一般地,应将不同类型对象的信息(例如雇员或产品)存储在单独的表中。</p><p>可以使用参照来确定这些表之间的关系,即用一个表中的外键来标识另一个表中的特定行。参照可以表示多对一和一对多关系。多对多关系需要两个参照和另外一个表。</p><p>有关数据库设计的详细信息,请参见<a href="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbugzh9/00000008.htm" target="_blank"><font color="#000000">设计数据库</font></a>。</p><p>若要了解 PowerDesigner 的详细信息,请单击 PowerDesigner 主窗口工具栏中的 以访问下面三本书:<i>PowerDesigner General Features Guide</i>、<i>PowerDesigner PDM User's Guide</i> 和 <i>PowerDesigner Report User's Guide</i>。</p><p>要获得更多 PowerDesigner 教程,请打开 PowerDesigner。从 菜单中选择 > 。此操作可访问 <i>Physical Data Model Getting Started</i> 一书。</p><p>PowerDesigner 可以从用于创建数据库的脚本文件读取数据库的结构。但是,通常更简便的方法是:从 PowerDesigner 连接到数据库并使用反向工程特性直接抽取设计。</p><p>下面的教程将示例数据库作为起点。此教程在阐述 PowerDesigner 时对示例数据库进行了修改,以改进示例数据库的设计。</p><p>当前,始终从 product 表中读取每种产品的价格。因此,如果更新价格,就会相应地更改以前所有订单上该产品的销售价格。在 sales_order_items 表中添加 unit_price 列,即可解决此问题。这样,就可以分别存储每个客户的实际销售价格。product 表中的价格记录当前的列表价格。</p><p>启动 PowerDesigner:</p><ol><li><p>从 [开始] 菜单,选择 [程序] > > > 。</p><p>此时,就会出现 PowerDesigner 主窗口:</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/modeler0.gif" scriptwindow46openthis46src="" style="WIDTH: 524px; CURSOR: pointer;" alt=""/>
<br/><p>PowerDesigner 主窗口包含对象浏览器(左侧)和输出窗口(底部)。</p></li><li><p>从 菜单中选择 。</p><p>即会出现 对话框。</p></li><li><p>在 对话框中,选择 ,然后单击 。</p><p>即会出现 对话框。</p></li><li><p>在 选项卡上,从下拉列表中选择 。</p></li><li><p>对剩余选项使用缺省设置,然后单击 。 </p><p>此时,在浏览器和标题栏中就会出现模型名称 PhysicalDataModel_1。</p><p>在本节中,可通过对示例数据库执行反向工程,以便给其生成一个物理数据模型 (PDM)。</p><p>对数据库执行反向工程:</p><ol><li><p>单击 diagram 窗口(PowerDesigner 中心的大窗格)。</p></li><li><p>从 菜单中选择 。</p><p>即会出现 对话框:</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/pd_reveng.gif" scriptwindow46openthis46src="" style="CURSOR: pointer;" alt=""/>
<br/></li><li><p>确保选中了 ,并且数据源是 。</p><p>如果未出现 ,请单击数据源字段右侧的图标。此时,就会出现 [连接到 ODBC 数据源] 对话框。选择 [计算机数据源],然后从下拉列表中选择 。输入用户 ID <strong>DBA</strong> 和口令<strong> SQL</strong>。单击 [连接] 以返回到 对话框。</p></li><li><p>在 对话框中,单击 。</p><p>此时,就会出现 对话框:</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/pd_odbcrev.gif" scriptwindow46openthis46src="" style="CURSOR: pointer;" alt=""/>
<br/><p>该对话框的下半部分有 7 个复选框,用于选择键、索引等。这些都是<strong>反向工程选项</strong>。确保选中除 复选框(缺省值)外的所有选项。还应确保已选中所有的表(也是缺省设置)。</p></li><li><p>单击 以进行数据库反向工程。</p><p>示例数据库的图形表示将出现在图示窗口中,模型对象将出现在浏览器中:</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/pd_rev1.gif" scriptwindow46openthis46src="" style="WIDTH: 524px; CURSOR: pointer;" alt=""/>
<br/></li><li><p>从 菜单中选择 以查看修改显示的方式。单击左侧的每个选项以查看显示首选项参数页。单击每页底部的 以查看全部信息。</p><p>查看图示。可以使用 F6 键和 F7 键放大和缩小图示以便于查看。</p><p>数据库中的每个表均由一个框表示。表的名称显示在框的顶部。其下面是列的列表。带有下划线的列名是该表主键的一部分。每个列的数据类型显示在右侧。在反向工程后,某些表可能会发生重叠。从 菜单中,选择 重新对其进行排列。</p><p>这些表之间的引用是用箭头表示的。这些箭头指向父表,即包含主键的表。在每个标识引用的箭头旁边有一个等式。</p></li><li><p>重新排列这些表以便于查看图示。若要重新排列,请用鼠标拖动这些表。引用箭头自动随这些表一起移动。可通过在单击时按下 Shift 键来选择多个对象。</p><p>下面就是一种可能的排列方式:</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/mdlorg.gif" scriptwindow46openthis46src="" style="WIDTH: 524px; CURSOR: pointer;" alt=""/>
<h3>第 2 课:添加列</h3><hr noshade="noshade" size="1"/><p>现在,就可以向 sales_order_items 表中添加 unit_price 列了。可通过 表访问列的列表来完成此任务。</p><p>添加列:</p><ol><li><p>选择 sales_order_items 表。 </p></li><li><p>从 菜单中选择 。</p><p>即会出现 对话框。</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/mdltbl1.gif" scriptwindow46openthis46src="" style="CURSOR: pointer;" alt=""/>
<br/></li><li><p>单击 选项卡。</p><p>即会出现列的列表。</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/mdlcol1.gif" scriptwindow46openthis46src="" style="CURSOR: pointer;" alt=""/>
<br/></li><li><p>添加新列以存储单价。</p><p>单击 按钮。</p><p>此时,在行首就会出现一个箭头,并显示使用缺省名称 (Column_6) 的列。</p></li><li><p>在名称列中键入 <strong>unit_price</strong>。将此名称自动作为代码进行复制。</p><p>在 列,从下拉列表中选择 。 </p><p> 字段可能因太窄而无法查看。可以拖动列的两侧以扩展列。</p></li><li><p>列属性 P、F 和 M 分别表示 [主键]、[外键] 和 [强制](解释如下):</p><ul><li><p>[主键] 指定的列的值唯一地标识表中的行。</p></li><li><p>[外键] 指定的列取决于另一个表中的主键列,并且是从该主键列迁移的。</p></li><li><p>[强制] 要求必须给指定的列赋值。</p></li></ul></li><li><p>选择 [强制],然后单击 。</p></li><li><p>检查所做的更改对数据库图示产生的影响。 </p><p>现在,sales_order_items 表包含一个称为 unit_price 的新列。</p><h3>第 3 课:检查所做的工作</h3><hr noshade="noshade" size="1"/><p>PowerDesigner 还可用于快速检测新模型中的数据库设计错误。</p><p>检查新的模式:</p><ol><li><p>从 菜单中选择 。</p><p>此时,就会出现 对话框。可以使用缺省参数。</p></li><li><p>单击 [确定]。</p><p>此时,在 中就会显示 的结果。</p><h3>第 4 课:保存更改并生成数据库</h3><hr noshade="noshade" size="1"/><p>在 PowerDesigner 中,将描述数据库设计的物理组件(包括表和列)的模型称为<strong>物理数据模型</strong>
<strong>(Physical Data Models, PDM)</strong>。PowerDesigner 将这些模型存储在文件(扩展名为 <i>.PDM</i>)中。</p><p>保存物理数据模型 (PDM):</p><ol><li><p>从 菜单中选择 。</p></li><li><p>键入文件名 <i>c:\Temp\NewDemo.pdm</i>。</p></li><li><p>单击 。</p></li></ol><p>可以使用 PowerDesigner 生成一个 SQL 脚本,该脚本用于实施模型的所有组件。然后,使用 SQL 脚本生成一个数据库。</p><p>生成 SQL 脚本以新建数据库:</p><ol><li><p>从 菜单中选择 。</p><p>此时,就会出现 对话框:</p><img src="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/gif/mdlgendl.gif" scriptwindow46openthis46src="" style="WIDTH: 524px; CURSOR: pointer; ZOOM: 50%;" alt=""/>
<br/></li><li><p>在 字段中键入 <i>c:\Temp\</i>,并在 字段中键入 <i>NewDemo.sql</i>。</p></li><li><p>确保选中了 。</p></li><li><p>单击 选项卡,并确保选中了 。</p><p>浏览其它选项卡,以查看控制所生成脚本的许多其它属性的选项。</p></li><li><p>单击 [确定]。</p><p>创建脚本后,就会出现 对话框。</p></li><li><p>单击 以查看脚本。</p><p>检查脚本中是否反映了所做的更改。例如,检查下面显示的新 office 表的定义。</p><pre>/* ========================================= */<br/>/* Table: office */<br/>/* ========================================= */<br/>create table office<br/>(<br/> id integer not null<br/> default autoincrement<br/> check (<br/> id >= 100),<br/> name char(15) not null,<br/> street char(30) not null,<br/> city char(20) not null,<br/> state char(2) not null,<br/> zip char(5) not null,<br/> phone char(10) ,<br/> fax char(10) ,<br/> primary key (id)<br/>);</pre></li><li><p>完成后,关闭该对话框:在 对话框中,单击 。</p></li></ol><p>现在,就可以从 Interactive SQL 新建数据库了。</p><p>新建数据库:</p><ol><li><p>启动 Interactive SQL。</p><p>从 [开始] 菜单中,选择 [程序] > > > 。</p></li><li><p>使用 ASA 9.0 Sample ODBC 数据源连接到示例数据库。 </p></li><li><p>创建一个空数据库:</p><ul><li><p>执行下面的 SQL 语句,用适当的目录替代语句中的目录。</p><pre>CREATE DATABASE 'c:\\Temp\\newdemo.db'</pre><table><tbody><tr><td><h6>提示 </h6>要在 Interactive SQL 中执行 SQL 语句,请在 窗格中键入或复制该语句,然后按 F5 键。或者,从 菜单中选择 [执行]。</td></tr></tbody></table></li></ul></li><li><p>关闭与示例数据库的连接。 </p><p>从 菜单中选择 [断开连接]。</p></li><li><p>连接到新的数据库。 </p><p>从 菜单中选择 [连接]。</p><ul><li><p>输入 <strong>DBA</strong> 作为用户 ID</p></li><li><p>输入 <strong>SQL</strong> 作为口令</p></li><li><p>单击 [数据库] 选项卡,然后在 [数据库文件] 框中输入新数据库文件的完整路径和文件名。</p></li><li><p>单击 [确定]。</p></li></ul></li><li><p>使用 read 语句。切记,此语句要求用双引号将文件名引起来。</p><ul><li><p>执行该 SQL 语句:</p><pre>READ "c:\\Temp\\newdemo.SQL"</pre></li></ul></li></ol><p>可以使用这些基本步骤来修改其它数据库。</p><h3>小结</h3><hr noshade="noshade" size="1"/><p>此教程仅介绍 PowerDesigner 的一些基本特性。实际上,它可以处理数据库模式的全部设计或修改,其中包括所有的表、视图、索引、引用、触发器和过程。</p><h6><a>域</a>
</h6><p>可以使用其它特性大大简化大型数据库的设计任务。例如,可以指定<strong>域</strong>。域包含特定类型的数据,例如电话号码。域与某种数据类型关联,但域更具体一些。例如,可以创建标识号域。当需要表中的某个标识号时,可以将该列与标识号域关联起来。同时,自动关联所有与该域关联的属性和检查。</p><p>域可减少重复性的定义。这样,不仅减少了您的工作量,而且还降低了误用其它类型定义或检查过程的可能性。不应简单地将列标识为一个整数,而是指定该列包含的具体数据类型。该数据类型的所有实例共享相同的定义。</p><p>有关详细信息,请参见<a href="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbugzh9/00000111.htm" target="_blank"><font color="#000000">使用域</font></a>。</p><h6><a>业务规则</a>
</h6><p>业务规则以书面的形式来表达业务运营的方式。例如,<i>the order shipped date must be greater than or equal to the order date</i>(订单交货日期必须晚于或等于订单日期)就是一条业务规则。</p><p>业务规则共分为四个类别:</p><ul><li><p><strong>定义</strong> 表示对象的固有属性。[定义] 通常用于描述实体。 </p></li><li><p><strong>事实</strong> 表示肯定或存在。[事实] 通常用于描述关系。 </p></li><li><p><strong>校验</strong> 是给值设定的约束。 </p></li><li><p><strong>公式</strong> 用于得出值的计算。 </p></li></ul><p>业务规则的使用很方便,因为它们与客户要求数据库执行的任务直接相关。通过记录业务规则并将它们与特定对象关联起来,可以确保数据库执行所需的任务。</p></li></ol></li></ol></li></ol></li></ol><p><a href="http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/00000291.htm">http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbfgzh9/00000291.htm</a></p> 这个软件用的好的话,就应该不错 谢谢楼主了.我顶 谢谢楼主了.我顶 谢谢楼主了.我顶
页:
[1]