在PowerDesigner中设计物理模型2——约束
唯一约束
唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的一个唯一索引,通过唯一索引来实现约束。不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所以一般建议创建唯一约束而不是只创建唯一索引。
在PD中创建唯一约束的操作,以教室表来说,RoomID是主键,必然是唯一的,RoomName如果我们也要去必须是唯一的,那么具体操作如下:
在PD的模型设计面板中,双击“教室”表,打开属性窗口,切换到"”Keys”选项卡,可以看到里面有一行数据PK_ClassRoom,这是主键约束。添加一行数据,命名为UQ_RoomName,不能将右边的“P”列选上,然后单击工具栏的“属性”按钮,弹出UQ_RoomName的属性窗口,切换到列选项卡,单击增加列按钮,选择将RoomName列添加到其中,然后单击确定即可完成唯一约束的添加。
这样系统就会自动创建唯一约束。
CHECK约束
CHECK分为列约束和表约束,列约束是只对表中的某一个列进行的约束,可以在列的属性中进行设置,而表约束是对多个列进行的约束,需要在表的属性中进行设置(其实列约束也可以在表约束中设置)。
1.标准CHECK约束
对于一些常用的CHECK约束,可以直接通过设置界面来完成。以班级表为例,ClassName每个学校有自己的命名规则,假设这里规定ClassName必须以2开头,那么需要在ClassName列上定义CHECK约束,使得其满足命名规范。具体操作是在PD中双击Class表,打开Class的属性窗口,切换到列选项卡,选择ClassName列,单击工具栏的“属性”按钮,弹出ClassName的属性窗口,切换到StandardChecks选项卡如图:
在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下:
参数 | 说明 |
Minimum | 属性可接受的最小数 |
Maximum | 属性可接受的最大数 |
Default | 属性不赋值时,系统提供的默认值 |
Unit | 单位,如公里、吨、元 |
Format | 属性的数据显示格式 |
Lowercase | 属性的赋值全部变为小写字母 |
Uppercase | 属性的赋值全部变为大写字母 |
Cannot modify | 该属性一旦赋值不能再修改 |
List Of Values | 属性赋值列表,除列表中的值,不能有其他的值 |
Label | 属性列表值的标签 |
2.直接编写SQL语句的CHECK约束
在前面弹出ClassName属性窗口中,单击左下角的“More”按钮,系统将弹出更多的选项卡,切换到“Additional Checks”选项卡,可以设置约束名和具体的约束内容,如图所示:
表级的CHECK约束与列级的CHECK约束设置类似,单击表属性窗口左下角的“More”按钮,切换到Check选项卡,设置CHECK约束的命名和SQL语句内容。
3.使用Rule创建约束
同样以班级名必须以2开头为例,通过Rule创建CHECK约束。首先需要创建一个Rule,双击Class表,打开表的属性窗口,切换到Rules选项卡,单击“Create a Object”按钮,系统将打开一个业务规则属性窗口,修改规则名,并将规则的类型修改为Constraint,如图所示:
然后切换到Expression选项卡,设置规则的内容为“ClassName LIKE '2%'”,单击确定按钮即可完成Rule的设置。切换到表属性的Check选项卡,默认约束内容中的“%RULES%”就是用来表示Rule中设置的内容,如果我们还有一些其他的CHECK约束内容,不希望在Rule中设置,而是在Check选项卡中设置,那么只需要删除%RULES%将CHECK约束内容添加进去,也可以保留%RULES%,然后在与%RULES%之间添加一个and即可。比如规定ClassID必须小于10000,那么我们可以将Check内容设置如下:
生成的脚本如下:
create table Class (
ClassID int not null,
ClassName varchar(20) not null,
constraint PK_CLASS primary key nonclustered (ClassID),
constraint CKT_CLASS check (ClassID<10000),
constraint ClassNameRule check (ClassName LIKE '2%')
)
go
可以看到,根据Rule生成的CHECK约束与在Check选项卡中设置的约束将分别创建一个约束,相互并不影响。
默认约束
默认约束是用户在没有输入值的情况下,系统给出默认的值。最常用的是CreateTime字段,设置默认值为getdate(),在用户创建一行数据时记录下创建时间。例如对于选课表,需要记录下选课的时间,则可以设置ApplyTime的默认值为getdate()函数。
设置默认值约束的操作如下:双击选课表,打开表属性窗口,选择ApplyTime字段,单击工具栏的属性按钮,打开列的属性窗口,切换到Standard Checks选项卡,在Default下拉列表框中选择getdate()即可。
至此我们所有的约束在PD中的设置都介绍完了,下一篇将介绍视图、存储过程等数据库对象。
在PowerDesigner中设计物理模型2——约束的更多相关文章
- 在PowerDesigner中设计物理模型3——视图、存储过程和函数
原文:在PowerDesigner中设计物理模型3--视图.存储过程和函数 视图 在SQL Server中视图定义了一个SQL查询,一个查询中可以查询一个表也可以查询多个表,在PD中定义视图与在SQL ...
- 在PowerDesigner中设计物理模型1——表和主外键
原文:在PowerDesigner中设计物理模型1--表和主外键 在PD中建立物理模型由以下几种办法: 直接新建物理模型. 设计好概念模型,然后由概念模型生成物理模型. 设计好逻辑模型,然后由逻辑模型 ...
- 在PowerDesigner中设计物理模型1——表和主外键(转)
出处:http://www.cnblogs.com/studyzy/archive/2009/12/15/1624899.html 在PD中建立物理模型由以下几种办法: 直接新建物理模型. 设计好概念 ...
- 在PowerDesigner中设计概念模型
原文:在PowerDesigner中设计概念模型 在概念模型中主要有以下几个操作和设置的对象:实体(Entity).实体属性 (Attribute).实体标识(Identifiers).关系(Rela ...
- PowerDesigner创建物理模型
原文:PowerDesigner创建物理模型 Using PowerDesigner Create PDM 1.打开PowerDesigner 按Ctrl+N 创建物理模型 2.创建后修改名称,并在工 ...
- Sybase.在PowerDesigner中如何添加-约束
Sybase.在PowerDesigner中如何添加-约束 资料 2010-06-23 08:57:09 阅读21 评论0 字号:大中小 订阅 唯一约束 唯一约束与创建唯一索引基本上是一回事,因为 ...
- powerdesigner中物理模型与sql脚本的以及与数据库的连接设置
使用JDBC连接失败的解决方案: http://blog.csdn.net/t37240/article/details/51595097 使用powerdesigner工具我们可以方便的根据需求分析 ...
- 使用PowerDesigner创建物理模型并生成SQL语句在MySQL中生成表
我使用的PowerDesigner的版本为16.5,创建物理模型后,使用PowerDesigner生成的SQL语句,在MySQL中创建表. 1. 打开Power Designer软件,在弹出的欢迎对话 ...
- 数据库设计---PowerDesigner(物理模型和概念模型)
内容 第一种方法:概念模型转物理模型 1.首先新建模型--选择概念模型(CDM) 2.新建实体(学生和卡),设置相应的属性 3.一共四种关系(1:1,1:n,n:1,n:n),根据 ...
随机推荐
- mac 下 sphinx + mysql + php 实现全文搜索(xampp)(1)
原理: 使用sphinx 中的indexer 生成索引数据 service/web 端 利用searched 调用索引数据 步骤: 下载 sphinx: 下载地址:http://sphinxsea ...
- 一、mysql使用入门
mysql -h localhost -u root -p123456 登录mysql服务器 show databases 列出所拥有的数据库 use www 选择一个www的数据库 show tab ...
- EXTJS 3.0 资料 控件之 combo 用法
EXTJS combo 控件: 1.先定义store //年款 var comboData_ReleasYear = [ ['], ['], ['], ['] ]; 2.定义combo控件 { lay ...
- 【BZOJ1030】文本生成器
Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以随机生成一些文章―――总是 ...
- python学习笔记16(错误、异常)
一.什么是错误,什么是异常 错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象.当错误中断流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响应的代码),以帮助 ...
- setTimeout浅析
刚学习javascript的时候,感觉setTimeout很好理解,不就是过n(传入的毫秒数)毫秒,执行以下传入的函数吗?这个理解伴随了我挺长的一段时间,才对setTimeout有了新的认识,请先看下 ...
- Akka的fault tolerant
要想容错,该怎么办? 父actor首先要获知子actor的失败状态,然后确定该怎么办, “怎么办”这回事叫做“supervisorStrategy". // Restart the st ...
- POJ2031Building a Space Station
http://poj.org/problem?id=2031 题意:你是空间站的一员,太空里有很多球形且体积不一的“小房间”,房间可能相距不近,也可能是接触或者甚至是重叠关系,所有的房间都必须相连,这 ...
- sizeof运算符来获取各种数据类型在内存中所占字节数--gyy整理
C++并没有规定各种数据类型在内存中的存储大小,依赖于不同的编译器的不同而不同,要想获知当前编译器对各种数据类型分配的大小,可以通过sizeof运算符来获取. 使用方法1: sizeof(数据类型) ...
- win7 64bit下最新Apahe2.4.18+php7.0.2+MySQL5.7.10配置
原文:win7 64bit下最新Apahe2.4.18+php7.0.2+MySQL5.7.10配置 一.说明 以前配置apache+php+mysql都是参考网上的,一般都没有什么问题.最近公司有个 ...