在概念模型中主要有以下几个操作和设置的对象:实体(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,所 以最终的设置界面如图:

  mandatory:表示的是强制关系,勾选上了之后会强制

继承

  在概念模型中的继承与在OO模型中的继承是一回事,就是要抽象出一个实体,其他实体继承该实体后就拥有该实体的属性。

  同样以选课系统为例,现在有学生实体,有教师实体,其他他们都是人,具有人的属性,所以我们可以抽象出一个人的实体,人具有性别、生日、名字等属性,教师具有职称、工号等属性这是学生没有的,所以不能放在人实体中,学生具有学号属性是教师没有的。

  这里只是概念模型,在DBMS中是没有继承这种说法的,所以在接下来的逻辑模型和物理模型中,系统就会将继承转换为实际的实体和表。这里只是概念模型,所以才有继承的说法。

关联(Association)我也不知道这个翻译成中文用哪个词比较好,就暂且用“关联”吧。

  Association也是一种实体间的连接,在Merise模型方法学理论中,Association是一种用于连接分别代表明确定义的对象的不同实体,这种连接仅仅通过另一个实体不能很明确地表达,而通过“事件(Event)”连接来表示。

  也就是说,实体和实体之间存在着关系(多对多),但是这种关系还存在其他的属性,这些属性如果如果作为一个明确的实体的实体来表示又不是很合适,所以就使用了Association来表达,这种关系之间一般是一个“事件”虚实体,也就是说是一个动词对应的实体。

  前面说的可能还是太抽象,以实际的例子来说明:现在有了学生实体,有课程实体,一个学生可以选择多门课程,一门课程有多个学生来上课,所以之间就存在一个“选课”的Association,其中记录了学生选课的时间、选课的状态:

  一 个学生会对应多个选课结果选择多门课程,一个课程对应多个选课学生选课,所以学生实体和课程实体与选课的关系都是一对多,添加关联连接,一门课程可能太枯 燥了,没有学生来选,所以课程对应选课可能是0,n,一个学生可能学分够了这学期一门课都不选,所以学生对应选课也可能是0,n的关系,所以我们最终形成 的概念模型如图所示:

  这就是一个完整的概念模型。接下来就是要根据概念模型生成逻辑模型或者物理模型。

Power Desginer系列02【转载】的更多相关文章

  1. Power Desginer系列03【转载】

    在PowerDesigner中设计物理模型1——表和主外键 在PD中建立物理模型由以下几种办法: 直接新建物理模型. 设计好概念模型,然后由概念模型生成物理模型. 设计好逻辑模型,然后由逻辑模型生成物 ...

  2. Power Desginer系列00【转载】

    绪论 Sybase PowerDesigner(简称PD)是最强大的数据库建模工具,市场占有率第一,功能也确实十分强大,现在最新版本是15.1,已经支持最新的SQL Server 2008等数据库,另 ...

  3. Power Desginer系列01【转摘】

    近期在做一个业务系统的分析和数据模型设计,工作这几年也做过好几个项目的数据库模型的设计,期间也算是积累了一定的经验吧,这次有机会就写写我的数据库模型设计过程与方法. 在 数据库设计中,设计的目标就是要 ...

  4. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)

    我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕.本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的 ...

  5. Power Query系列 - 排序Ranking

    Power Query系列 - 排序Ranking 难度: ★★☆☆☆(1星) 适用范围: ★★★☆☆(3星) 概况: 在数据分析中,我们常常需要对数据进行排序,同时我们想知道某个项目或者产品的排名, ...

  6. 一起学微软Power BI系列-使用技巧(2)连接Excel数据源错误解决方法

    上一篇文章一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库中,我们介绍了Power BI Desktop中连接Oracle和Mysql的方法,其实说到底还是驱动的问题, ...

  7. 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍

    我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...

  8. 一起学微软Power BI系列-官方文档-入门指南(2)获取源数据

    我们在文章: 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍中,我们介绍了官方入门文档的第一章.今天继续给大家介绍官方文档中,如何获取数据源的相关内容.虽然是英文,但 ...

  9. 一起学微软Power BI系列-官方文档-入门指南(3)Power BI建模

    我们前2篇文章:一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍 和一起学微软Power BI系列-官方文档-入门指南(2)获取源数据 中,我们介绍了官方入门文档与获取 ...

随机推荐

  1. SRILM的安装方法

    官网 网上搜的安装教程:SRILM的安装方法 最近做的一个项目要用到语言模型,在网上找了一些开源的工具包试了一下.废话不多说,下面直接介绍一下SRILM的安装方法. 我实在ubuntu14.04底下使 ...

  2. html 条件注释判断浏览器版本<!--[if lt IE 9]>

    <!--[if lte IE 8]><script>window.location.href='http://support.dmeng.net/upgrade-your-br ...

  3. 转:perl源码审计

    转:http://www.cgisecurity.com/lib/sips.html Security Issues in Perl Scripts By Jordan Dimov (jdimov@c ...

  4. HDU 6188 Duizi and Shunzi

    栈. 将数字排序后,一个一个压入栈.如果栈顶两个元素形成了对子,那么$ans+1$,弹出栈顶两个元素:如果栈顶三个元素形成了顺子,那么$ans+1$,弹出栈顶三个元素. #include<bit ...

  5. Python并发编程-进程池及异步方式

    进程池的基本概念 为什么有进程池的概念 效率问题 每次开启进程,都需要开启属于这个进程的内存空间 寄存器,堆栈 进程过多,操作系统的调度 进程池 python中的 先创建一个属于进程的池子 这个池子指 ...

  6. Markdown 格式如何转换成 Word?

    参考资料:https://www.zhihu.com/question/22972843/answer/136008865 markdown语法简洁,写作效率极高,非常适合网络博客.邮件.笔记等非正式 ...

  7. 如何对富文本编辑器(FCK Html Editor)的工具栏进行扩展?

    我们在项目开发过程中,会经常使用到富文本编辑器.GeneXus内置的富文本编辑器FCK Html Editor使用起来非常方便,只要将页面变量的控件类型(Control Type)选择为FCK Htm ...

  8. ARP监测工具Arpwatch

    ARP监测工具Arpwatch   ARP协议是网络的基础协议.基于ARP协议的ARP攻击是局域网最为常见和有效的攻击方式.ARP攻击可以通过发送伪造的ARP包实施欺骗,实现各种中间人攻击.Arpwa ...

  9. 深入理解javascript函数系列第三篇

    前面的话 函数是javascript中特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本文是深入理解javascript函数 ...

  10. 【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)

    2323: [ZJOI2011]细胞 Description 2222年,人类在银河系外的某颗星球上发现了生命,并且携带了一个细胞回到了地球.经过反复研究,人类已经完全掌握了这类细胞的发展规律: 这种 ...