- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PowerDesigner16.5创建数据库概念数据模型教程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
PowerDesigner16.5是英文版本的,这种数据库管理软件大家可能也不想去使用汉化版本,因为有可能汉化会出现bug,本文是PowerDesigner16.5创建数据库概念数据模型中文图文教程,有详细的中文图文讲解,对大家使用新版本有很大好处,希望童鞋们能够喜欢.
1:使用PowerDesigner软件创建数据库 。
我的PowerDesigner版本是16.5的,如若版本不一样,请自行参考学习即可。(打开软件即是此页面,可选择Create Model,也可以选择Do Not Show page Again,自行在打开软件后创建也可以!完全看个人的喜好,在此我在后面的学习中不在显示此页面。) 。
PowerDesigner16.6破解文件:http://www.cr173.com/soft/420814.html 。
2:首先创建概念数据模型,如图所示(后面介绍一些比如物理数据模型等等,由于此软件全部是英文的,所以作为一个chinese不是很懂的,耐心的多使用几次就好了。) 。
请自行脑补 。
概念模型(CDM Conceptual Data Model) 。
物理模型(PDM,Physical Data Model) 。
面向对象的模型(OOM Objcet Oriented Model) 。
业务模型(BPM Business Process Model) 。
3:点击上面的ok,即可出现下图左边的概念模型1,自己起得概念模型的名字,使用最多的就是如图所示的那两个Entity(实体),Relationship(关系) 。
4:选中右边框中Entity这个功能,即可出现下面这个方框,(需要注意的是书写name的时候,code自行补全,name可以是英文的也可以是中文的,但是code必须是英文的。) 。
5:General中的name和code填好后,就可以点击Attributes(属性)来设置name(名字),code(在数据库中的字段名),Data Type(数据类型) ,length(数据类型的长度) 。
请自行脑补 。
Name: 实体名字一般为中文如论坛用户 。
Code: 实体代号,一般用英文如XXXUser 。
Comment:注释对此实体详细说明.
Code属性代号一般用英文UID DataType 。
Domain域表示属性取值范围如可以创建10个字符的地址域 。
M:Mandatory强制属性,表示该属性必填。不能为空 。
P:Primary Identifer是否是主标识符,表示实体店唯一标识符 。
D:Displayed显示出来,默认全部勾选 。
(在此上图说明name和code的起名方法) 。
6:设置的主标识符可以在Identifiers(标识符)这个模块删除or添加主标识符.
7:创建好概念数据模型如图所示,但是创建好的字体很小,读者可以按着ctrl键同时滑动鼠标的可滑动按钮即可放大缩写字体,同时也可以看到主标识符有一个*号的标志,同时也显示出来了,name,Data type和length这些可见的属性 。
8:同理创建一个班级的实体(需要特别注意的是,点击完右边功能的按钮后需要点击鼠标指针状态的按钮或者右击鼠标即可,不然很容易乱操作,这点注意一下就可以了),然后使用Relationship(关系)这个按钮可以连接学生和班级之间的关系,发生一对多(班级对学生)或者多对一(学生对班级)的关系。如图所示 。
(需要注意的是点击Relationship这个按钮,就把班级和学生联系起来了,就是一条线,然后双击这条线进行编辑,在General这块起name和code) 。
(上面的name和code起好后就可以在Cardinalities这块查看班级和学生的关系,可以看到班级的一端是一条线,学生的一端是三条,代表班级对学生是一对多的关系即one对many的关系,点击应用,然后确定即可) 。
9:一对多和多对一练习完还有多对多的练习,如下图操作所示(当你操作几遍之后发现自己已经非常熟练的使用此工具,是不是感觉棒棒哒),老师实体和上面介绍的一样,自己将name,data type等等修改成自己需要的即可,满足项目开发需求即可。(comment是解释说明,自己可以写相关的介绍和说明) 。
(多对多需要注意的时自己可以手动点击按钮将关系调整称为多对多的关系many对many的关系,然后点击应用和确定即可) 。
综上即可完成最简单的学生,班级,教师这种概念数据模型的设计,需要考虑数据的类型和主标识码,是否为空。关系是一对一还是一对多还是多对多的关系,自己需要先规划好再设计,然后就ok了.
上面是概念数据模型,下面介绍一下物理数据模型,以后经常使用的就是物理数据模型 。
1:打开PowerDesigner,然后点击File-->New Model然后选择如下图所示的物理数据模型 。
(物理数据模型的名字自己起,然后选择自己所使用的数据库即可) 。
(创建好主页面如图所示,但是右边的按钮和概念模型略有差别,物理模型最常用的三个是table(表),view(视图),reference(关系)),
(鼠标先点击右边table这个按钮然后在新建的物理模型点一下,即可新建一个表,然后双击新建如下图所示,在General的name和code填上自己需要的,点击应用即可),如下图:
(然后点击Columns,如下图设置,灰常简单,需要注意的就是P(primary主键) , F (foreign key外键) , M(mandatory强制性的,代表不可为空) 这三个,多看几遍理解其意思。) 。
(在此设置学号的自增(MYSQL里面的自增是这个AUTO_INCREMENT),班级编号同理,不作多啰嗦!) 。
(在下面的这个点上对号即可,就设置好了自增) 。
(全部完成后如下图所示。) 。
(班级物理模型同理如下图所示创建即可) 。
(完成后如下图所示) 。
上面的设置好如上图所示,然后下面是关键的地方,点击右边按钮Reference这个按钮,因为是班级对学生是一对多的,所以鼠标从学生拉到班级如下图所示,学生表将发生变化,学生表里面增加了一行,这行是班级表的主键作为学生表的外键,将班级表和学生表联系起来。(仔细观察即可看到区别。) 。
(做完上面的操作,就可以双击中间的一条线,显示如下图,修改name和code即可) 。
(但是需要注意的是,修改完毕后显示的结果却如下图所示,并没有办法直接像概念模型那样,修改过后显示在中间的那条线上面,读者自己明白即可,自己也可以使用其他按钮自行添加注释也可。如Text这个按钮也可以添加,方便阅读) 。
(学习了多对一或者一对多的关系,接下来学习多对对的关系,同理自己建好老师表,这里不在叙述,记得老师编号自增,建好如下图所示) 。
(下面是多对多关系的关键,由于物理模型多对多的关系需要一个中间表来连接,如下图,只设置一个字段,主键,自增) 。
(点击应用,然后设置Columns,只添加一个字段) 。
(这是设置字段递增,前面已经叙述过好几次) 。
(设置好后如下图所示)(需要注意的是有箭头的一方是一,无箭头的一方是多,即一对多的多对一的关系需要搞清楚,学生也可以有很多老师,老师也可以有很多学生,所以学生和老师都可以是主体,即男/女猪脚),
(可以看到添加关系以后学生和教师的关系表前后发生的变化) 。
(详细的知识或者和数据库相关的请自行脑补,这里直介绍如何很好的使用PowerDesigner这个工具) 。
下面将介绍概念模型转为物理模型和物理模型转换为概念模型 。
1:如下图所示先打开概念模型图,然后点击Tool,如下图所示 。
(点开的页面如下所示,name和code我已经从概念模型1改成物理模型1了) 。
(完成后如下图所示,将自行打开修改的物理模型,需要注意的是这些表的数据类型已经自行改变了,而且中间表出现两个主键,即双主键,) 。
(在这里脑补一下,由于我点来点去竟然把右侧的ToolBox点击没了,这里说一下,就是在view菜单的下面ToolBox,点击打开即可) 。
(由于我正在使用着电脑就自动关机了,我也是醉了,重新打开PowerDesigner如下图,自己右击open即可。) 。
1:上面介绍了概念模型转物理模型,下面介绍一下物理模型转概念模型(如下图点击操作即可) 。
(然后出现如下图所示界面,然后将物理修改为概念 ,点击应用确和认即可) 。
(点击确认后将自行打开如下图所示的页面,自己观察有何变化,如果转换为oracle的,数据类型会发生变化,比如Varchar2等等),
1:下面介绍一下物理模型导出SQL语句(点击Database按钮的Generate Database或者按ctrl+G) 。
(打开之后如图所示,修改好存在sql语句的位置和生成文件的名称即可) 。
(在Selection中选择需要导出的表,然后点击应用和确认即可) 。
(完成以后出现如下图所示,可以点击Edit或者close按钮) 。
(自此,就完成了导出sql语句,就可以到自己指定的位置查看导出的sql语句了;) 。
PowerDesigner在以后在项目开发过程中用来做需求分析和数据库的设计非常的方便和快捷 。
最后此篇关于PowerDesigner16.5创建数据库概念数据模型教程的文章就讲到这里了,如果你想了解更多关于PowerDesigner16.5创建数据库概念数据模型教程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
我正在开发一个 Android 应用程序。在此应用程序中, Logo 栏显示在所有页面( Activity )上,或者我们可以说它在所有页面上都有标题。这个 Logo 栏有几个图标,如主页、登录、通知
我正在使用 hadoop 使用开源接口(interface) HVPI 处理视频。然而,inputsplit 的实现,更准确地说是在 isSplitableobContext (context, Pa
1. 是什么? MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System
有没有办法使用 c++20s 的概念来检查一个值是否满足某些要求? 假设我正在编写某种使用分页的容器,并且我想让页面大小成为模板参数。 template class container; 我可以使用带
如何在 ArrayList 中循环遍历 ArrayList? 例如,如果我有一个名为 Plants of Plant 对象的 ArrayList。每个 Plant 对象内部都有一个随机数量的花名。我如
如何在UML类图中绘制C++概念? 具体来说,我有以下代码: template concept Printable = requires(T a, std::ostream &where) {
我有兴趣制作一个网站,在访问者访问时闪现整个网络历史记录。我计划使用 JavaScript 来获取每个观看者计算机上的历史记录,并根据他们拥有的内容以不同的速度对其进行动画处理。我的想法是使用 his
有一个模板定义,例如: template void foo( void ) { /* ... */ } 如何定义一个概念,以便N必须为非零正值(N> = 1)? 就像是: template con
封装是信息隐藏还是导致信息隐藏? 正如我们所说,封装将数据和函数绑定(bind)在单个实体中,因此它为我们提供了对数据流的控制,并且我们只能通过一些定义良好的函数来访问实体的数据。因此,当我们说封装导
下面有一个简单的代码片段,它使用以下方式进行编译: g++-9 -std=c++2a -fconcepts 这是试图定义一个需要存在函数的概念。我希望输出是"is",但事实并非如此……知道为什么吗?谢
我有一个普通二元运算符的概念 template concept is_binary_operation = requires (const T& t1, const T& t2) // e.g
我正在c++ 20中实现具有启发式功能的搜索算法。 我试图用类似这样的概念来约束我的算法可以使用的功能: template concept Heuristic = requires(SelfType
我需要了解 SAS 如何读取/执行数据步骤。当我查找有关 SAS 如何读取数据步骤的信息时,我似乎只找到有关它如何读取以进行合并的信息,我不了解与常规数据步骤相关的信息。比方说,我有这行代码: dat
最近我看到一个关于“框架”的问题,如果“框架”有不同的类型或概念。那么,存在不同“类型”的“框架”吗? 例如:NodeJS 是一种“类型”(概念),而 Hibernate ORM 是另一种“类型”(概
如何使用任何技术禁用或清除客户端浏览器 Cookie 我认为使用 javascript 可以用于任何技术 最佳答案 var cookies = document.cookie.split(";");
我正在使用 target = "_blank" 单击链接时生成新选项卡。但是,浏览器会将焦点移至该选项卡。 有没有办法让焦点保持在当前标签页上? 回答摘要 基本上,只需发送一个模拟控件点击的当前事件。
我正在尝试在我的 android/firebase(cloud firestore) 应用程序上添加一项需要其他用户批准/拒绝的功能。例如,当 Air&BnB 上的用户想要预订一个地方时,所有者必须批
这个问题在这里已经有了答案: mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc... expec
public class MyClass { public static void main(String[] args) { System.out.println("Hell
我是一名优秀的程序员,十分优秀!