在PowerDesigner中设计物理模型——添加外键

本文介绍了在PD软件中建立物理模型的方法,包括直接新建、由概念模型或逻辑模型生成、以及利用逆向工程从现有数据库生成。重点讲解了如何设计表、设置主键和外键等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在PD中建立物理模型由以下几种办法:

  1. 直接新建物理模型。
  2. 设计好概念模型,然后由概念模型生成物理模型。
  3. 设计好逻辑模型,然后由逻辑模型生成物理模型。
  4. 使用逆向工程的方法,连接到现有的数据库,由数据库生成物理模型。

物理模型能够直观的反应出当前数据库的结构。在数据库中的表、视图、存储过程等数据库对象都可以在物理模型中进行设计。由于物理模型和数据库的一致性,接下来以数据库对象和物理模型对象的对应来一一介绍:

新建物理模型时需要指定物理模型对应的DBMS,这里我们使用SQL Server 2008,新建一个物理模型后,系统会显示一个专门用于物理模型设计的工具栏:

image

若要在物理模型中添加一个表,单击“表”按钮,然后再到模型设计面板中单击一次便可添加一个表,系统默认为表命名为Table_n,这里的n会随着添加的表增多而顺序增加。添加的表是没有任何列的,如图所示:

image

单击工具栏的鼠标指针按钮,将鼠标切换回指针模式,然后双击一个表,系统将打开表属性窗口,在General选项卡中可以设置表的Name、Code等属性。例如我们要新建一个教室表(ClassRoom),则可修改Name和Code。Name是在模型中显示的名称,Code是生成数据库表的时候的实际表名。另外Name中的内容还会作为SQL Server中的表备注。

image

单击Columns切换到列选项卡,在下面的列表中可以添加表中的列。Name是模型上显示的名称,Code是生成的实际的表名,后面的3个复选框P代办主键、F代表外键,M代表不能为空。为教室表设计了两个列,如图所示:

image 

主键

在设计一个表时,一般情况下每个表都会有一个主键,主键分为单列主键和复合主键。在为表设置主键时有以下几种办法:

1.在Columns选项卡中,直接选中主键列的P列复选框,这是最简单的方式。

2.选中一个列,然后单击工具栏中的“属性”按钮,系统将弹出列属性窗口,在该窗口中可以设置该列的各种属性,当然也包括该列是否是否是主键。另外还有一个很重要的复选框是“Identity”。选中Identity复选框则表示该列为自增列。

image

3.切换到Keys选项卡中,在其中添加一行命名为PK_ClassRoom,然后单击工具栏的“属性”按钮,打开键属性窗口,在该窗口中切换到Columns选项卡,单击添加列按钮,弹出列选择窗口,选中主键中应该包含的列,单击确定按钮即可完成主键的创建。

image

另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“键属性”窗口的General选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引,如图所示:

image

外键

如果是由概念模型或者逻辑模型生成物理模型,那么外键是通过Relationship生成的,也可以通过工具栏中的Reference来实现两表之间的外键关系。假如一个课程只会在一个固定的教室上课,而一个教室会安排多个课程在不同的时间上课,所以教室和课程是一对多的关系,那么课程表中就需要添加RoomID列以形成外键列,具体操作方法就是在工具栏中单击“Reference”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外键引用,如果已经存在RoomID列,则只添加外键引用,不会再添加新列。

 image

切换到鼠标指针模式,双击箭头,系统将弹出引用的属性窗口,在属性窗口中可以设置该引用的Name、Code、关联的列、约束名、更新策略和删除策略等。

下一篇文章将会介绍其他约束具体包括:

1.CHECK约束

2.默认值约束

3.非空约束


转载 :http://www.cnblogs.com/studyzy/archive/2009/12/15/1624899.html

### 使用 PowerDesigner 创建物理数据模型 #### 1. 启动 PowerDesigner 并创建新的物理数据模型 启动 PowerDesigner 软件后,通过 `File` -> `New Model` 来创建一个新的模型。在弹出的窗口中选择 `Physical Data Model` 类型,并为其命名。此时可以选择目标数据库管理系统(DBMS),例如 MySQL 或 Microsoft SQL Server[^2]。 #### 2. 添加对象并定义其基本属性 使用左侧工具栏中的 `Table` 图标向画布拖拽以创建一个新。双击该进入编辑模式,在此可以设置的基本信息,包括: - **Code**: 数据库中实际使用的名称。 - **Name**: 的逻辑名称或描述性名称。 - **Comment**: 对功能的说明或备注[^3]。 #### 3. 定义字段及其特性 切换到 `Columns` 标签页来配置内的各个字段。对于每一个字段需指定以下参数: - 字段名(Field Name) - 数据类型(Data Type) - 是否允许 NULL 值(Nullable) - 默认值(Default Value) 某些特殊需求可能还需要调整高级选项,比如将某字段设为主或者。可以通过勾选相应标志实现这一目的:P(Primary Key)、F(Foreign Key)以及 M(Mandatory/Not Null)[^4]。 #### 4. 设置主约束 为了确保数据的一致性和完整性,合理规划主是非常重要的。主通常由唯一标识记录的一个或多个字段组成;而则用于建立不同之间的关联关系。具体操作方法是在两个相关联的之间绘制连线,从而自动形成参照[^2]。 #### 5. 自动生成SQL脚本或将模型同步至真实数据库环境 当完成整个物理数据模型的设计之后,可通过菜单命令 `Database` -> `Generate Database` 导出对应的 DDL (Data Definition Language) 脚本文件。这一步骤提供了多种定制化选项,如仅生成脚本还是直接连接到现有数据库实例执行建语句等[^1]。 ```sql -- 示例:部分生成的学生信息DDL语句 CREATE TABLE Student ( StudentID INT PRIMARY KEY IDENTITY, FirstName NVARCHAR(50), LastName NVARCHAR(50) NOT NULL, MajorID INT FOREIGN KEY REFERENCES Major(MajorID) ); ``` #### 6. 高级技巧——批量更新注释为实体名称 有时希望快速统一修改所有及字段的显示名称以便更好地理解业务含义而不改变底层代码,则可利用宏脚本来达成目标。下面给出了一段 VBA 脚本示例用来复制当前包下每个以及视图的对象注释作为它们的新名字[^5]: ```vba Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl ' the current model ' get the current active model Set mdl = ActiveModel If (mdl Is Nothing ) Then MsgBox "There is no current Model " ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "The current model is not an Physical Data model." Else ProcessFolder mdl End If ' This routine copies comments to names for tables, columns, views within a given folder. Private Sub ProcessFolder(ByVal folder As Object) Dim Tab ' running table variable For Each Tab In folder.Tables If Not Tab.isShortcut Then Tab.Name = Trim(Tab.Comment) Dim col ' running column variable For Each col In Tab.Columns If LenB(col.Comment) <> 0 And col.Name <> col.Comment Then col.Name = Trim(col.Comment) End If Next col End If Next Tab Dim view ' running view variable For Each view In folder.Views If Not view.isShortcut Then view.Name = Trim(view.Comment) End If Next view ' Recurse through sub-folders Dim f ' running child-folder variable For Each f In folder.Packages If Not f.IsShortcut Then ProcessFolder f End If Next f End Sub ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值