《PowerDesigner概念模型物理模型.pdf》由会员分享,可在线阅读,更多相关《PowerDesigner概念模型物理模型.pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在在 PowerDesigner 中设计概念模型中设计概念模型 在概念模型中主要有以下几个操作和设置的对象:实体(Entity)、实体属性(Attribute)、实体标识(Identifiers)、关系(Relationship)、继承(Inheritance)、关联(Association)、关联连接(Association Link)。实体 实体就是我们抽象出的对象,比如:一个选课系统中,学生、教师、班级、课程等等都是实体。实体属性就是一个实体中所包含的简单属性,比如学生实体,具有学号、姓名、生日、性别等属性。另外实体还有个标识用于唯一的标识出每个实体实例,比如学生实体中就可用将学生的学号
2、作为该实体的标识。标识可用是一 个实体属性也可以是多个属性的结合。在PD 中新建一个新的概念模型,系统将出现一个工具栏如下,用于在设计面板中设计模型。单击 Entity 图标,然后在设计主面板中单击一次便可添加一个实体。再单击鼠标图标,即可切换回一般鼠标的模式。双击已经添加的实体,弹出实体属性设置对话框,在 General 中可以设置实体的 Name 和 Code 等属性,如图所示:切换到 Attributes 选项卡可以设置实体的属性 Name、Code、DataType 等,右边还有 3 个复选框,M 表示不能为空,P 表示是标识 属性,D 表示在模型图中是否显示,如果在设置属性时直接选中
3、 StudentID 的 P 复选框,系统将会自动生成该 Student 实体的一个 Identifier。如果不希望系统自动生成而是手动设置的话,那么切换到 Identifiers 选项卡,添加一行Identifier,然后单击左上角的“属性”按 钮,然后弹出的标识属性设置对话框中单击“添加行”按钮,选择该标识中使用的属性。例如将学号设置为学生实体的标识,具体操作如图所示:整个设置好的实体如图所示:关系 关系用于表示一个实体与另外一个实体之间的对应关系,分为一对一(1:1),一对多(1:n),多对一(n:1),多对多(m:n)4 种对应关系,一对多和多对一其实就是方向相反,所以实际上就是一对
4、一、一对多和多对多。最最常用的就是一对多,比如班级实体和学生实体就是一对多关系,一个班级有多个学生,一个学生只会属于一个班级。在设计面板中添加一个 Class 实 体,然后单击工具栏的Relationship 按钮,然后在 Class 实体上单击一下,再到 Student 上单击一下,就可以在 Class和 Student 之间建立一对多关系,如图:系统默认会给该关系一个命名 Relationship_1,切换到鼠标指针模式,双击 Relationship_1,即可打开关系的属性窗口,可以在 General 选项卡中修改该关系的 Name、Code 等,如图:切换到 Cardinalities
5、 选项卡,上面可以修改是一对多还是多对多之类的关系,下面的 Role name 没有多大的意义,就是在模型中显示文字,多的一方有 0,n 和 1,n 两种,也就是说一个班级可以对应多个学生,那么一个班级中最少是没有学生还是要 至少存在一个学生,同样的一的一方有 0,1 和 1,1 两种,就是说一个学生是可以不属于任何班级呢还是必须属于某一个存在的班级,这里我们都选至少是 1,所 以最终的设置界面如图:继承 在概念模型中的继承与在 OO 模型中的继承是一回事,就是要抽象出一个实体,其他实体继承该实体后就拥有该实体的属性。同样以选课系统为例,现在有学生实体,有教师实体,其他他们都是人,具有人的属性
6、,所以我们可以抽象出一个人的实体,人具有性别、生日、名字等属性,教师具有职称、工号等属性这是学生没有的,所以不能放在人实体中,学生具有学号属性是教师没有的。这里只是概念模型,在 DBMS 中是没有继承这种说法的,所以在接下来的逻辑模型和物理模型中,系统就会将继承转换为实际的实体和表。这里只是概念模型,所以才有继承的说法。关联(Association)我也不知道这个翻译成中文用哪个词比较好,就暂且用“关联”吧。Association 也是一种实体间的连接,在 Merise 模型方法学理论中,Association 是一种用于连接分别代表明确定义的对象的不同实体,这种连接仅仅通过另一个实体不能很明
7、确地表达,而通过“事件(Event)”连接来表示。也就是说,实体和实体之间存在着关系(多对多),但是这种关系还存在其他的属性,这些属性如果如果作为一个明确的实体的实体来表示又不是很合适,所以就使用了 Association来表达,这种关系之间一般是一个“事件”虚实体,也就是说是一个动词对应的实体。前面说的可能还是太抽象,以实际的例子来说明:现在有了学生实体,有课程实体,一个学生可以选择多门课程,一门课程有多个学生来上课,所以之间就存在一个“选课”的Association,其中记录了学生选课的时间、选课的状态:一个学生会对应多个选课结果选择多门课程,一个课程对应多个选课学生选课,所以学生实体和课
8、程实体与选课的关系都是一对多,添加关联连接,一门课程 可能太枯燥了,没有学生来选,所以课程对应选课可能是 0,n,一个学生可能学分够了这学期一门课都不选,所以学生对应选课也可能是 0,n 的关系,所以我们 最终形成的概念模型如图所示:这就是一个完整的概念模型。接下来就是要根据概念模型生成逻辑模型或者物理模型。【出自博客园深蓝居,转载请注明作者出处】在在 PowerDesigner 中设计物理模型中设计物理模型 1表和主外键表和主外键 在 PD 中建立物理模型由以下几种办法:直接新建物理模型。设计好概念模型,然后由概念模型生成物理模型。设计好逻辑模型,然后由逻辑模型生成物理模型。使用逆向工程的方
9、法,连接到现有的数据库,由数据库生成物理模型。物理模型能够直观的反应出当前数据库的结构。在数据库中的表、视图、存储过程等数据库对象都可以在物理模型中进行设计。由于物理模型和数据库的一致性,接下来以数据库对象和物理模型对象的对应来一一介绍:表 新建物理模型时需要指定物理模型对应的 DBMS,这里我们使用 SQL Server 2008,新建一个物理模型后,系统会显示一个专门用于物理模型设计的工具栏:若要在物理模型中添加一个表,单击“表”按钮,然后再到模型设计面板中单击一次便可添加一个表,系统默认为表命名为 Table_n,这里的 n 会随着添加的表增多而顺序增加。添加的表是没有任何列的,如图所示
10、:单击工具栏的鼠标指针按钮,将鼠标切换回指针模式,然后双击一个表,系统将打开表属性窗口,在 General 选项卡中可以设置表的 Name、Code 等属性。例如我们要新建一个教室表(ClassRoom),则可修改 Name 和 Code。Name 是在模型中显示的名称,Code 是生成数据库表 的时候的实际表名。另外 Name 中的内容还会作为 SQL Server 中的表备注。单击 Columns 切换到列选项卡,在下面的列表中可以添加表中的列。Name 是模型上显示的名称,Code 是生成的实际的表名,后面的 3 个复选框 P 代办主键、F 代表外键,M 代表不能为空。为教室表设计了两个
11、列,如图所示:主键 在设计一个表时,一般情况下每个表都会有一个主键,主键分为单列主键和复合主键。在为表设置主键时有以下几种办法:1.在 Columns 选项卡中,直接选中主键列的 P 列复选框,这是最简单的方式。2.选中一个列,然后单击工具栏中的“属性”按钮,系统将弹出列属性窗口,在该窗口中可以设置该列的各种属性,当然也包括该列是否是否是主键。另外还有一个很重要的复选框是“Identity”。选中 Identity 复选框则表示该列为自增列。3.切换到 Keys 选项卡中,在其中添加一行命名为 PK_ClassRoom,然后单击工具栏的“属性”按钮,打开键属性窗口,在该窗口中切换到 Colum
12、ns 选项卡,单击添加列按钮,弹出列选择窗口,选中主键中应该包含的列,单击确定按钮即可完成主键的创建。另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“键属性”窗口的 General 选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引,如图所示:外键 如果是由概念模型或者逻辑模型生成物理模型,那么外键是通过 Relationship 生成的,也可以通过工具栏中的 Reference 来实现两表之 间的外键关系。假如一个课程只会在一个固定的教室上课,而一个教室会安排多个课程在不同的时间上课,所以教室和课程是一对多的关系,那么课程表中就需要添 加 R
13、oomID 列以形成外键列,具体操作方法就是在工具栏中单击“Reference”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中 放开鼠标,这时如果课程表中没有 RoomID 列,系统会自动创建 RoomID 列并创建该列上的外键引用,如果已经存在 RoomID 列,则只添加外键引用,不会再添加新列。切换到鼠标指针模式,双击箭头,系统将弹出引用的属性窗口,在属性窗口中可以设置该引用的 Name、Code、关联的列、约束名、更新策略和删除策略等。下一篇文章将会介绍其他约束具体包括:1.CHECK 约束 2.默认值约束 3.非空约束 另外在物理模型中还包括:视图、存储过程、函数、触发
14、器等都会在接下来的几篇文章中讲解到。【出自博客园深蓝居,转载请注明作者出处】在在 PowerDesigner 中设计物理模型中设计物理模型 2约束约束 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的一个唯一索引,通过唯一索引来实现约束。不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所以一般建议创建唯一约束而不是只创建唯一索引。在 PD 中创建唯一约束的操作,以教室表来说,RoomID 是主键,必然是唯一的,RoomName如果我们也要去必须是唯一的,那么具体操作如下:在 PD 的模型设计面板中,双击“教室”表,打开属性窗口,切
15、换到”Keys”选项卡,可以看到里面有一行数据 PK_ClassRoom,这是主键 约束。添加一行数据,命名为 UQ_RoomName,不能将右边的“P”列选上,然后单击工具栏的“属性”按钮,弹出 UQ_RoomName 的属性窗口,切换到列选项卡,单击增加列按钮,选择将 RoomName 列添加到其中,然后单击确定即可完成唯一约束的添加。这样系统就会自动创建唯一约束。CHECK 约束 CHECK 分为列约束和表约束,列约束是只对表中的某一个列进行的约束,可以在列的属性中进行设置,而表约束是对多个列进行的约束,需要在表的属性中进行设置(其实列约束也可以在表约束中设置)。1.标准 CHECK 约
16、束 对于一些常用的 CHECK 约束,可以直接通过设置界面来完成。以班级表为例,ClassName 每个学校有自己的命名规则,假设这里规定 ClassName 必须以 2 开头,那么需要在 ClassName列上定义 CHECK 约束,使得其满足命名规范。具体操作是在 PD 中双击 Class 表,打开 Class的属性窗口,切换到列选项卡,选择 ClassName 列,单击工具栏的“属性”按钮,弹出 ClassName的属性窗口,切换到 StandardChecks 选项卡如图:在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下:参数 说明 Minimum 属性可接受的最小
17、数 Maximum 属性可接受的最大数 Default 属性不赋值时,系统提供的默认值 Unit 单位,如公里、吨、元 Format 属性的数据显示格式 Lowercase 属性的赋值全部变为小写字母 Uppercase 属性的赋值全部变为大写字母 Cannot modify 该属性一旦赋值不能再修改 List Of Values 属性赋值列表,除列表中的值,不能有其他的值 Label 属性列表值的标签 2.直接编写 SQL 语句的 CHECK 约束 在前面弹出 ClassName 属性窗口中,单击左下角的“More”按钮,系统将弹出更多的选项卡,切换到“Additional Checks”选
18、项卡,可以设置约束名和具体的约束内容,如图所示:表级的 CHECK 约束与列级的 CHECK 约束设置类似,单击表属性窗口左下角的“More”按钮,切换到 Check 选项卡,设置 CHECK 约束的命名和 SQL 语句内容。3.使用 Rule 创建约束 同样以班级名必须以 2 开头为例,通过 Rule 创建 CHECK 约束。首先需要创建一个 Rule,双击 Class 表,打开表的属性窗口,切换到 Rules 选项卡,单击“Create a Object”按钮,系统将打开一个业务规则属性窗口,修改规则名,并将规则的类型修改为 Constraint,如图所示:然后切换到 Expression
19、 选项卡,设置规则的内容为“ClassName LIKE 2%”,单击确定按钮即可完成 Rule 的设置。切换到表属性的 Check 选项卡,默认约束内容中的“%RULES%”就是用来表示 Rule 中设置的内 容,如果我们还有一些其他的 CHECK 约束内容,不希望在 Rule 中设置,而是在 Check 选项卡中设置,那么只需要删除%RULES%将 CHECK 约束 内容添加进去,也可以保留%RULES%,然后在与%RULES%之间添加一个and即可。比如规定ClassID必须小于10000,那么我们可以将 Check 内容设置如下:生成的脚本如下:create table Class(C
20、lassID int not null,ClassName varchar(20)not null,constraint PK_CLASS primary key nonclustered(ClassID),constraint CKT_CLASS check(ClassID10000),constraint ClassNameRule check(ClassName LIKE 2%)go 可以看到,根据 Rule 生成的 CHECK 约束与在 Check 选项卡中设置的约束将分别创建一个约束,相互并不影响。默认约束 默认约束是用户在没有输入值的情况下,系统给出默认的值。最常用的是 Creat
21、eTime 字段,设置默认值为 getdate(),在用户创建一行数 据时记录下创建时间。例如对于选课表,需要记录下选课的时间,则可以设置 ApplyTime 的默认值为 getdate()函数。设置默认值约束的操作如下:双击选课表,打开表属性窗口,选择 ApplyTime 字段,单击工具栏的属性按钮,打开列的属性窗口,切换到 Standard Checks 选项卡,在 Default 下拉列表框中选择 getdate()即可。至此我们所有的约束在 PD 中的设置都介绍完了,下一篇将介绍视图、存储过程等数据库对象。【出自博客园深蓝居,转载请注明作者出处】在在 PowerDesigner 中设计
22、物理模型中设计物理模型 3视图、存储过程和视图、存储过程和函数函数 视图 在 SQL Server 中视图定义了一个 SQL 查询,一个查询中可以查询一个表也可以查询多个表,在 PD 中定义视图与在 SQL Server 中定义查询相似。例如要创几个所有学生的所有选课结果的视图,那么在工具栏中选择视图按钮,然后在设计面板中单击鼠标一次便可添加一个空白的 视图,切换到鼠标指针模式,双击该视图便可打开视图的属性窗口。在 General 选项卡中,可以设置视图的名字和其他属性。Usage 是表示视图是只读的视图还是可更新的视图,还有一个是 check option 选项,指定了 CHECK OPTI
23、ON,也不能依据视图来验证任何直接对视图的基础表执行的更新。如果我们只创建一般的视图,那么就选择只查询选项。Dimensional Type 指定该视图表示的是维度还是事实,这个主要是在进行数据仓库多维数据建模时使用,一般情况下不需要指定。后面的两个复选框也不需要进行修改。Type 使用默认的 view 选项。切换到 SQL Query 选项卡,在文本框中可以设置视图定义的查询内容,建议直接先在 SSMS中验证视图定义 SQL 语句的正确性,然后再将 SQL 语句复制粘贴到该文本 框中。在定义视图时最好不要使用*,而应该使用各个需要的列名,这样在视图属性的 Columns 中才能看到每个列。设
24、计 SQL Query 如图所示。当然,也可以在PD中使用自带的SQL编辑器编写SQL语句,单击右下角的“Edit with SQL Editor”按钮,即可弹出 SQL Editor 编辑器,编写 SQL 语句。存储过程和函数 存储过程和用户自定义函数都是在同一个组件中设置的,在工具栏中单击 Procedure 按钮,然后在设计面板中单击一次便可添加一个 Procedure。例如要创建一个存储过程根据学生的学号获得学生所选的课程,那么对于的操作如下:在指针模式下双击添加的 Procedure,打开 Procedure 属性窗口,在 General 选项卡中可以设置该存储过程的名字。然后切换到
25、 Definition 选项卡,该选项卡中定义了存储过程的定义,在下拉列表框中,选择选项,如果是要定义函数,那么就需要选择选项,系统会根据选择的类型创建 SQL 语句的模板。在下面的 SQL 语句中,可以将 create procedure%QUALIFIER%PROC%保留,其他的删除,根据自己要创建的存储过程编写 SQL 语句。create procedure%QUALIFIER%PROC%StudentID int as begin select CourseName from vwStudentCourse where StudentID=StudentID end 单击确定按钮,系统会根据编写的 SQL 语句,将所使用的表、视图与存储过程关联起来,如图所示:创建函数的过程与之类似,只是使用的是 create function 而不是 create Procedure 而已。至此,最常见的数据库对象:表(表的约束)、视图、存储过程、函数等在 PD 的创建已经介绍完了,接下来会介绍 PD 的设置。【出自博客园深蓝居,转载请注明作者出处】
限制150内