PowerDesigner使用教程
PowerDesigner的基本操作-图文

PowerDesigner的基本操作-图文第2章PowerDeigner的基本操作完美的模型源于娴熟的技巧。
因此,熟悉建模环境,掌握模型设计基本操作至关重要。
本章将从安装PowerDeigner及其相关工具软件开始,详细叙述PowerDeigner建模环境,以及模型设计基本操作方法。
2.1安装PowerDeigner及相关工具软件利用PowerDeigner进行软件分析建模,必须正确安装PowerDeigner 产品。
PowerDeigner采用模块化的结构组织其建模产品,这为购买和扩展提供了极大的灵活性,读者可根据实际需要选择。
购买不同的PowerDeigner产品,包含的模块不同,安装界面中的内容也略有不同。
2.1.1软硬件环境要求安装PowerDeigner之前,需首先确认安装的软硬件环境要求,然后根据实际需求选择安装相关软件。
1.安装PowerDeigner15的系统要求1.5GHz的处理器。
1GBRAM。
SVGA或更高分辨率的图形适配器和兼容的彩色显示器。
CD-ROW驱动器。
500MB以上磁盘空间(用于安装PowerDeigner核心模块)。
MicrooftWindow某P、MicrooftWindowServer或MicrooftWindowVita。
2.需要安装的软件MicrooftSQLServer等等,可根据需要选择安装。
MicrooftOffice产品。
除此之外,可根据实际需求选择安装不同的辅助软件。
例如:利用PowerDeigner建立物理数据模型的多维图时,应安装一种联机分析处理(OLAP)产品,可以选择SybaeASIQ、MicrooftSQLServerAnlyiServiee 等;利用PowerDeigner导入Viio图形时,除安装PowerDeigner15中附带的Viio插件外,还需安装Viio2003或2007产品做支持。
2.1.2安装步骤运行PowerDeigner15.e某e文件,打开安装向导欢迎界面口该界面显示了安装的产品及版本信息。
PowerDesigner设计数据库使用规范

PowerDesigner设计数据库使用步骤及规范使用PowerDesigner可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。
它可以制作多种数据模型,也能对团队设计模型进行控制。
还可以与许多流行的软件开发工具,例如PowerBuilder、Delphi、VB等相配合使系统设计更优化并缩短开发时间。
并不是每个设计都需要用到PD,对于比较大型的项目,它是很好的,对于短平快类型的项目,例如时间要求一周左右的系统,没有必要使用,直接维护数据库即可,对于表的数量超过10个的系统,建议使用PD进行设计和交流。
1.创建概念数据模型(CDM)1.1创建CDM步骤选择文件 建立新模型,弹出如图所示对话框,选择ConceptualDataModel 模型(即概念数据模型),单击OK,即确认创建。
双击资源浏览窗口中新创建的CDM 名称图标,打开CDM 模型属性窗口,进行相关属性信息设置。
如下图:1.2对象命名通用规范以下三种规范属于基本规范,适用于本文所有数据库对象命名规范。
1、长度规范:凡是需要命名的对象其标识符均不能超过3个英文单词长度(30个字符),也即:Oracle中的表名、字段名,函数名,过程名,触发器名,序列名,视图名的长度均不能超过3个英文单词长度(30个字符);2、构成规范:数据库各种名称必须以字母开头,但严禁使用SYS开头;名称只能含有字母,数字和下划线“_”三类字符,“_”用于间隔名称中的各语义字段;不要使用DUAL作表名;3、大小写规范:构成Oracle数据库中的各种名称(表明,字段名,过程名,视图名等等)的所有字符,必须使用大写,也就是不能在脚本中,对任何名称添加双引号“”来设定字符的大小写形式,只要不采用“”限制,Oracle自动会将各名称转化成大写。
2.进行ER设计的准备工作2.1实体命名不相同检查PowerDesigner默认不能存在相同名称的实体属性,这也是考虑到可能产生的一些如主键外键等名称冲突问题,但当进行实际数据库设计时,可能会多次使用相同数据项(DataItem)便于理解各实体。
PowerDesigner使用方法详细说明(基础资料)

(详细的知识或者和数据库相关的请自行脑补,这里直介绍如何很好的使用PowerDesigner这个工具)
下面将介绍概念模型转为物理模型和物理模型转换为概念模型
1:如下图所示先打开概念模型图,然后点击Tool,如下图所示
(点开的页面如下所示,name和code我已经从概念模型1改成物理模型1了)
(上面的name和code起好后就可以在Cardinalities这块查看班级和学生的关系,可以看到班级的一端是一条线,学生的一端是三条,代表班级对学生是一对多的关系即one对many的关系,点击应用,然后确定即可)
9:一对多和多对一练习完还有多对多的练习,如下图操作所示(当你操作几遍之后发现自己已经非常熟练的使用此工具,是不是感觉棒棒哒),老师实体和上面介绍的一样,自己将name,data type等等修改成自己需要的即可,满足项目开发需求即可。(comment是解释说明,自己可以写相关的介绍和说明)
Code属性代号一般用英文UID DataType
Domain域表示属性取值范围如可以创建10个字符的地址域
M:Mandatory强制属性,表示该属性必填。不能为空
P:Primary Identifer是否是主标识符,表示实体店唯一标识符
D:Displayed显示出来,默认全部勾选
(在此上图说明name和code的起名方法)
(多对多需要注意的时自己可以手动点击按钮将关系调整称为多对多的关系many对many的关系,然后点击应用和确定即可)
综上即可完成最简单的学生,班级,教师这种概念数据模型的设计,需要考虑数据的类型和主标识码,是否为空。关系是一对一还是一对多还是多对多的关系,自己需要先规划好再设计,然后就ok了。
PowerDesigner使用教程

点击物理数据模型,填写模型名、数据库版本:点击ok,如果不⼩⼼选错了,也不要紧,可以在Database选项卡中重新编辑。
接下来将产⽣模型名称、表的⼯具栏:⼯具栏可以建表:填写表名称:Columns编辑表选中右键>属性可以添加序列:给序列命名:给序列定义:查看序列⽣成:⽣成序列的sql语句显⽰如下:可以点击表再添加个字段(项⽬经理Id):可以看⼀下表结构:再建⼀个项⽬经理表:项⽬经理表字段:现在有两个表了:此时点击reference,可以建⽴两个表间,相同字段的主外键关系(带fk的都是从表):此时双击箭头可以对reference进⾏编辑:此时就可以保存了,可以ctrl+s,即可另存为pdm⽂件:保存于桌⾯即可接着可以根据模型来⽣成sql语句:选择在桌⾯⽣成sql即可:可以看到桌⾯上⽣成了sql⽂件:打开crebas.sql/*==============================================================*/ /* DBMS name: ORACLE Version 10g *//* Created on: 2020/4/6 4:00:38 *//*==============================================================*/ -- Type package declarationcreate or replace package PDTypesasTYPE ref_cursor IS REF CURSOR;end;-- Integrity package declarationcreate or replace package IntegrityPackage ASprocedure InitNestLevel;function GetNestLevel return number;procedure NextNestLevel;procedure PreviousNestLevel;end IntegrityPackage;/-- Integrity package definitioncreate or replace package body IntegrityPackage ASNestLevel number;-- Procedure to initialize the trigger nest levelprocedure InitNestLevel isbeginNestLevel := 0;end;-- Function to return the trigger nest levelfunction GetNestLevel return number isbeginif NestLevel is null thenNestLevel := 0;end if;return(NestLevel);end;-- Procedure to increase the trigger nest levelprocedure NextNestLevel isbeginif NestLevel is null thenNestLevel := 0;end if;NestLevel := NestLevel + 1;end;-- Procedure to decrease the trigger nest levelprocedure PreviousNestLevel isbeginNestLevel := NestLevel - 1;end;end IntegrityPackage;/drop trigger "CompoundDeleteTrigger_coder"/drop trigger "CompoundUpdateTrigger_coder"/drop trigger "tib_coder"/drop trigger "CompoundInsertTrigger_coder"/alter table "coder"drop constraint FK_CODER_REFERENCE_PRO_MAN/drop table "coder" cascade constraints/drop table "pro_man" cascade constraints/drop sequence "Sequence_2"/drop sequence "Sequence_3"/drop sequence "coder_seq"/create sequence "Sequence_2"/create sequence "Sequence_3"/create sequence "coder_seq"increment by 1start with 1maxvalue 999minvalue 1cache 20//*==============================================================*/ /* Table: "coder" *//*==============================================================*/ create table "coder" ("cId" NUMBER(10) not null,"cname" varchar2(20),"pmId" number(10),constraint PK_CODER primary key ("cId"))//*==============================================================*/ /* Table: "pro_man" *//*==============================================================*/ create table "pro_man" ("pmId" number(10) not null,"pmName" varchar2(20),constraint PK_PRO_MAN primary key ("pmId"))/alter table "coder"add constraint FK_CODER_REFERENCE_PRO_MAN foreign key ("pmId")references "pro_man" ("pmId")/create trigger "CompoundDeleteTrigger_coder" before deleteon "coder"for each rowdeclareintegrity_error exception;errno integer;errmsg char(200);dummy integer;found boolean;begin-- Errors handlingexceptionwhen integrity_error thenraise_application_error(errno, errmsg);end;/create trigger "CompoundUpdateTrigger_coder" before update of "cId","pmId"on "coder"for each rowdeclareintegrity_error exception;errno integer;errmsg char(200);dummy integer;found boolean;seq NUMBER;beginseq := IntegrityPackage.GetNestLevel;-- Errors handlingexceptionwhen integrity_error thenraise_application_error(errno, errmsg);end;/create trigger "tib_coder" before inserton "coder"for each rowdeclareintegrity_error exception;errno integer;errmsg char(200);dummy integer;found boolean;begin-- Column ""cId"" uses sequence coder_seqselect coder_seq.NEXTVAL INTO :new."cId"from dual;-- Errors handlingexceptionwhen integrity_error thenraise_application_error(errno, errmsg);end;/create trigger "CompoundInsertTrigger_coder" before insert on "coder"for each rowdeclareintegrity_error exception;errno integer;errmsg char(200);dummy integer;found boolean;begin-- Column ""cId"" uses sequence coder_seqselect coder_seq.NEXTVAL INTO :new."cId"from dual;-- Errors handlingexceptionwhen integrity_error thenraise_application_error(errno, errmsg);end;/接着就是反转的过程:命名模型,然后选择要反转的数据库版本:点击Using a data source,然后点击右侧数据库⼩图标:接着点configure(配置数据源):点击Add Data Source:选择系统数据源:接着选Oracle in OraDb10g_home1(其实这⼀步是⾃动检测你的数据库版本,所以只有⼀个10g)点完成:接着需要填:如果忘记了,可以登⼀下数据库:完善数据源和服务信息、⽤户id:数据源名⾃⼰起、TNS Service Name会⾃动匹配出服务名选择即可(就是数据库名),scott是⽤户名。
PowerDesigner的使用

PowerDesigner的使用1.用PowerDesigner建表(图 1-1)A.安装好Power Designer软件,并打开如图1-1.(图 1-2)B.右键Workspace --->New --->Physical Data Model 会跳出如上图 1-2 的框点击确定后界面会变成如图 1-3 所示。
(图1-3)C.单击选中右上方Palette框中的table图案(鼠标移到图案上就会有提示),然后在空白处单击就会出现一个table样子的小框如图 1-4 所示.(图 1-4)D.右键图1-4 ,然后单击Columns,会弹出图1-5的框.在这里填写一些表的字段等信息,填好后点击应用,再点确定按钮则表就会变成如图1-6的样子(图1-6)(图1-5)E.当你两张表有外健关联时,可以用Palette框中的Reference图案表示,具体请看图所示,比如还有一张表Table_2,如图1-7.(图1-7)F.假如table_2中的班级编号是table_1中编号的外键,则可以选中Reference图案,单击table_1,并拖动鼠标到table_2,并双击出现的虚线,弹出一个框,如图1-8所示,根据两张表的关系,填入相应的值,单击应用和确定(图1-8)2.与数据库连接,将数据库中的表导入PowerDesignerA.要想将数据库中的表导入PowerDesigner首先得连接数据库,连接数据库的操作如下。
B.单击菜单栏上的File ---> Reverse Engineer --> Database 弹出如图2-1的框。
(图2-1)C.在图2-1中的DBMS栏中选择你用的数据库(我用的是oracle,选ORACLE Veision 10g)点击确定,弹出如图2-2的框,选中Using a data source ,并单击文本框右边的数据库图标,弹出图2-3的框.(图2-2)(图2-3)D.单击Configure...,弹出图2-4 的框.(图2-4)E.单击图2-4中的数据库图标,弹出图2-5的框.选中用户数据源,单击下一步.(图2-5)F.弹出图2-6的框,选中Microsoft ODBC for Oracle 单击下一步.(图2-6)G.弹出图2-7的框,单击完成。
PowerDesigner使用步骤说明

使用步骤:1.新建Conceptual Data Model文件,概念数据模型(CDM)。
2.工具(tool)里面生成…功能的第二项,或者ctrl+G生成物理数据模型(PDM文件后缀,我们常见的表的型式)。
3./数据库/生成数据库,或者ctrl+G生成sql脚本。
过程1中的技巧:a.同一个字段不能重复的写,如果要重复的使用该字段,该字段在拥有这个字段的表中应该是主键,其他要拥有该字段的表可以与该表建立多对一的关系,如此生成PDM后,该字段会自动的作为外键添加到需要的表中。
b.如果一个实体(表)没有一个自己的主键(作为其主键的是外键),则该实体应该写为“联合连接”(多对多关系)。
c.“关系”默认为一对多关系,在画一个关系的时候,出发点为一方,终点为多方。
d.设不了主键的原因:如果一个字段在多个表中出现则设不了,请删除在他表中多余重复的同名字段。
e.即使删除了表,曾经保存实体或关系时产生的字段仍然会存在,以便于在另外的地方引用时输入字段名,保存即可看到该字段已经设定好类型了,因此应该事先计划好字段(可以打开浏览器Data Items,找到并删除之)。
f.过程2中常见的报错:a.注意PDM生成选项中,DBMS请选择对应的类型,如选择Microsoft SQL Server 2000,否则生成的脚本出错,运行不了;注意不要点击下拉框右边的改变文件夹路径的设置,若改了请改回,否则会找不到选项。
b.Undefined data type 为未定义数据类型错误。
c.Existence of identifiers “实体”没有自己的主键,却有一个或多个外键,若与多个外键连接则该“实体”应该为“关系”,否则该有主键的主键。
d.原先和有主键的表建立了关系后,删除了关系而没有及时的删除主键表中的[标识符]信息(主键表的最末行有identifier_1 <pi>)e.Existence of referencef.Existence of relationship 与外界没有关系。
PowerDesigner 使用手册

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展现模型对象之间的交互。
可以在模型或包中创建多个图。
powerDesigner使用教程

需求模型基础(Requirement model basics)Requirements Model(RQM)是一种文档式模型,它通过准确恰当地列出,解释开发过程程中需要实现的功能行为来描述待开发项目。
你可以为开发过程中需要使用到的各种结构化技术文档(功能或技术规格说明书,测试计划)而使用Requirements ModelRequirements Model以下面两种视图呈现(而不是以图表形式):需求文档视图对一系列公共属性进行编号可编辑行矩阵单元格代表了当前需求与设计对象,外部文件或其它需求的联系(对划)1. Properties(属性设置) 对对象进行设置2. 插入一个对象3. 插入一个子对象4. Promote5. Remote这俩进行对象的父子关系的调节6. 用户自定义显示列名左侧导航栏显示各个对象,可以进行新增及修改删除等操作定义Users和GroupsUsers(用户)指在一个需求模型中至少和一个已定义需求有关的人的集合。
Groups(组)指专属于开发进程中一个或多个方面的用户类别。
每个用户组要与需求模型中至少一个已定义需求有关。
建立Business rules(业务规则)业务规则是对为满足业务需求,模型应包括的特定内容或关于如何构建模型方面的描述清单。
在Requirement Model状态下,PowerDesigner默认Business为不可用状态,为此我们需要新建Extended model definition来激活Business rules生成模型报告文档生成ReportPowerDesigner提供对Report的操作有关于Report Template Editor(报告模版编辑器),Report Template(报告模版),Report Editor(报告编辑器),Multi-Model report editor(多模型报告编辑器),Report Language Editor(报告语言编辑器)1.使用Report Template Editor(报告模版编辑器)打开报告模版编辑器Tools->Resource->Report Templates,打开List of Report template(报告模版列表),显示当前系统中存在的报告模版,如下图所示在Type下拉列表中选择相应的模版类型,可用模版中会显示对应选择的模版,同时也可以通过单击模版列表工具栏上的new来新建需要的模版选择相应的模版(双击),进入相应模版属性编辑器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PowerDesigner使用教程——概念数据模型一、概念数据模型概述概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。
它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。
通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。
换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系(Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM转换为计算机上某个DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。
CDM是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的静态特性、动态特性以及完整性约束条件等,其中包括了数据结构、数据操作和完整性约束三部分。
1)数据结构表达为实体和属性;2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作;3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系等);二、实体、属性及标识符的定义实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。
例如,学校中的每个学生,医院中的每个手术。
每个实体都有用来描述实体特征的一组性质,称之为属性,一个实体由若干个属性来描述。
如学生实体可由学号、姓名、性别、出生年月、所在系别、入学年份等属性组成。
实体集(Entity Set)是具体相同类型及相同性质实体的集合。
例如学校所有学生的集合可定义为“学生”实体集,“学生”实体集中的每个实体均具有学号、姓名、性别、出生年月、所在系别、入学年份等性质。
实体类型(Entity Type)是实体集中每个实体所具有的共同性质的集合,例如“患者”实体类型为:患者{门诊号,姓名,性别,年龄,身份证号.............}。
实体是实体类型的一个实例,在含义明确的情况下,实体、实体类型通常互换使用。
实体类型中的每个实体包含唯一标识它的一个或一组属性,这些属性称为实体类型的标识符(Identifier),如“学号”是学生实体类型的标识符,“姓名”、“出生日期”、“信址”共同组成“公民”实体类型的标识符。
有些实体类型可以有几组属性充当标识符,选定其中一组属性作为实体类型的主标识符,其他的作为次标识符。
三、实体、属性及标识符的表达四、新建概念数据模型1)选择File-->New,弹出如图所示对话框,选择CDM模型(即概念数据模型)建立模型。
2)完成概念数据模型的创建。
以下图示,对当前的工作空间进行简单介绍。
(以后再更详细说明)3)选择新增的CDM模型,右击,在弹出的菜单中选择“Properties”属性项,弹出如图所示对话框。
在“General”标签里可以输入所建模型的名称、代码、描述、创建者、版本以及默认的图表等等信息。
在“Notes”标签里可以输入相关描述及说明信息。
当然再有更多的标签,可以点击"More>>"按钮,这里就不再进行详细解释。
五、定义实体1、创建实体1)在CDM的图形窗口中,单击工具选项版上的Entity工具,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。
点击Pointer工具或右击鼠标,释放Entitiy工具。
如图所示2)双击刚创建的实体符号,打开下列图标窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。
Name:是用来在模型中标识一个实体,一般用于模型在界面中的显示(这个可以通过更改选项设置进行改变)。
在一个模型当中,实体的名字不能重复。
Code:在模型转化时一般作为对象的物理名称,比如把实体属性的Code转化为数据库中的列名,当然我们现在不必为了这个实体将来叫什么而费神,一般采取与Name一致即可。
Generate:默认是选择状态,如果取消,则在转化为其他模型时,会忽略这个实体。
2、添加实体属性1)在上述窗口的“Attribute”选项标签上可以添加属性,如下图所示。
注意:数据项中的“添加属性”和“重用已有数据项”这两项功能与模型中Data Item的Unique code 和Allow reuse选项有关。
P列表示该属性是否为主标识符;D列表示该属性是否在图形窗口中显示;M列表示该属性是否为强制的,即该列是否为空值。
如果一个实体属性为强制的,那么,这个属性在每条记录中都必须被赋值,不能为空。
按“Crtl+U”呼出“定制列过滤器”的窗口,可以根据自己的喜好和实际需要选择那些列出现在窗口中,那些隐藏。
使用快捷键“Crtl+E”可以允许或者禁止当前过滤器。
2)在上图所示窗口中,点击插入属性按钮,弹出属性对话框,如下图所示。
3、定义属性的检查约束1)定义属性的标准检查标准检查约束是一组确保属性有效的表达式。
在实体属性的特性窗口,打开如图所示的检查选项卡。
在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下2)定义属性的附加检查当Standard checks 或Rules 不能满足检查的要求时,可以在Additional Checks选项卡的Server子页上,通过SQL语句中使用%MINMAX%、%LISTVAL%、%RULES%、%UPPER%、%LOWER% 几个变量来定义Standard和Rule,如图所示%MINMAX%、%LISTVAL%、%UPPER%、%LOWER%在Standard Check中定义的Minimum 和Maximum、List values 、uppervalues、lowervalues%RULES%在Rules特性窗口Expression选项卡中定义的有效性规则表达式六、标识符标识符是实体中一个或多个属性的集合,可用来唯一标识实体中的一个实例。
要强调的是,CDM中的标识符等价于PDM中的主键或候选键。
每个实体都必须至少有一个标识符。
如果实体只有一个标识符,则它为实体的主标识符。
如果实体有多个标识符,则其中一个被指定为主标识符,其余的标识符就是次标识符了。
1、定义主、次标识符1)选择某个实体双击弹出实体的属性对话框。
在Identifiers选项卡上可以进行实体标识符的定义。
如下图所示2)选择第一行“主标识符”,点击属性按钮或双击第一行“主标识符”,弹出属性对话框,如图所示3)选择"Attributes"选项卡,再点击“Add Attributes”工具,弹出如图所示窗口,选择某个属性作为标识符就行了。
七、数据项数据项(Data Item)是信息存储的最小单位,它可以附加在实体上作为实体的属性。
注意:模型中允许存在没有附加至任何实体上的数据项。
1、新建数据项1)使用“Model”---> Data Items 菜单,在打开的窗口中显示已有的数据项的列表,点击“Add a Row”按钮,创建一个新数据项,如图所示2)当然您可以继续设置具体数据项的Code、DataType、Length等等信息。
这里就不再详细说明了。
2、数据项的唯一性代码选项和重用选项使用Tools--->Model Options->Model Settings。
在Data Item组框中定义数据项的唯一性代码选项(Unique Code)与重用选项(Allow Reuse)。
注意:如果选择Unique Code复选框,每个数据项在同一个命名空间有唯一的代码,而选择Allow reuse ,一个数据项可以充当多个实体的属性。
3、在实体中添加数据项1)双击一个实体符号,打开该实体的属性窗口。
2)单击Attributes选项卡,打开如下图所示窗口注意:Add a DataItem 与Reuse a DataItem的区别在于Add a DataItem 情况下,选择一个已经存在的数据项,系统会自动复制所选择的数据项。
如果您设置了UniqueCode选项,那系统在复制过程中,新数据项的Code会自动生成一个唯一的号码,否则与所选择的数据项完全一致。
Reuse a DataItem情况下,只引用不新增,就是引用那些已经存在的数据项,作为新实体的数据项。
八、联系联系(Relationship)是指实体集这间或实体集内部实例之间的连接。
实体之间可以通过联系来相互关联。
与实体和实体集对应,联系也可以分为联系和联系集,联系集是实体集之间的联系,联系是实体之间的联系,联系是具有方向性的。
联系和联系集在含义明确的情况之下均可称为联系。
按照实体类型中实例之间的数量对应关系,通常可将联系分为4类,即一对一(ONE TO ONE)联系、一对多(ONE TO MANY)联系、多对一(MANY TO ONE)联系和多对多联系(MANY TO MANY)。
1、建立联系在CDM工具选项板中除了公共的工具外,还包括如下图所示的其它对象产生工具。
在图形窗口中创建两个实体后,单击“实体间建立联系”工具,单击一个实体,在按下鼠标左键的同时把光标拖至别一个实体上并释放鼠标左键,这样就在两个实体间创建了联系,右键单击图形窗口,释放Relationship工具。
如下图所示<!--[if !vml]--><!--[endif]-->在两个实体间建立了联系后,双击联系线,打开联系特性窗口,如图所示。
2、四种基本的联系即一对一(ONE TO ONE)联系、一对多(ONE TO MANY)联系、多对一(MANY TO ONE)联系和多对多联系(MANY TO MANY)。
如图所示3、其他几类特殊联系除了4种基本的联系之外,实体集与实体集之间还存在标定联系(Identify Relationship)、非标定联系(Non-Identify RelationShip)和递归联系(Recursive Relationship)。
标定联系:每个实体类型都有自己的标识符,如果两个实体集之间发生联系,其中一个实体类型的标识符进入另一个实体类型并与该实体类型中的标识符共同组成其标识符时,这种联系则称为标定联系,也叫依赖联系。
反之称为非标定联系,也叫非依赖联系。
注意:在非标定联系中,一个实体集中的部分实例依赖于另一个实例集中的实例,在这种依赖联系中,每个实体必须至少有一个标识符。
而在标定联系中,一个实体集中的全部实例完全依赖于另个实体集中的实例,在这种依赖联系中一个实体必须至少有一个标识符,而另一个实体却可以没有自己的标识符。
没有标识符的实体用它所依赖的实体的标识符作为自己的标识符。
换句话来理解,在标定联系中,一个实体(选课)依赖一个实体(学生),那么(学生)实体必须至少有一个标识符,而(选课)实体可以没有自己的标识符,没有标标识符的实体可以用实体(学生)的标识符作为自己的标识符。