一、 快捷键
在使用建模工具时,在窗口(工作区)空白处,点击鼠标右键,鼠标就可以变成鼠标指针。
1、 ctrl+G:将pdm转化为对应数据库的sql脚本。或者在工具栏中数据库—generate database中也可以设置sql文件
Ctrl+shift+P:生成pdm
Ctrl+shift+C:生成cdm
Ctrl+shift+O:生成oom
2、调出palatte工具栏,在工具栏右击,选择palatte即可。
二、常用概念
1、 CDM(concept data model):概念数据模型
LDM(logical data model):逻辑数据模型
PDM(physical data model):物理数据模型
OOM(Object-oriented model):面向对象模型
BPM(business process model):业务流程模型
EnterpriseArchitecture Model 企业架构模型
PDB是早期的PowerBuilder编译生成的动态链接库的后缀名是PDB,
但后来PowerDesigner出来后,它的物理模型图(数据表结构)文件后缀名是PDM,但同时它会生成这个文件的备份文件,就是后缀名为PDB的文件。
2、 生成脚本时,selection->选择users、tablespace、tables勾选或取消表或者用户或者表空间。
3、 生成sql脚本时,给字段添加注释:选择Database->Edit Current DBMS...后,选择Script->Objects->Column->ColumnComment,将ColumnComment的原始内容:
[%QUALIFIER%]%TABLE%.%COLUMN% is
%.q:COMMENT%
变更为
comment on column [%QUALIFIER%]%TABLE%.%COLUMN% is
%.q:COLNNAME%
第二步:从物理模型生产数据库时,Database->Generate Database..
在Format标签选项中,将Generate name in empty comment,勾选上,默认不勾选。
1、 Diagram:图表,在界面显示图表。
参数 |
说明 |
Minimum |
属性可接受的最小数 |
Maximum |
属性可接受的最大数 |
Default |
属性不赋值时,系统提供的默认值 |
Unit |
单位,如公里、吨、元 |
Format |
属性的数据显示格式 |
Lowercase |
属性的赋值全部变为小写字母 |
Uppercase |
属性的赋值全部变为大写字母 |
Cannot modify |
该属性一旦赋值不能再修改 |
List Of Values |
属性赋值列表,除列表中的值,不能有其他的值 |
Label |
属性列表值的标签 |
2、 Data Items:数据项对应属性(Attributes)
3、 Identifiers:标识符,表示实体的唯一表示,对应主键。
4、 概念模型中是实体(Entity)和联系(Relationship)对应物理模型中的表(Table)和引用(Reference)
5、 属性添加:插入一个属性;追加一个属性;从数据项中添加已有属性;重用已有的属性。D:Displayed,是否在图形窗口中显示,mandatory:是否为空。Precision:小数位;Domain:数值域。
6、 属性的约束
7、 数据项的唯一性代码选项和重用选项使用Tools--->ModelOptions->Model Settings。在Data Item组框中定义数据项的唯一性代码选项(Unique Code)与重用选项(AllowReuse)。 注意: 如果选择UniqueCode复选框 ,每个数据项在同一个命名空间有唯一的代码,而选择Allowreuse ,一个数据项可以充当多个实体的属性。
8、 联系:实体间建立联系(Relationship);实体间继承(Inheritance);关联与实体间建立联系(Associsation link);建立关联(Association)
9、 Mandatory:是否强制,即是否为空;Dependent:是否依赖用于标定联系,在非标定联系(实体可以单独存在)中,一个实体集中的部分实例依赖于另一个实例集中的实例,在这种依赖联系中,每个实体必须至少有一个标识符。而在标定联系(实体不能单独存在)中,一个实体集中的全部实例完全依赖于另个实体集中的实例,在这种依赖联系中一个实体必须至少有一个标识符,而另一个实体却可以没有自己的标识符。没有标识符的实体用它所依赖的实体的标识符作为自己的标识符。
10、 Dominant:只用于一对一联系中,并指明主从表关系,在生成PDM时,只会产生一个引用。
1、 Joins:建立表间连接键,即将父表的主键对应子表的外键。
2、 Integrity:定义参照完整性;Mandatory parent:强制对应关系;Change parent allowed :允许修改父表中参照列的值。
3、 建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“键属性”窗口的General选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引;Cluster为聚集索引。
4、 聚集索引:可以帮助把很大的范围,迅速减小范围。但是查找该记录,就要从这个小范围中Scan了。
非聚集索引:把一个很大的范围,转换成一个小的地图。你需要在这个小地图中找你要寻找的信息的位置。然后通过这个位置,再去找你所需要的记录。
5、 建立表关联(添加外键)利用Reference来建立连接,在一对多关系中,如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外键引用,如果已经存在RoomID列,则只添加外键引用,不会再添加新列。(使用引用时,软件会自动创建外键)。
1、 Usage是表示视图是只读的视图还是可更新的视图,还有一个是check option选项,指定了 CHECK OPTION,也不能依据视图来验证任何直接对视图的基础表执行的更新。如果我们只创建一般的视图,那么就选择只查询选项。
2、 Dimensional Type指定该视图表示的是维度还是事实,这个主要是在进行数据仓库多维数据建模时使用,一般情况下不需要指定。后面的两个复选框也不需要进行修改。Type使用默认的view选项。
1、 存储过程和用户自定义函数都是在同一个组件中设置的,在工具栏中单击Procedure按钮,然后在设计面板中单击一次便可添加一个Procedure。
2、 切换到Definition选项卡,该选项卡中定义了存储过程的定义,在下拉列表框中,选择
3、 下面的SQL语句中,可以将create procedure[%QUALIFIER%]%PROC%保留,其他的删除,根据自己要创建的存储过程编写SQL语句。
4、存储过程格式:
CREATE PROCEDUREprocedure_name
@parameter_namedatatype=[default]
[WITH ENCRYPTION]
[WITH RECOMPILE]
AS
sql_statement
注:
@parameter_name 存储过程的参数名,必须以@为前缀
Datatype 参数的数据类型
Default 参数的默认值,如果执行存储过程时为提供该参数的变量值,则使用default值。
WITH ENCRYPTION: 对存储过程进行加密
WITH RECOMPILE: 对存储过程重新编译
执行存储过程:EXEC p_book1p @出版社='中国长安'
4、 在软件工程文档的数据库设计书需要有CDM、LDM、PDM三种模型
5、 概念模型(CDM)中只有实体和实体之间的关系,并没有实体的属性和唯一标识这些具体的内容。只表示数据库的整体逻辑结构,独立于任何软件和数据存储结构,采用实体-联系图(Entity-Relation Graph,E-R图)来表示实体和联系的概念。
注意:实体包含唯一标识它的一个或一组属性,这些属性称为实体类型的标识符(identifier),例如:学号是学生实体类型的标识符,姓名,地址,出生日期共同组成公民实体类型的标识符。
有些实体类型可以有几组属性充当标识符,可以选定其中一组属性作为实体类型的主标识符,其他的作为次标识符。
逻辑模型(LDM)是概念模型(CDM)的延伸,逻辑模型一方面显示了实体、实体的属性和实体之间的关系,另一方面又将继承、实体关系中的引用等在实体属性中进行展示。
物理模型(PDM)更接近关系数据库中的关系表,包括软件和数据存储结构,即:PDM与具体的数据库有关。
面向对象模型(OOM)包含一系列包、类、接口和他们的关系。可以直接生成javaBean文件。
总结:逻辑模型(LDM)不是必须的,可以直接通过概念模型(CDM)来生成物理模型(PDM)。
Mysql的sql脚本——>mysql_PDM——>CDM——>oracle_PDM——>oracle的sql脚本。
6、 CDM中Entity之间的关系
注意:联系具有方向性,每一个方向上都有一个基数。在联系的两个方向上各自包含有一个分组框,其中的参数只对这个方向起作用,Role Name为角色名,描述该方向联系的作用,一般用一个动词或动宾组表。
如:“学生 to 课目 ” 组框中应该填写“拥有”,而在“课目To 学生”组框中填写“属于”。(在此只是举例说明,可能有些用词不太合理)。
(1)Dependency:用于两个CDM之间的Dependency(依赖关系),PDM并不处理这种Dependency;
(2)Relationship:用于两个Entity间的关系表述,包括:one-one、one-many、many-many等
在Relationship中还有三个属性可以设置:
Mandatory:表示这个方向联系的强制关系,表示联系对应的那两个实体实例的个数不能为0,即不能为空;
Dependent:依赖性联系/标定关联,表示主从表的关系,从表依赖于主表。对于依赖型联系,不可能为多对多联系,必须有一个作为主体的实体型。一个依赖联系的从实体可以没有自己的标识符(identifier);在标定联系中,一个实体(选课)依赖 一个实体(学生),那么(学生)实体必须至少有一个标识符,而(选课)实体可以没有自己的标识符,没有标标识符的实体可以用实体(学生)的标识符作为自己的标识符。
Dominant:统制联系,仅用于一对一联系,并指明这种联系中的主从表关系。如果不勾选dominant,那么最终产生的PDM中教师表和学生表将互相包含对方的主键。
(3)Association:用于两个Entity间的事件表述,例如:老师和学生两个实体间的家访事件(event)。
在PD中,选中任何一个联系,在右键的弹出菜单中选择“Change to Entity”命令即可完成联系转实体的操作,但是有的时候,把若干个实体型之间的联系抽象为一个实体型可能不太合适,这时候可以为这些实体型建立一个association,那么在生成PDM时,所有这些相关实体型的identifier都会被加入到association对应生成的表模型中。其实,association就是实体型的一种特例。
Cardinality:基数 general:常规设置
1、先打开概念模型(CDM),选择工具-Generate Physical Data Model
2、选择DBMS为指定的数据库,为物理模型起名字,点击确定即可。
1、先打开物理模型(PDM),选择工具-Generate Conceptual Data Model
2、为概念模型起好名字,点击确定即可
1、先打开物理模型(PDM),点击Database按钮的Generate Database或者按ctrl+G。
2、设置sql文件的位置和名称
3、在selection中选择要导出的表确定即可。Option中可以个性化选择和配置sql脚本,如取消外键、去除drop语句等。Preview选项卡可以预览将要生成的sql脚本。
tools→ModelOptions...→Naming Convention→Code→Uppercase。
双击表打开表的属性窗口→Columns选项卡→单击上排倒数第二个图标(Customize Columns and Filter)→勾选comment
tools→GeneralOptions...→Dialog→取消勾选Name to Code mirroring
Database→ChangeCurrent DBMS→选择要转换成的目标数据库
1、File→Reverse Engineer→Database...→修改模块名称并选择DBMS(反向工程:还原)
2、Using script files→点击下方图标(Add Files)来添加sql脚本文件→确定(script:脚本)
Report→GenerateReport...→选择Generate RTF→修改Repornamet→语言选择Chinese→选择文件存放位置→确定
PowerDesigner还提供了文档编辑功能:Report→Reports...→点击New Report图标→修改Repor namet→语言选择Chinese→Reporttemplate选择Full Physical Report
双击表打开属性窗口→勾选P主键复选框→双击设置为主键的字段(在行的头部双击)或者单击上方的属性图标按钮→在打开的窗口下方(注意不同数据库不一样,sql server是identity复选框)选择sequence,如果没有则单击旁边的新建按钮创建一个sequence。
工具栏中单击视图(view)按钮→创建视图→双击视图打开属性窗口,其中Usage是表示视图是只读的还是可更新的。如果我们只创建一般的视图,那么选择queryonly选项即可。
切换到SQL Query选项卡,在文本框中可以设置定义视图的sql查询语句,在定义视图时最好不要使用*,而应该使用各个需要的列名,这样在视图属性的Columns中才能看到每个列。单击右下角Edit with SQL Editor按钮,即可弹出SQL Editor编辑器,编写SQL语句。也可采用其他sql语句生成器生成sql语句。
双击表打开属性窗口→选择Indexes选项卡→新建一索引→双击该索引打开属性窗口
选择Columns选项卡→单击AddColumns图标按钮→选择要建立索引的字段→确定
这里Column definition就不要选了,会与主键冲突。
工具栏中单击Procedure按钮→创建存储过程→双击存储过程打开属性窗口→选择Definition选项卡,其中在下拉列表框中,有Default Procedure、Default Function这两个选项,前者是定义过程,后者是定语函数,系统会根据选择的类型创建SQL语句的模板→编辑存储过程脚本。
None:父表修改,子表不影响。
Restrict:父表修改,如果子表存在,则出错。
Cascade:父表修改,如果子表存在,则相应的修改。
基数是下拉列表,表示实体间的对应关系,一对一还是一对多等。