
PowerDesigner概念模型物理模型.pdf
24页在在 PowerDesigner 中设计概念模型中设计概念模型 在概念模型中主要有以下几个操作和设置的对象:实体(Entity) 、实体属性(Attribute) 、实体标识(Identifiers) 、关系 (Relationship) 、继承(Inheritance) 、关联(Association) 、关联 连接(Association Link) 实体 实体就是我们抽象出的对象,比如:一个选课系统中,学生、教师、班级、课程等等都是实体 实体属性就是一个实体中所包含的简单属性, 比如学生实体, 具有学号、 姓名、 生日、 性别等属性 另外实体还有个标识用于唯一的标识出每个实体实例, 比如学生实体中就可用将学生的学号作为该实体的标识标识可用是一 个实体属性也可以是多个属性的结合在 PD 中新建一个新的概念模型,系统将出现一个工具栏如下,用于在设计面板中设计模型 单击 Entity 图标,然后在设计主面板中单击一次便可添加一个实体再单击鼠标图标,即可切换回一般鼠标的模式双击已经添加的实体,弹出实体属性设置对话框,在 General 中可 以设置实体的 Name 和 Code 等属性,如图所示: 切换到 Attributes 选项卡可以设置实体的属性 Name、Code、DataType 等,右边还有 3 个复 选框,M 表示不能为空,P 表示是标识 属性,D 表示在模型图中是否显示,如果在设置属性时直接选中 StudentID 的 P 复选框,系统将会自动生成该 Student 实体的一个 Identifier。
如果不希望系统自动生成而是手动设置的话,那么切换到 Identifiers 选项卡,添加一行Identifier, 然后单击左上角的“属性”按 钮, 然后弹出的标识属性设置对话框中单击“添加行” 按钮,选择该标识中使用的属性例如将学号设置为学生实体的标识,具体操作如图所示: 整个设置好的实体如图所示: 关系 关系用于表示一个实体与另外一个实体之间的对应关系, 分为一对一 (1:1) , 一对多 (1:n) ,多对一(n:1) ,多对多(m:n)4 种对应关系,一对多和多对一其实就是方向相反,所以实 际上就是一对一、一对多和多对多 最最常用的就是一对多,比如班级实体和学生实体就是一对多关系,一个班级有多个学生,一个学生只会属于一个班级在设计面板中添加一个 Class 实 体,然后单击工具栏的 Relationship 按钮,然后在 Class 实体上单击一下,再到 Student 上单击一下,就可以在 Class和 Student 之间建立一对多关系,如图: 系统默认会给该关系一个命名 Relationship_1,切换到鼠标指针模式,双击 Relationship_1, 即可打开关系的属性窗口,可以在 General 选项卡中修改该关系的 Name、Code 等,如图: 切换到 Cardinalities 选项卡,上面可以修改是一对多还是多对多之类的关系,下面的 Role name 没有多大的意义,就是在模型中显示文字,多的一方有 0,n 和 1,n 两种,也就是说一个班级可以对应多个学生,那么一个班级中最少是没有学生还是要 至少存在一个学生,同样的一的一方有 0,1 和 1,1 两种,就是说一个学生是可以不属于任何班级呢还是必须属于某 一个存在的班级,这里我们都选至少是 1,所 以最终的设置界面如图: 继承 在概念模型中的继承与在 OO 模型中的继承是一回事,就是要抽象出一个实体,其他实体继 承该实体后就拥有该实体的属性。
同样以选课系统为例,现在有学生实体,有教师实体,其他他们都是人,具有人的属性,所 以我们可以抽象出一个人的实体,人具有性别、生日、名字等属性,教师具有职称、工号等属性这是学生没有的,所以不能放在人实体中,学生具有学号属性是教师没有的 这里只是概念模型, 在 DBMS 中是没有继承这种说法的, 所以在接下来的逻辑模型和物理模型中,系统就会将继承转换为实际的实体和表这里只是概念模型,所以才有继承的说法 关联(Association)我也不知道这个翻译成中文用哪个词比较好,就暂且用“关联”吧 Association 也是一种实体间的连接,在 Merise 模型方法学理论中,Association 是一种用于 连接分别代表明确定义的对象的不同实体, 这种连接仅仅通过另一个实体不能很明确地表达, 而通过“事件(Event)”连接来表示 也就是说,实体和实体之间存在着关系(多对多) ,但是这种关系还存在其他的属性,这些 属性如果如果作为一个明确的实体的实体来表示又不是很合适,所以就使用了 Association来表达,这种关系之间一般是一个“事件”虚实体,也就是说是一个动词对应的实体 前面说的可能还是太抽象,以实际的例子来说明:现在有了学生实体,有课程实体,一个学 生可以选择多门课程,一门课程有多个学生来上课,所以之间就存在一个“选课”的 Association,其中记录了学生选课的时间、选课的状态: 一个学生会对应多个选课结果选择多门课程, 一个课程对应多个选课学生选课, 所以学生实 体和课程实体与选课的关系都是一对多,添加关联连接,一门课程 可能太枯燥了,没有学生来选,所以课程对应选课可能是 0,n,一个学生可能学分够了这学期一门课都不选,所以 学生对应选课也可能是 0,n 的关系,所以我们 最终形成的概念模型如图所示: 这就是一个完整的概念模型。
接下来就是要根据概念模型生成逻辑模型或者物理模型 【出自博客园深蓝居,转载请注明作者出处】 在在 PowerDesigner 中设计物理模型中设计物理模型 1——表和主外键表和主外键 在 PD 中建立物理模型由以下几种办法: 直接新建物理模型 设计好概念模型,然后由概念模型生成物理模型 设计好逻辑模型,然后由逻辑模型生成物理模型 使用逆向工程的方法,连接到现有的数据库,由数据库生成物理模型 物理模型能够直观的反应出当前数据库的结构在数据库中的表、视图、存储过程等数据库对象都可以在物理模型中进行设计 由于物理模型和数据库的一致性, 接下来以数据库对象和物理模型对象的对应来一一介绍: 表 新建物理模型时需要指定物理模型对应的 DBMS,这里我们使用 SQL Server 2008,新建一个 物理模型后,系统会显示一个专门用于物理模型设计的工具栏: 若要在物理模型中添加一个表,单击“表”按钮,然后再到模型设计面板中单击一次便可添加 一个表,系统默认为表命名为 Table_n,这里的 n 会随着添加的表增多而顺序增加添加的表是没有任何列的,如图所示: 单击工具栏的鼠标指针按钮,将鼠标切换回指针模式,然后双击一个表,系统将打开表属性窗口,在 General 选项卡中可以设置表的 Name、 Code 等属性。
例如我们要新建一个教室 表(ClassRoom) ,则可修改 Name 和 CodeName 是在模型中显示的名称,Code 是生成数 据库表 的时候的实际表名另外 Name 中的内容还会作为 SQL Server 中的表备注 单击 Columns 切换到列选项卡,在下面的列表中可以添加表中的列Name 是模型上显示的 名称,Code 是生成的实际的表名,后面的 3 个复选框 P 代办主键、F 代表外键,M 代表不能为空为教室表设计了两个列,如图所示: 主键 在设计一个表时,一般情况下每个表都会有一个主键,主键分为单列主键和复合主键在为 表设置主键时有以下几种办法: 1.在 Columns 选项卡中,直接选中主键列的 P 列复选框,这是最简单的方式 2.选中一个列,然后单击工具栏中的“属性”按钮,系统将弹出列属性窗口,在该窗口中可以 设置该列的各种属性,当然也包括该列是否是否是主键另外还有一个很重要的复选框是“Identity”选中 Identity 复选框则表示该列为自增列 3.切换到 Keys 选项卡中,在其中添加一行命名为 PK_ClassRoom,然后单击工具栏的“属性”按钮,打开键属性窗口,在该窗口中切换到 Columns 选项卡,单击添加列按钮,弹出列选择 窗口,选中主键中应该包含的列,单击确定按钮即可完成主键的创建。
另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“键属性”窗口的 General 选项卡中可以设置该主键上建立的索引是聚集索引还是非 聚集索引,如图所示: 外键 如果是由概念模型或者逻辑模型生成物理模型,那么外键是通过 Relationship 生成的,也可 以通过工具栏中的 Reference 来实现两表之 间的外键关系假如一个课程只会在一个固定 的教室上课, 而一个教室会安排多个课程在不同的时间上课, 所以教室和课程是一对多的关 系,那么课程表中就需要添 加 RoomID 列以形成外键列,具体操作方法就是在工具栏中单击“Reference”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中 放开 鼠标,这时如果课程表中没有 RoomID 列,系统会自动创建 RoomID 列并创建该列上的外键引用,如果已经存在 RoomID 列,则只添加外键引用, 不会再添加新列 切换到鼠标指针模式,双击箭头,系统将弹出引用的属性窗口,在属性窗口中可以设置该引 用的 Name、Code、关联的列、约束名、更新策略和删除策略等 下一篇文章将会介绍其他约束具体包括: 1.CHECK 约束 2.默认值约束 3.非空约束 …… 另外在物理模型中还包括:视图、存储过程、函数、触发器等都会在接下来的几篇文章中讲解到。
【出自博客园深蓝居,转载请注明作者出处】 在在 PowerDesigner 中设计物理模型中设计物理模型 2——约束约束 唯一约束 唯一约束与创建唯一索引基本上是一回事, 因为在创建唯一约束的时候, 系统会创建对应的 一个唯一索引,通过唯一索引来实现约束不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所以一般建议创建唯一约束而不是只创建唯一索引 在 PD 中创建唯一约束的操作,以教室表来说,RoomID 是主键,必然是唯一的,RoomName如果我们也要去必须是唯一的,那么具体操作如下: 在 PD 的模型设计面板中,双击“教室”表,打开属性窗口,切换到“”Keys”选项卡,可以看到 里面有一行数据 PK_ClassRoom,这是主键 约束添加一行数据,命名为 UQ_RoomName, 不能将右边的“P”列选上, 然后单击工具栏的“属性”按钮, 弹出 UQ_RoomName 的属性窗口, 切换到列选项卡,单击增加列按钮,选择将 RoomName 列添加到其中,然后单击确定即可 完成唯一约束的添加 这样系统就会自动创建唯一约束 CHECK 约束 CHECK 分为列约束和表约束, 列约束是只对表中的某一个列进行的约束, 可以在列的属性中进行设置,而表约束是对多个列进行的约束,需要在表的属性中进行设置(其实列约束也可 以在表约束中设置) 。
1.标准 CHECK 约束 对于一些常用的 CHECK 约束,可以直接通过设置界面来完成以班级表为例,ClassName 每 个学校有自己的命名规则,假设这里规定 ClassName 必须以 2 开头,那么需要在 ClassName列上定义 CHECK 约束,使得其满足命名规范具体操作是在 PD 中双击 Class 表,打开 Class 的属性窗口, 切换到列选项卡, 选择 ClassName 列, 单击工具栏的“属性”按钮, 弹出 ClassName的属性窗口,切换到 StandardChecks 选项卡如图: 在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下: 参数 说明 Minimum 属性可接受的最小数 Maximum 属性可接受的最大数。
