在PowerDesigner中设计物理模型1——表和主外键

在PD中建立物理模型由以下几种办法:

  1. 直接新建物理模型。
  2. 设计好概念模型,然后由概念模型生成物理模型。
  3. 设计好逻辑模型,然后由逻辑模型生成物理模型。
  4. 使用逆向工程的方法,连接到现有的数据库,由数据库生成物理模型。

物理模型能够直观的反应出当前数据库的结构。在数据库中的表、视图、存储过程等数据库对象都可以在物理模型中进行设计。由于物理模型和数据库的一致性,接下来以数据库对象和物理模型对象的对应来一一介绍:

新建物理模型时需要指定物理模型对应的DBMS,这里我们使用SQL Server 2008,新建一个物理模型后,系统会显示一个专门用于物理模型设计的工具栏:

image

若要在物理模型中添加一个表,单击“表”按钮,然后再到模型设计面板中单击一次便可添加一个表,系统默认为表命名为Table_n,这里的n会随着添加的表增多而顺序增加。添加的表是没有任何列的,如图所示:

image

单击工具栏的鼠标指针按钮,将鼠标切换回指针模式,然后双击一个表,系统将打开表属性窗口,在General选项卡中可以设置表的Name、Code等属性。例如我们要新建一个教室表(ClassRoom),则可修改Name和Code。Name是在模型中显示的名称,Code是生成数据库表的时候的实际表名。另外Name中的内容还会作为SQL Server中的表备注。

image

单击Columns切换到列选项卡,在下面的列表中可以添加表中的列。Name是模型上显示的名称,Code是生成的实际的表名,后面的3个复选框P代办主键、F代表外键,M代表不能为空。为教室表设计了两个列,如图所示:

image 

主键

在设计一个表时,一般情况下每个表都会有一个主键,主键分为单列主键和复合主键。在为表设置主键时有以下几种办法:

1.在Columns选项卡中,直接选中主键列的P列复选框,这是最简单的方式。

2.选中一个列,然后单击工具栏中的“属性”按钮,系统将弹出列属性窗口,在该窗口中可以设置该列的各种属性,当然也包括该列是否是否是主键。另外还有一个很重要的复选框是“Identity”。选中Identity复选框则表示该列为自增列。

image

3.切换到Keys选项卡中,在其中添加一行命名为PK_ClassRoom,然后单击工具栏的“属性”按钮,打开键属性窗口,在该窗口中切换到Columns选项卡,单击添加列按钮,弹出列选择窗口,选中主键中应该包含的列,单击确定按钮即可完成主键的创建。

image

另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“键属性”窗口的General选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引,如图所示:

image

外键

如果是由概念模型或者逻辑模型生成物理模型,那么外键是通过Relationship生成的,也可以通过工具栏中的Reference来实现两表之间的外键关系。假如一个课程只会在一个固定的教室上课,而一个教室会安排多个课程在不同的时间上课,所以教室和课程是一对多的关系,那么课程表中就需要添加RoomID列以形成外键列,具体操作方法就是在工具栏中单击“Reference”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外键引用,如果已经存在RoomID列,则只添加外键引用,不会再添加新列。

 image

切换到鼠标指针模式,双击箭头,系统将弹出引用的属性窗口,在属性窗口中可以设置该引用的Name、Code、关联的列、约束名、更新策略和删除策略等。

下一篇文章将会介绍其他约束具体包括:

1.CHECK约束

2.默认值约束

3.非空约束

……

另外在物理模型中还包括:视图、存储过程、函数、触发器等都会在接下来的几篇文章中讲解到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 6新特性试用 | 无需配置开发人员异常页

前言在.NET 6之前,我们需要在“Startup.cs”文件中手工配置开发人员异常页:if (env.IsDevelopment()) {app.UseDeveloperExceptionPage();app.UseSwagger();app.UseSwaggerUI(c > c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web…

.NET平台下几种SOCKET模型的简要性能供参考

.NET平台下几种SOCKET模型的简要性能供参考 这个内容在cnblogs中也讨论过很多次了,这两天大概看了一些资料,看到一些简单的性能指标拿出来和大家讨论一下。 Socket Threads/ThreadPool 大概性能:小于1500个连接 实现:Accept一个…

SQL中truncate table和delete的区别 --转

内容: http://www.cnblogs.com/GT_Andy/archive/2010/01/28/1921871.html 感谢博主的分享!!!转载于:https://www.cnblogs.com/ry123/archive/2012/10/23/2735297.html

html5中表格如何等分,纯css3饼图五等分

先看效果图:HTML代码如下:pie良好优秀未提交需努力加油98%得分率css代码如下:.pinOfStudent{background-color: #ffffff;width: 100%;position: relative;}#tipZone{position:relative;left:0;right:0;top: 1em;width:12.5em;height:12.5em;m…

Android之开源框架NineOldAndroids动画库

1.介绍 Android3.0推出了全新的AnimationAPI,使用起来很方便,但是不能在3.0以下版本使用,NineOldAndroids是一个可以在任意Android版本上使用的AnimationAPI,API和Android3.0中的类似。 2.常用类 ObjectAnimator ValueAnimator A…

python keyerror not in index_python – 带有索引的Pandas Plot导致’KeyError []不在索引中...

我是Python中Pandas概念的新手.通常情节不是问题.但是,我现在面临的是包含索引的数据框.不知何故什么都没有了.我想要实现的目标:为每个列[Plant1,Plant2,Plant3]创建一个特定柱[Trafo1]的子图.这是我的代码:import numpy as npimport datetimeimport nu…

现在竟然还有补丝袜的?

1 看到柿子树千万不要踢(素材来源网络,侵删)▼2 原来上床下桌还能这么简陋(素材来源网络,侵删)▼3 你总是心太远心太远(via.炕上的卡夫卡)▼4 这个岗位的上一位同事离职原因▼5 …

位(bit)与字节(byte)

bit就是位,也叫比特位,是计算机表示数据最小的单位。 byte就是字节,1byte8bit,1byte就是1B; 一个字符2字节; 1KB1024B 一个英文字母,无论大写和小写都是一个字符:一个字节 1B 一个汉字是一个字符:两个字节…

微服务组件记事本:Skywalking的ES索引 · 收藏篇

(2021年倒计时33天)书接上文,在上回书中,我们说到了《微服务组件记事本:Skywalking执行效果 多图篇》,文章比较详细的展示了Skywalking中的各种数据和图表展示,有些小伙伴群里问我,…

【原创】SQL SERVER 查询Job作业基本信息及执行情况

查询作业基本信息和作业执行情况 SELECT[jop].[job_id] AS 作业唯一标识符,[jop].[ name ] AS 作业名称,[dp].[ name ] AS 作业创建者,[cat].[ name ] AS 作业类别,[jop].[description] AS 作业描述, CASE [jop].[enabled]WHEN 1 THEN 是WHEN 0 THEN 否END AS 是否启用,[jop].[…

Oracle %rowtype的用法

表示该类型为行数据类型,存储的是一行数据,一行数据里可以有多列,类似于表里的一行数据,也可以是游标里的一行数据,如:vs_row1 表%rowtype;vs_row2 游标%rowtype;

计算机游戏50关,YELLOW游戏全50关攻略

yellow游戏是一款比较休闲的游戏作品,这款游戏中需要通过变换将屏幕全部调整成黄色,虽然操作不难,但比较考验思维能力,下面是全50关通关攻略,大家可以参考参考。【注:以下为攻略,不想看的不用点…

Android之判断网络状态(网络的连接,改变,和判断2G/3G/4G)

现在app大多都需要从网络上获得数据。所以访问网络是在所难免。但是再访问网络之前,我们应该先做一下网络的状态判断。其实在访问网络之前我们要做一些状态判断,对应一些状态判断来做处理,并不是直接使用Http访问网络即可。很多人在开发就经常…

python达梦数据库_Python 编程可以访问达梦数据吗?

可以,但官方只给了python2.7版本的包,python3目前无法使用,此外达梦自己的linux客户端只支持redhat或者centos。请首先在系统安装达梦客户端,下载地址如下:具体流程如下:Linux下DM7与Python的适配方法1.概述…

2021年将迎接你的是什么?

1 2021年迎接你的是...(素材来源网络,侵删)▼2 原来帅真的可以当饭吃(素材来源网络,侵删)▼3 我的芒果千层到了吗?(素材来源网络,侵删)▼4 这个岗位的上一…

log4j:WARN No appenders could be found for logger

2019独角兽企业重金招聘Python工程师标准>>> 提示这个错误是因为log4j的环境没有配置的原因,在src目录下新建一个log4j.properties的文件,黏贴如下内容即可解决。 # Configure logging for testing: optionally with log file log4j.rootLog…

推荐Mongodb GUI 可视化管理工具-NoSQLBooster

工欲善其事,必先利其器。虽然 MongoDB 已经提供了默认的管理工具(CLI)Shell 命令行,但是每次登录时都需要做身份认证,切换数据库等等一系列繁琐的操作,时间久了还是挺闹心的。实际开发中,还是会…

使用string.Format需要注意的一个性能问题

今天,我在写C#代码时,突然发现一个最熟悉的陌生人 —— string.Format。在写C#代码的日子里,与它朝夕相伴,却没有真正去了解它。只知道在字符串比较多时,用它比用加号进行字符串连接效率更高(当然也更方便&…

hdu 3480 斜率dp

思路&#xff1a;很普通的斜率dp #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define Maxn 10010 #define LL int using namespace std; LL dp[Maxn][2],num[Maxn]; int que[Maxn*10]; inline LL getleft(int x,int …

angular的html引入js,在AngularJS中的文件夹中加载JavaScript和CSS文件

AngularJS不支持你想要的东西,但是你可以看看Grunt或Gulp等构建工具,它们可以让你“构建”你的应用程序.在您的情况下,这些工具可以查找CSS文件并将它们连接成一个文件.这样,如果您添加新模块,则index.html不必更改.我个人使用GulpJS,因为它看起来要快得多.我发现配置更容易&am…