Powerdesigner中不能定义主键的解决方案
- 格式:docx
- 大小:141.84 KB
- 文档页数:1
常见问题解决及常用操作1.在修改name的时候,code的值将跟着变动解决:可在Tools->General options->Dialog下[Name to Code mirroring]复选框去掉2.Cdm文件,数据项的唯一性代码选项和重用选项数据项的唯一性代码,有时使用不方便,默认设置为唯一性解决:使用Tools--->Model Options->Model Settings。
在Data Item组框中定义数据项的唯一性代码选项(Unique Code)与重用选项(Allow Reuse)。
如果选择Unique Code复选框,每个数据项在同一个命名空间有唯一的代码,而选择Allow reuse ,一个数据项可以充当多个实体的属性。
3.如何防止一对一的关系生成两个引用(外键),如图所示解决:要定义关系的支配方向,在cdm中双击一对一关系->Cardinalities->Dominant role选择支配关系生成的pdm如下:4.模型的比较选择Tools->Compare Model5.模型的合并选择Tools->Merge Model6.模型的检查:Tools->Check Model7.建立一个表后,检测出现Existence of index的警告解决:可以不检查 Existence of index 这项,也就没有这个警告错误。
(一个表一般至少要有一个索引,这是一个警告,不用管也没有关系)8.检查模型出现Column code maximum length错误等解决:列名太长,超过设置的列名最大长度,可将参数值设大:Database=>Edit current DBMS –>Script\Objects\Column\Maxlen value=>新值可设:Database->Edit current DBMS –>Script\Objects\MaxConstLen value=>新值Database=>Edit current DBMS –>Script\Objects\Table\Maxlen value=>新值9.批量生成数据:Database->Generation Test Data10.生成数据库脚本:Database->Generate Database11.查看sql语句,表名与字段名前出现引号解决:Tools->Model Options->Naming Convention->code->character case->Uppercase或者设置如下:把Database → Edit Current DBMS → Script → Sql →Format → CaseSensitivityUsingQuote中value设置为NO12.生成sql语句含有“drop…”解决:在菜单Database->Generate Database,选择弹出的窗口中的Options 标签页,去掉窗口右边drop...选项即可13.设置sql创建规则:Database -> Edit Current DBMS ->Script -> Object 可设置table column pkey 等的生成规则14.为字段添加注释问题Database -> Edit Current DBMS ->Script -> Objects->Column->Add右侧value最好添加 /*%COLNNAME%*/15.文件类型相互之间的转化Tools --> Generate Object-Oriented ModelTools --> Generate Conceptual Data ModelTools --> Generate Logical Data ModelTools --> Generate Physical Data Model16.Pdm->oom文件,查看生成的java类,出现类名字段是中文,并不是code的值(pdm中name是中文,code是英文)解决:可做如下设置:pdm文件生成oom文件时,Tools --> Generate Object-Oriented Model弹出的对话框,在“Detail”选项下“Convert names into codes”复选框去掉17.生成报表Report->Generate Report18.字体等的设置:空白处右键,Display Preferences->Format19.希望以上资料对你有所帮助,附励志名言3条:20.1、宁可辛苦一阵子,不要苦一辈子。
powerdesigner常⽤设置使⽤powerdesigner进⾏数据库设计常⽤的设置1.1.⼯具栏不见了调⾊板(Palette)快捷⼯具栏不见了PowerDesigner 快捷⼯具栏palette 不见了,怎么重新打开,找回来呢上⽹搜索了⼀下”powerdesigner 图形⼯具栏”,找到了找回PowerDesigner⼯具栏palette的⽅法Tools(⼯具栏)customsize toolbars(⾃定义⼯具栏)palette(调⾊板、控制板)勾选1.2.修改外键命名规则选择Database—>Edit Current DBMS选择Scripts-》Objects-》Reference-》ConstName可以发现右侧的Value为:FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%可见,该命名⽅法是:'FK_'+8位⼦表名+9位Reference名+8位⽗表名,你可以根据这中模式⾃定义为:FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%,可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1掌握这种⽅法后就可以按照⾃⼰的想法修改了⽣成建库脚本SQL⽂件中的表头注释很讨厌,可以在Databse -> Generate Database (Ctrl+G)窗⼝中,选择Options卡⽚,去掉Usage的Title钩选项即可。
添加外键Model -> References新建⼀条外键后,双击进⼊外键属性,在“Joins”卡⽚中可以选择⼦表的外键字段1.3.如何实现Name和code不⾃动相等设置tools--Gerneral options--->dialog---->name to code mirroring-------------------------------------如何把NAME 列在script⾥显⽰出来修改字段⽣成规则。
PowerDesigner操作手册目录一、POWERDESIGNER简介 (4)1.1常用模型文件 (4)1。
2P OWER D ESIGNER使用环境 (5)二、创建和管理CDM (6)1。
1新建CDM (6)1。
2实体及实体间关系 (10)1.2。
1 新建实体 (10)1.2。
2 使用实体间关系 (17)1。
2。
2.1使用联系181.2。
2.2 使用继承 (25)1。
3新建和使用域 (27)三、CDM生成PDM (31)四、PDM生成建表脚本 (34)五、PDM生成REPORT (40)六、总结 (44)一、PowerDesigner简介1.1常用模型文件公司主要使用PowerDesigner的以下两类模型文件:➢逻辑模型(CDM):描述了与任何软件和数据存储系统无关的数据库整体逻辑结构,通常包含了与物理数据库无关的数据对象,提供了一种描述企业运行或业务行为的形象化的表达方式。
➢物理模型(PDM):叙述数据库的物理实现。
主要目的是把CDM中建立的现实世界模型生成特定的DBMS脚本,产生数据库中保存信息的储存结构,保证数据在数据库中的完整性和一致性。
1.2PowerDesigner使用环境➢树形模型管理器:以树形方式展示模型所包含的内容以及内容之间的层次关系➢图表窗口:组织模型中的图表,以图形方式展示模型中各对象之间的关系➢输出窗口:显示操作结果➢常用工具面板:用于在图表窗口插入对象的常用工具,主要有以下一些:二、创建和管理CDM1.1 新建CDM1.选择菜单栏File—>New,打开New窗口2.在左边模型类型(Model type)列表中,选中Conceptual Data Model,单击“确认”按钮即新建了一个默认名为ConceptualDataModel_1的CDM工程3.在树形模型管理器中,右键单击新建的CDM工程名,从出现的菜单中选中Rename,即可将新建CDM工程名修改为自己想要的,如:NG-CRM5。
PowerDesigner使用手册1 PowerDesigner整体框架介绍1.1 PowerDesigner 介绍PowerDesigner是Sybase公司的CASE工具集,是图形化、易于使用的企业建模环境。
使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。
利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设计模型进行控制。
它可与许多流行的数据库设计软件,例如:PowerBuilder、Delphi、VB等相配合使用来缩短开发时间和使系统设计更优化PowerDesigner 主要包括以下功能:集成多种建模能力,能建立的模型包括:数据模型(E/R, Merise业务模型(BPMN, BPEL, ebXML应用模型(UML1.2 PowerDesigner环境介绍1.2.1对象浏览器介绍工作空间(Workspace它是浏览器中树的根,是组织及管理所有设计元素的虚拟环境。
你可以通过保存工作空间保存自己的设计空间信息以便再次打开时可以还原到保存前的状态。
项目(Project作为容纳你所有开发出的制品的容器,项目中的所有对象可以作为一个单元存到PowerDesigner库中。
每个项目自动维护一张图用以显示模型以及文档之间的依赖。
文件夹(folder工作空间可以包含用户自定义的文件夹用以组织模型和文件。
例如,你有两个独立的项目,希望在一个工作空间中处理,此时可以使用文件夹。
模型(Model模型是PowerDesigner中的基本设计单元。
每个模型中有一个或多个图以及若干模型对象。
包(Package当模型较大时,可能需要把模型拆分成多个“子模型”以便于操作,这些子模型就叫做包,今后可以把不同的包分配给不同的开发组。
图(Diagram展现模型对象之间的交互。
可以在模型或包中创建多个图。
最近用PowerDesigner15做数据库设计的时候发现如果先做好了CDM图,然后生成PDM,再生成SQL 2005或SQL 2008脚本,发现始终无法生成外键约束。
我估计很多人都遇到了类似的问题。
经过查找和摸索终于解决了这个问题,现在将过程叙述如下,希望对大家有帮助。
实验过程如下:1、生成在CDM中建立两个实体Entity_1和Entity_2,并建立关系Relationship。
2、自动生成MS SQL Server 2008的PDM。
3、选择DBMS类型为SQL 2008然后生成Database脚本从上面脚本可以看出没有生成需要的外键约束,只是生成了相关索引。
/*==============================================================*//* DBMS name: Microsoft SQL Server 2008 *//* Created on: 2013/1/17 15:49:18 *//*==============================================================*/if exists(select 1from sys.sysreferences r join sys.sysobjects o on (o.id=r.constid and o.type='F')where r.fkeyid=object_id('BarCode')and ='FK_BARCODE_RELATIONS_BARCODES')alter table BarCodedrop constraint FK_BARCODE_RELATIONS_BARCODESgoif exists(select 1from sysindexeswhere id=object_id('BarCode')and name='Relationship_1_FK'and indid> 0and indid< 255)drop index BarCode.Relationship_1_FKgoif exists(select 1from sysobjectswhere id=object_id('BarCode')and type='U')drop table BarCodegoif exists(select 1from sysobjectswhere id=object_id('BarcodeState')and type='U')drop table BarcodeStatego/*==============================================================*/ /* Table: BarCode *//*==============================================================*/ create table BarCode(barcodeID varchar(10)not null,barcodeStateID int null,structDate datetime null default getdate(), Extend1varchar(50)null,Extent2varchar(20)null,constraint PK_BARCODE primary key nonclustered (barcodeID),constraint AK_UQ_EXTEND1_BARCODE unique (Extend1))go/*==============================================================*/ /* Index: Relationship_1_FK *//*==============================================================*/ create index Relationship_1_FK on BarCode(barcodeStateID ASC)go/*==============================================================*//* Table: BarcodeState *//*==============================================================*/ create table BarcodeState(barcodeStateID int identity(1,1),barcodeStateName varchar(20)null,barcodeDescription text null,constraint PK_BARCODESTATE primary key nonclustered (barcodeStateID) )go解决方法如下:1.打开生成的PDM2.将DBMS类型换为MS SQL 20003.在Model菜单中选择References命令,可以看到最后的Implementation被设置为Trigger1.将Implementation被设置为Declarative(如果没有第二步就不能完成本步)2.将DBMS类型换为MS SQL 2008生成MS SQL 2008数据库生成脚本,能够正常生成需要的外键/*==============================================================*//* DBMS name: Microsoft SQL Server 2008 *//* Created on: 2013/1/17 15:49:18 *//*==============================================================*/if exists(select 1from sys.sysreferences r join sys.sysobjects o on (o.id=r.constid and o.type='F')where r.fkeyid=object_id('BarCode')and ='FK_BARCODE_RELATIONS_BARCODES')alter table BarCodedrop constraint FK_BARCODE_RELATIONS_BARCODESgoif exists(select 1from sysindexeswhere id=object_id('BarCode')and name='Relationship_1_FK'and indid> 0and indid< 255)drop index BarCode.Relationship_1_FKgoif exists(select 1from sysobjectswhere id=object_id('BarCode')and type='U')drop table BarCodegoif exists(select 1from sysobjectswhere id=object_id('BarcodeState')and type='U')drop table BarcodeStatego/*==============================================================*//* Table: BarCode *//*==============================================================*/ create table BarCode(barcodeID varchar(10)not null,barcodeStateID int null,structDate datetime null default getdate(),Extend1varchar(50)null,Extent2varchar(20)null,constraint PK_BARCODE primary key nonclustered (barcodeID),constraint AK_UQ_EXTEND1_BARCODE unique (Extend1))go/*==============================================================*//* Index: Relationship_1_FK *//*==============================================================*/ create index Relationship_1_FK on BarCode(barcodeStateID ASC)go/*==============================================================*//* Table: BarcodeState *//*==============================================================*/ create table BarcodeState(barcodeStateID int identity(1,1),barcodeStateName varchar(20)null,barcodeDescription text null,constraint PK_BARCODESTATE primary key nonclustered (barcodeStateID) )goalter table BarCodeadd constraint FK_BARCODE_RELATIONS_BARCODES foreign key (barcodeStateID)references BarcodeState(barcodeStateID)go3.。
使用powerdesigner创建oracle数据库表,设置表主键列为自动增长powerdesigner 版本12.5创建表就不说了。
下面开始介绍设置自动增长列。
1 在表视图的列上创建。
双击表视图,打开table properties ———>columens ,双击要设置的列(显示列的序号的那个按钮,单击后,会显示横向的黑色箭头)。
打开column properties 对话框。
在‘general’ 项中,最下面,找到sequence,下拉框后面,有三个按钮就‘create’,‘select’,‘properties’。
新建的话就点击‘create' 打开sequence properties 对话框,general 中的name,code 随意修改切换到physical options 项,输入下面几项内容start with 1increment by 1minvalue 1maxvalue 根据自己需要决定是否要设定。
没有的话,选择no max valueno cache 勾选输入完后,点击应用。
创建完毕。
在preview 中可以看到相应的创建代码同时,在table properties———>preview 的创建代码中,自动加入了触发器trigger 的创建代码。
创建完成。
使用:到table properties———>preview 中拷贝table 的创建代码,赋值到plsql中执行。
提示:不知道是我的powerdesigner 设置问题还是怎么回事,table 的创建代码中没有自动加入sequence 的创建部分。
所以,还要到sequence properties ———>preview 中,把sequence的创建代码拷贝到表创建的代码中放到cteate table .... 和create trigger ...中间例如:create table G_EC_LotteryCategory (lcId NUMBER(3) not null,lcName NVARCHAR2(30),lcAbbr NVARCHAR2(20),constraint PK_G_EC_LOTTERYCATEGORY primary key (lcId))/create sequence Sequence_LotCateIDincrement by 1start with 1nomaxvalueminvalue 1nocache;create trigger tib_g_ec_lotterycategory before inserton G_EC_LotteryCategory for each rowdeclareintegrity_error exception;errno integer;errmsg char(200);dummy integer;found boolean;begin-- Column lcId uses sequence Sequence_LotCateIDselect Sequence_LotCateID.NEXTVAL INTO :new.lcId from dual;-- Errors handlingexceptionwhen integrity_error thenraise_application_error(errno, errmsg);end;/在plsql 中执行上端代码。
PowerDesigner操作手册目录一、POWERDESIGNER简介 (3)1.1 常用模型文件 (3)1.2 P OWER D ESIGNER使用环境 (3)二、创建和管理CDM (4)1.1 新建CDM (4)1.2 实体及实体间关系 (4)1.2.1 新建实体 (4)1.2.2 使用实体间关系 (6)1.2.2.1使用联系61.2.2.2使用继承81.3 新建和使用域 (9)三、CDM生成PDM (10)四、PDM生成建表脚本 (11)五、PDM生成REPORT (13)六、总结 (13)一、PowerDesigner简介1.1常用模型文件公司主要使用PowerDesigner的以下两类模型文件:➢逻辑模型(CDM):描述了与任何软件和数据存储系统无关的数据库整体逻辑结构,通常包含了与物理数据库无关的数据对象,提供了一种描述企业运行或业务行为的形象化的表达方式。
➢物理模型(PDM):叙述数据库的物理实现。
主要目的是把CDM中建立的现实世界模型生成特定的DBMS脚本,产生数据库中保存信息的储存结构,保证数据在数据库中的完整性和一致性。
1.2PowerDesigner使用环境➢树形模型管理器:以树形方式展示模型所包含的内容以及内容之间的层次关系➢图表窗口:组织模型中的图表,以图形方式展示模型中各对象之间的关系➢输出窗口:显示操作结果➢常用工具面板:用于在图表窗口插入对象的常用工具,主要有以下一些:二、创建和管理CDM1.1 新建CDM1.选择菜单栏File->New,打开New窗口2.在左边模型类型(Model type)列表中,选中Conceptual DataModel,单击“确认”按钮即新建了一个默认名为ConceptualDataModel_1的CDM工程3.在树形模型管理器中,右键单击新建的CDM工程名,从出现的菜单中选中Rename,即可将新建CDM工程名修改为自己想要的,如:NG-CRM5.5逻辑模型4.在树形模型管理器中,右键单击新建的CDM工程名,从出现的菜单中选择New->Package即可新建一个包(Package)。
PowerDesigner使用建议(完整版)用实体关系图进行数据库建模2009-11-04 17:371.Powerdesigner使用建议1.1业务规则的使用(Business Rule)对于一些业务逻辑可能出现在多个数据表中,建议封装成Business Rule,这样便于业务逻辑的重新使用,也便于业务逻辑的维护。
为了便于维护业务逻辑,可以考虑将Business Rule和Domains 结合起来使用。
将业务Business Rule应用到Domains上,然后再把Domains应用到数据表的字段上。
例如:在拆迁项目中,拆迁业务部分,管理参数业务部分,房源业务部分,拆迁合同部分的数据表中都有楼层这个字段,因此先一个Business Rule,然后定义一个Domain,这样相应的数据表的字段就可以使用这个Domain了。
1.2.自定义数据类型(Domains)的使用oralce提供了一些内置的数据类型,但是用户也可以根据业务的需要,定义自定义的数据类型。
在自定义数据类型里面包装业务逻辑。
正如上面的房屋楼层,我们可以定义一个独立的数据类型(Domain)维护,然后在相关数据表的字段上使用这个自定义数据类型。
一般在定义自己的数据类型时候,可以在oracle基本类型上定义,然后可以加上一些standard check或者Business Rules。
比如:在拆迁项目中,面积类别这个字段在很多数据表都出现了,可以作为一个单独的数据类型类维护,定义一个” 面积类别” Domains(包含的种类有:0 --- 厅房面积,1 --- 使用面积,2 --- 单元面积,,3 --- 总建筑面积,4 --- 分摊面积)。
而且由于Powerdesigner 的提供关联作用,这样便于当业务逻辑发生了变动,能够很快查询出那些对象受到影响。
1.3序列号(Sequence)的使用在powersigner的模型里面定义一堆了Sequence,接下来的是要把他们和数据表的相关字段关联起来,特别是那些用于多个数据表字段的Sequence。
Power Designer 常见问题1.在生成代码时不包含drop语句在菜单Database->Generate Database,选择弹出的窗口中的Options标签页,去掉窗口右边drop...选项即可。
2.在生成代码中字段默认值不需要带单引号',如default'to_char(sysdate,'yyyymmdd')'要改成defaultto_char(sysdate,'yyyymmdd')在菜单Database->Edit Current DBMS...,选择general标签页,在窗口左边选择Script->Quote,然后把窗口右边的Value后面的单引号去掉。
3.生成的建表脚本中如何把对象的双引号去掉?打开cdm的情况下,进入Tools-Model Options-Naming Convention,把Name 和Code的标签的Charcter case选项设置成Uppercase或者Lowercase,只要不是Mixed Case就行!或者选择Database->Edit current database->Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的 comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”即可!或者在打开pdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设置成Uppercase就可以!4.修改mysql表的类型,如由默认的myisam改成innodb修改单个表的就在表的属性窗口中,选择Physcial Options标签页,双击窗口右边的窗口左边的type=(ISAM),然后在窗口右边下部选择sql,再修改成type=(innodb)如果修改数据库的类型为innodb类型,打开模型的属性窗口,选择MySQL标签页,在Database type后的编辑框中录入InnoDB即可。
PowerDesigner15使用时的十五个问题一般常用的有CDM,PDM,UML建模,CDM可以转为PDM。
支持正向[生成数据库]和逆向工程[从数据库中生成],并直接关联到到数据库中,PDM可以直接和数据库进行关联,并将数据库,表,视图,触发器等数据库对象生成到数据库中,也可将这些对象更新到PDM中。
PowerDesigner的几个主要常用菜单是MODEL、DATEBASE、Tool,这三个菜单下命令使用比较多,要熟悉。
PD 还可以用来画用例图,序列图,类图等UML图。
也可以画企业架构图,软件应用架构图等等图形15个问题列表:No.1:是不是一定要从CDM开始设计,然后在进行PDM的设计?NO.2:工具栏palette不见了,如何把它找出来?NO.3: 如何建立与数据库的关联?NO.4: 域和数据项有何作用?No.5: 如何生成主键的自定义增长列,SQL Server和Oracle数据分别是如何操作的?No.6: NAME和CODE联动,如何取消?NO.7. 如何实现字段的NAME和Comment属性互换?NO.8: 如何修改某个对象的命名规则,比如外键,比如主键,比如触发器等?No.9: 如何用PD生成测试数据,以便测试?No.10 如何把CODE的NAME中文也生成在脚本中,也就是列名后就是NAME的说明文字?NO.11 如何将数据库结构,表名,表的字段导出到Word中,或者生成HTML文件以便查看?No.12 如何去除生成SQL时的双引号问题,双引号在Oracle中可以保证大小写,却异常麻烦?NO.13 如何修改PD的显示样式?No.14 如何去除表名,字段的长度限制?No.15 如何进行数据库的逆向工程?说明:本文提到的PD基于PD15.英文版。
No1:是不是一定要从CDM开始设计,然后在进行PDM的设计?本人觉得没有必要,项目的大小、熟悉程度、起步和个人习惯不一样,熟练业务的,项目小的直接用PDM设计未尝不可。