一、PDM概述

  PDM(物理数据模型),通俗地理解,就是在PowerDesigner中以图形化的方式展示和设计数据库。

  PDM中涉及到的基本概念包括:

  • 表;
  • 列;
  • 视图;
  • 主键;
  • 候选键;
  • 外键;
  • 存储过程;
  • 触发器;
  • 索引;
  • 完整性检查约束;

  以上这些都是数据库的概念,不适合在PowerDesigner里面表述。

二、创建PDM

  创建PDM有4中方法:

  • 使用设计环境直接创建PDM;
  • 从现有数据库或通过SQL脚本逆向工程创建PDM;
  • 从CDM采用内部模型生成方法建立PDM;
  • 从OOM中的类图采用模型的内部生成方法建立PDM;

  利用CDM生成PDM是最符合设计思路的方法,但在很多企业开发过程中,都是在设计环境中直接建立PDM,因为大部分企业没钱发那么多工资你设计那么多图。

  1、在设计环境直接建立PDM

  在设计环境直接建立PDM的步骤如下:

  1、在PowerDesigner主窗口选择File->New Model,在打开的创建左侧选择Physical Data Model选项

  

  2、右侧选项的意义

  • Model name:模型名称;
  • DBMS:数据库类型,也可以单击后面的文件夹按钮,选择“浏览文件夹”,选择xml文件作为目标(CDM转PDM);
  • Share the DBMS definition:共享数据库定义;
  • Copy the DBMS definition in model:从数据库定义中拷贝,用于CDM转PDM;
  • First Diagram:创建一个PDM,默认会有一个Diagram,这里是选择这个Diagram的类型;

  3、Extended Model Definitions选项卡的意义

  当通过PowerBuilder来开发时,若选中PowerBuilder则生成的PDM可以从Catalog表中获取表和列的扩展属性。

  

  4、点击“确定”按钮,打开新建的PDM设计窗口

  

  工作区包括左侧的浏览窗口、右侧的设计窗口、下侧的输出窗口和浮动的工具窗口,可以利用工具窗口中的图标在设计窗口中设计PDM。

  5、各种图标的作用

  

  在建立PDM之前,可以定义PDM的显示参数,以满足PDM的显示需求。

  2、定义PDM的显示参数

  1、Tools->Display Preferences打开设置窗口,在General节点中设置整个模型的显示参数。

  

  各个选项含义如下:

  • Window color:窗口颜色;
  • Unit:长度度量单位。Inch(英尺)、Millineter(毫米)和Pixel(像素);
  • Grid:网格线;
  • Diagram:
  • Show page delimiter:显示分页线;
  • Constrain Labels:是否需要限定选项卡和连接对象的距离;
  • Content节点:设置在图形窗口PDM中每类对象的显示样式的参数。
  • Format节点:设置每类对象的显示格式,如大小、变现颜色、填充颜色、阴影、字体等;
  • Modify:按钮可以进行更详细的设置;

  3、定义PDM的模型属性

  在Model Properties(模型属性)窗口中修改模型属性的方法如下:

  1、选择Model->Model Propertise命令或右击图形窗口的背景,在弹出的快捷菜单中选择Properties命令

  

  各个选项的含义如下:

  • Name:名称;
  • Code:代码;
  • Comment:注释;
  • File name:文件名;
  • Author:作者;
  • Version:版本;
  • DBMS:数据库管理系统
  • Database:数据库名称
  • Default diagram:打开模型时默认显示的图;

  2、单击Database后面的Create图标,进入Database Propertise窗口。在窗口中可以配置创建数据库选项

  • General:通用属性;
  • Name:数据库的名称;
  • Code:数据库的代码;
  • DBMS:数据库的类型;
  • Rules:规则;
  • Script:插入到数据库SQL脚本开始和结束为止的脚本;
  • Physical Options:数据库可利用的物理选项;

三、创建表

  创建表的方式,只点击工具栏的Table图标就可以了。

  其他属性页的意义分别为:

  Column(列)、Trigger(触发器)、Keys(键)、Procedure(存储过程)、Rules(规则)、Indexes(索引)和Check(约束);

  

四、创建列

  1、创建列

  1、列的基本属性

  列的基本属性如下:

  • Name:列名;
  • Code:列的代码;
  • Data Type:数据类型;
  • Domain:以域作为数据类型;
  • Comment:注释;
  • M:非空;
  • P:主键;
  • D:在图形窗口显示;

  

  

  选中某一列,单击Propertise图标(或双击列),打开Column Properties窗口,在其中可以定义列的其他属性。

  

  General选项卡属性如下:

  • Displayed:是否在图形符号中显示;
  • Foreign Key:外部键;
  • Computed:计算列;
  • Mandatory:非空;
  • Identiry:自增;

  Detail选项卡可以定义的属性如下:

  • Column fill parameters:Null values(允许空值列个数的百分比)、Distince values(允许不同值列个数的百分比)和Average length(列值的平均长度);
  • Test data parameters:Profile(测试数据的取值)。单击右面的List按钮,可以进一步定义测试的取值方式,可以是字符型、数值型或日期/时间型;
  • Computed expression:定义计算列表达式;

  2、创建计算列

  计算列是通过表达式对其他列的值进行运算后得到的结果。

  (1)、在列的通用的数据约束定义窗口中,单击Computed expression列表框右面的Edit With SQL Editor按钮,弹出计算列表达式定义窗口:

  

  

  当数据库选择的是MySQL时,是没有这个框的(因为是MySQL没有计算列这个概念)。

  3、约束

  Standard Checks选项卡,用于在其中定义约束。

  • Values:Minimum(最小值)、Maximum(最大值)和Default(默认值)。
  • Characteristics:Format(显示格式)、Unit(单位)、Uppercase(大写字母)、Lowercase(小写字母)和Cannot modify(不允许修改)。
  • List of values:定义取值列表。

  

  4、命名约束

  Additional Checks选项卡专门用于定义命名约束

  

  5、创建序列

  双击列,进入列属性

  

  

  • Start with:起始数字
  • Min value:最小值;
  • Max value:最大值;
  • Incremented by:增量值;

五、创建参照及参照完整性

  参照是父表和子表之间的连接,它定义了两个表中对应列之间的参照完整性约束。

  1、参照模型设置

  模型选项决定了参照的特性,可以通过Tools->Model Options打开模型选项(Model Options)窗口。

  

  建议那两个Auto什么的属性还是的勾去掉吧,手动搞,好像有点难看的明白这两个选项的意思。

  模型项与连接的关系

  

  选项意义:

  • Unique code:表示模型中的参照代码唯一;
  • Auto-reuse columns:表示同父表主键拥有相同的代码列或子表列不是其他表的外键,则该列被当做子表的外部键;
  • Auto-migrate columns:表示产生参照时,父表的主键将迁移到子表中成为外部键;
  • Domain:表示如果选中Auto-migrate columns和Domain复选框,在建立参照时,主键的域将迁移到外部键上;
  • Check:表示如果选中Auto-migrate columns和Check复选框,在建立参照时,主键的检查参数将迁移到外部键上;
  • Rules:表示如果选中Auto-migrate columns和Rules复选框,在建立参照时,主键的业务规则将迁移到外部键上;
  • Primary Key:表示参照连接主键列到外部键列;
  • User-defined:表示参照不产生连接;

  Auto两个复选框的意义:

  

  2、创建参照及定义相关属性

  创建参照的具体方法:

  1.在PDM模型的Palette工具栏中单击Reference图标;

  

  2.双击新建立的连接,打开Reference Properties窗口,在其中可以修改参照的各个属性:

  

  • Name:参照名;
  • Code:参照代码;
  • Comment:注释;
  • Parent table:参照的父表;
  • Child table:参照的子表;
  • Generate:是否在数据库中生成参照;
  • Joins选项卡可以定义表与表之间的连接;

  3.Join(连接)可以用来连接主键、候选键和外部键,或在用户指定的列之间建立连接;

  

  4.连接可以通过上节的模型选项自动建立,也可以手工建立;如果手工指定,也可以利用Reuse Columns图标、Migrate Columns图标和Cancel Migration图标实现列重用或迁移。

  • Reuse Columns:重用子表中存在并与父表相同的列;
  • Migrate Columns:表示将父表的主键迁移到子表中作为外部键;
  • Cancel Migration:表示删除从父表中迁移到子表的所有列;

  5.Integrity选项卡用来定义参照完整性。主要用于设置父表中修改或删除参照列的数据对子表的影响。

  

  • Constraint name:约束名,生成SQL脚本时使用此名称。
  • Implementation:实现方式;

  选项意义:
  Declarative:声明式,吧参照完整性约束定义为一种特殊引用。
  Trigger:通过触发器在相应DBMS中维护数据的有效性;

  • Cardinality:基数。表示父表中的每个实例,子表中可能拥有的实例的最少和最多数。
  • Update/Delete constraint:表示修改父表列值后子表列值如何修改:

  None:修改或删除父表,对子表无影响;
  Restrict:如果子表中存在一个或多个对应值,不能修改或删除父表中的值;
  Cascade:修改或删除父表中值的同事将子表中对应的值也修改或删除;
  Set null:修改或删除父表中值的同时将子表中对应的值置为NULL;
  Set Default:修改或删除父表中值的同事将子表中对应的值置为默认值;

  • Mandatory parent:是否强制子表中的外部键列值都必须在父表中有相应的列值;
  • Check on commit:是否在提交时验证参照完整性;
  • Change parent allowed:是否允许修改父表中参照列的值;

  6.此外,还可以修改参照图符号上显示的文本信息,以满足不同系统的需求。

  此PDM模型窗口中选择Tools->Display Preferences命令,打开Display Preferences窗口,单击Object View->Reference节点。

  

  • Name:参照的名称;
  • Constraint name:参照完整性约束的名称;
  • Join:两个表相同列的连接名称;
  • Rederential integrity:参照完整性;
  • Cardinality:基数;
  • Implementation:参照完整性实现的方式;

  设置参照完整性后的例子如下:

  

六、创建域

  在PDM中,使用域有助于识别信息的类型,易于使不同表中列的数据特征标准化。域为列定义了一组有效的值,可以把Data Type、Check、Rule、Mandatory等信息关联到域上。

  1、创建域

  1、打开PDM模型,选择Model->Domains命令,在空白行单击,可以增加一行。分别在Name、Code和DataType栏中输入名称、代码和数据类型;

  
  2、单击空白行可以增加一行;
  3、双击行前面的箭头,可以进入属性设置:

  

  其中General选项卡主要意思如下:

  • Name:名称;
  • Code:代码;
  • Comment:注释;
  • Data type:数据类型;
  • Length:长度;
  • Profile:测试数据定义文件;

  其他选项卡与前面的类似。

  2、使用抽象数据类型

  在为域选择数据类型时,可以指定抽象数据类型。抽象数据类型是用户自定义的数据类型。ADT数据类型因数据库系统而存在差异,在PowerDesigner系统中允许使用的ADT数据类型如下表:

类型 描述 示例
Array 固定长度元素的集合 Varray Oracle8
List 不固定长度对象的集合 Table Oracle8
Java Java类 Java Adaptive Server Anywhere
Object 包含属性列表的对象 OBJECT Oracle8
Structured 包含属性列表的结构体 NAMED ROW TYPEDB2
CLR .Net通用语言运行时 Microsoft SQL Server 2005

    

  1、普通的抽象数据类型

  打开PDM模型,选择Model->Abstract Data Types命令。

  

  双击行进入

  

  2、OBJECT类型的抽象数据类型

  如果在Type下拉列表框中选择OBJECT选项,即可建立一个抽象数据类型对象。

  

  选择Attributes选项卡,在Name、Code和Data Type栏中分别输入。

  

七、创建表中的键

  键是表中可以唯一识别一条记录的一个或多个列的集合。PDM支持两种类型的键:主键、候选键。

  1、主键

  定义主键很简单,选中作为主键列的P复选框即可。

  

  如果利用了逆向工程,从已经存在的数据库逆向到PDM模型,可能无法生成主键或者在你想工程数据库时没有选择重建主键选项,此时需要重建主键。

  重建主键的方法:

  1、选择Tools->Rebuild Objects->Rebuild Primary Keys命令。
  2、打开Primary Key Rebuild窗口;
  3、选择要重建主键表前的复选框,确定;

  

  2、候选键

  候选键(Alternate Key)指一列或多列,表中每条记录的列值都是唯一的。每个候选键都在数据库中生成唯一索引或唯一约束。

  1、打开表的Keys选项卡,在空白的Name或Code栏中单击,系统自动增加一个新键。设置键的名称和代码;

  2、双击新键行的行首箭头,在打开的Key Properties(键属性)窗口中选择Columns选项卡,该选项卡列出了键包含的所有列;

  3、单击Add Columns图标,在窗口中列出了表中包含的所有列,选择一个或几个需要的列;

  

  3、键的约束名

  利用PDM生成数据库脚本时,键也包含在其中,为了方别识别和修改,需要为其定义统一的约束名。如果不指定,系统会自动建立一个默认的。

  选择定义了主键的表,双击鼠标打开表属性,选择Keys选项卡,显示所有的主键和候选键,选中其中一个,单击其中的Properties,在Constraint name文本框中输入键的名称。

  

八、创建索引

  1、创建索引

  建立索引的具体方法如下:

  1、在表属性窗口,选择Indexes选项卡,空白行单击,系统会自动给出索引的名称和代码,可以根据需要进行修改。
  2、单击Properties图标,打开Index Properties,General选项卡的条目含义为:

  • Name:索引名称;
  • Code:索引代码;
  • Comment:索引注释;
  • Table:包含索引的表;
  • Type:索引的类型,普通索引、全文索引、Xml索引
  • Unique:唯一索引;
  • Cluster:聚集索引;

  3、选择Columns选项卡,可以选择索引包含的列;

  

  2、重建索引

  重建索引具体方法如下:

  Tools->Rebuild Objects->Rebuild Indexes命令,打开Index Rebuild(重建索引);

  

  各选项含义如下:

  • Primary key:重建主键索引;右边输入为主键索引名称:%TABLE%_PK
  • Other keys:重建候选键索引,右边输入为默认的候选键索引名称:%TABLE%_AK
  • Foreign key indexes:重建外部键索引,右边输入为%REFR%_FK
  • Foreign key threshold:建立外部键索引所需的表最小记录数
  • Delete and Rebuild:重建索引之前删除已存在的索引
  • Add missing indexed:只增加缺少的索引

  在Selection选项卡中选择需要重建索引的表;

  

九、创建视图

  创建视图有两种方法:

  1、选择表,Tools->Create View命令,建立包含所选表全部字段的视图;
  2、建一个空视图,然后选择表或直接定义SQL语句。

  第二种方式操作如下:

  用工具栏的View图标,创建一个视图,双击进入视图View Properties(视图属性)窗口。

  

  其General选项卡的基本属性含义如下:

  • Name:视图的名称;
  • Code:视图的代码;
  • Comment:视图的用途;
  • Usage:视图的用途;
  • query only:只用于查询;
  • Updateable:用于查询和修改;
  • With check option:在视图插入数据时要收到表中已定义约束的限制;
  • Dimensional Type:维度类型;
  • Generate:是否在数据库中生成视图;
  • User-defined:在用户自定义视图时是否访问查询编辑器;

  选择SQL Query选项卡,为视图定义对应的SQL语句。

  点击Edit With SQL Editor进入SQL编辑器能够非常方便地书写SQL语句。

  

文章转载自:http://www.cnblogs.com/kissdodog/p/4140244.html

PowerDesigner之PDM(物理概念模型)各种属性建立如PK,AK等的更多相关文章

  1. PowerDesigner之PDM(物理概念模型)

    一.PDM概述 PDM(物理数据模型),通俗地理解,就是在PowerDesigner中以图形化的方式展示和设计数据库. PDM中涉及到的基本概念包括: 表: 列: 视图: 主键: 候选键: 外键: 存 ...

  2. 在powerdesigner中创建物理数据模型

    物理数据模型(PDM)是以常用的DBMS(数据库管理系统)理论为基础,将CDM/LDM中所建立的现实世界模型生成相应的DBMS的SQL语言脚本.PDM叙述数据库的物理实现,是对真实数据库的描述 PDM ...

  3. powerdesigner使用之——从“概念模型”到“物理模型”

    现实问题在计算机上的解决,需要我们从现实问题中抽象出实体模型,然后再将实体模型对应到数据库关系表中. 例如,我们在思考学生选课,这件事情上,实体模型就是“学生”和“课程”两个 此时,我们使用power ...

  4. powerdesigner 画PDM

    一.PDM概述 PDM(物理数据模型-Physical Data Modal),通俗地理解,就是在PowerDesigner中以图形化的方式展示和设计数据库. PDM中涉及到的基本概念包括: 表: 列 ...

  5. 转 在PowerDesigner的PDM图形窗口中显示数据列的中文注释

    Name是名称(字段描述),Code是字段名称,Comment是注释名称,ER图中显示的是Name.一般设计时,Name跟comment都设计成描述, 而设计时候常把comment写成中文,name保 ...

  6. 数据库设计---PowerDesigner(物理模型和概念模型)

    内容 第一种方法:概念模型转物理模型 1.首先新建模型--选择概念模型(CDM)   2.新建实体(学生和卡),设置相应的属性         3.一共四种关系(1:1,1:n,n:1,n:n),根据 ...

  7. PowerDesigner将PDM导出生成WORD文档

    PowerDesigner将PDM导出生成WORD文档 环境 PowerDesigner15 1.点击Report Temlates 制作模板 2.如果没有模板,单击New图标创建.有直接双击进入. ...

  8. 如何在PowerDesigner将PDM导出生成WORD文档或者html文件

    a)         使用PowerDesigner打开pdm文件 b)         点击Report Temlates 制作模板 点击PowerDesigner菜单栏“Report” -> ...

  9. lucene 索引中文档的属性建立与不建立带来的影响总结

    索引中文档的属性建立与不建立带来的影响总结   1.依据文档的某属性去查找索引的话,只会返回带有此属性(如果你对当前属性设定了条件,那么需要满足当前条件)的所有文档,没有建立此属性的文档是不会在返回结 ...

随机推荐

  1. 判断一个整数是否是2的n次方

    参考:http://bbs.csdn.net/topics/370058619 如题,如何判断一个整数是否是2的N次方,我能想到的方法有两个 1.一直除2,看最后是否等于1.(最笨的方法) 2.转换成 ...

  2. oracle 对表赋权限

    grant select,insert,delete,update on yizhen123.tpp_t_dz_yinglian to wangyd;

  3. C#.NET常见问题(FAQ)-命名空间namespace如何理解

    Namespace就是定义一个对象是哪个门派的,比如你现在就在A门派下,A门派的所有功夫(属性和方法)都可以不加声明直接调用.如果你要用B门派的功夫,就要先声明是B门派的XXX对象的XXX实例的XXX ...

  4. SpringBoot 启动错误搜集

    Spring Boot:The Bean Validation API is on the classpath but no implementation could be found https:/ ...

  5. c++ windows下读取大文件(内存映射)

    关于内存映射的基本知识以及一些函数的原型说明,参考博客:http://blog.csdn.net/wcyoot/article/details/7363393 下面是我对于读取一个104M文件大小,使 ...

  6. ubuntu下配置华为交换机s2016

    因为笔记本没有RS232口,只有装有ubuntu的服务器上有RS232口,于是登录ubuntu 配置连接. 这里使用minicom,当然,Ubuntu源还有个图形界面的gtkterm, cutecom ...

  7. 感谢大家对《Cocos2d-JS开发之旅》的支持

    昨天收到一封读者的来信,给我报了个喜,也提了一些非常好的建议. 他通过短短1个月时间就完成了学习和游戏开发,并发布了Android和iOS平台,真了不起.授人以鱼不如授人以渔,这也是写书的最大喜悦吧. ...

  8. kettle实现数据库迁移----多表复制向导

    kettle实现数据库迁移----多表复制向导 需求: 做数据仓库时,需要将业务系统CRM抽取到数据仓库的缓冲层,业务系统使用的是SqlServer数据库,数据仓库的缓冲层使用的是mysql数据库,为 ...

  9. django之创建第7-2个项目-url配置分离

    1.urls.PY分离 # -*- coding: UTF-8 -*- from django.conf.urls import patterns, include, url # Uncomment ...

  10. Ubuntu18.04中配置QT5.11开发环境

    准备工作 参考 https://wiki.qt.io/Install_Qt_5_on_Ubuntu . # 安装g++ sudo apt install build-essential # sudo ...