在PowerDesigner中设计物理模型1——表和主外键
在PD中建立物理模型由以下几种办法:
- 直接新建物理模型。
- 设计好概念模型,然后由概念模型生成物理模型。
- 设计好逻辑模型,然后由逻辑模型生成物理模型。
- 使用逆向工程的方法,连接到现有的数据库,由数据库生成物理模型。
物理模型能够直观的反应出当前数据库的结构。在数据库中的表、视图、存储过程等数据库对象都可以在物理模型中进行设计。由于物理模型和数据库的一致性,接下来以数据库对象和物理模型对象的对应来一一介绍:
表
新建物理模型时需要指定物理模型对应的DBMS,这里我们使用SQL Server 2008,新建一个物理模型后,系统会显示一个专门用于物理模型设计的工具栏:
若要在物理模型中添加一个表,单击“表”按钮,然后再到模型设计面板中单击一次便可添加一个表,系统默认为表命名为Table_n,这里的n会随着添加的表增多而顺序增加。添加的表是没有任何列的,如图所示:
单击工具栏的鼠标指针按钮,将鼠标切换回指针模式,然后双击一个表,系统将打开表属性窗口,在General选项卡中可以设置表的Name、Code等属性。例如我们要新建一个教室表(ClassRoom),则可修改Name和Code。Name是在模型中显示的名称,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中设计物理模型1——表和主外键相关推荐
- 【2 - 数据库是如何存储数据的】Sql Server - 郝斌(字段、记录、表;图形化界面及sql语句建表;六种约束;一对一、一对多、多对多、数据库关系图;主外键)
课程地址:数据库 SQLServer 视频教程全集(99P)| 22 小时从入门到精通_哔哩哔哩_bilibili 目录 数据库是如何解决数据存储问题的 1. 表的相关数据 2. create tab ...
- java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键
文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hib ...
- MySQL主外键表关联表数据的同时删除
今天遇到这样的问题,用mysql数据库,删除主表的数据时,删除不了报错.原来是主外键的关联关系. 遇到的错误和解决方法如下: 问题解决后,我又从网上找到了一篇讲解非常优秀的博文,转载至此,作者原文地址 ...
- sql向数据库表中插入列,sql给表的列添加说明,sql添加主外键约束,增加列,增加字段
规则代码 use 数据库名--向表中插入列alter table 表名 add 列名 类型go--给表的列添加说明 execute sp_addextendedproperty 'MS_Descrip ...
- mysql 删除表数据_主外键关联表的数据删除策略
说个题外话,我从来没想过会被拼多多这款软件所魔怔,他的这种社交营销的能力,实在是太强了,在怂恿之下,开始给儿子拼个这个, 各位有空帮砍下,https://w.url.cn/s/AzlPAB9,或者扫下 ...
- 关于主外键关系主表子表插入 或者更新
主外键关系表主表子表插入或者更新问题 对于多表的整体跟新数据,并且各个表之间有主外键关联 表UserA为主表,主键为id; 表UserB为主表,主键为Bid,外键为id: 表UserC为主表,主键为C ...
- MySQL如何同时删除主外键关联的两张表中的数据
1. 编写目的 介绍一种方法,解决如下问题:如何同时删除两张相关联的表的记录. 比如说表a的外键fk依赖于表a的id,现在我们需要删除id=5的两条数据. 2. 主要方法 为了简单,推荐更改表a的外键 ...
- SQLserver创建与主外键的看法
一个.背景 最初研究的相关内容数据库.仅仅是正式.从来没有练过,只能慢慢漂流,现在做的客房时,,非常多的知识需要使用视图,慢的实践. 视图:我理解的就是一张表.它把我们所须要的某个表或某几个表中的部分 ...
- 使用Entity Framework和WCF Ria Services开发SilverLight之4:Map之主外键映射
上一篇粗粗讲了一下如何使用EF4.1,针对POCO进行MAP,此篇在此基础上进行一下深入,具体讲一下如何进行映射. 1:主外键中的1对多映射 还是针对School数据库.查看如下两个表: 可以知道 ...
最新文章
- python 工业自动化 人工智能_Python人工智能之路 - 第三篇 : PyAudio 实现录音 自动化交互实现问答...
- 获取jar中的资源文件途径
- python基础语法合集-Python基础语法合集.zip
- 【计算机网络】网络层 : ARP 协议 ( 使用 ARP 协议查找 目的主机 / 路由器 物理地址 )★
- 上验证cudnn是否安装成功_windows和linux上的tensorflow安装(极简安装方法)
- 成为“能打”的二次元游戏《明日方舟》做对了什么?
- TypeScript Type Compatibility 类型兼容性
- java实现rtsp转rtmp
- 安卓学习笔记25:常用控件 - 下拉列表
- 自定义 Android 钟表盘,这一篇就够了
- ITIL 4 知识系列之服务目录
- autocad型源代码_AutoCAD文件格式详解
- 自媒体如何一步步变成臭要饭的(其二)
- BIOS中英文对照表!
- 完美屏蔽中国移动,四川手机报发的信息。
- BUG(12) : Configured service account doesn‘t have access. Service account may have been revoked. pod
- Java 编程要点之并发(Concurrency)详解
- Linux rpm 安装
- 晒图赢大奖 | 这个十一,烤仔陪你看世界!
- 五、VR视频播放器开发 ---- Android VR视频/Google VR for Android /VR Pano/VR Video