唯一约束
唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的一个唯一索引,通过唯一索引来实现约束。不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所以一般建议创建唯一约束而不是只创建唯一索引。
在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中的设置都介绍完了,下一篇将介绍视图、存储过程等数据库对象。
分享到:
相关推荐
该资源讲述了如何使用pd在物理模型中设置唯一约束
PowerDesigner概念模型物理模型,该PDF中详细介绍了使用powerdesigner建立概念、物理模型的方法,软件中的参数设置都有详细介绍,适合大家用来软件建模
powerdesigner进行相关物理数据模型的使用技巧的操作说明
从PowerDesigner概念设计模型
逆向工程——Oracle到PowerDesigner生成物理数据模型(PDM).doc
将powerDesigner的概念模型转换成物理模型,生成sql文件导入数据库.
powerdesigner从概念模型生成物理模型并导出sql生成数据库[归纳].pdf
利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设备模型进行控制。 它可与许多流行的数据库设计软件,例如:...
PowerDesigner PostgreSQL 物理模型 逆向
提供基础的PowerDesigner数据建模方法,可参考文档写概念模型和物理模型
PowerDesigner概念设计模型实例
PowerDesigner使用教程 —— 概念数据模型.doc )
通过PowerDesigner Trial 11设计出酒店管理系统数据库设计物理模型
powerdesigner9.5物理模型用户入门手册.pdf
2、 逻辑数据模型 (LDM) 3、 物理数据模型 (PDM) (PHYSICAL DATA MODEL)-最主要和常用的数据库模型 4、 面向对象模型 (OOM) (OBJCET ORIENTED MODEL) 5、 业务程序模型 (BPM) (BUSINESS PROCESS MODEL) 6、 ...
使用PowerDesigner创建物理数据模型和逆向工程 简单 易学 不难 强大
PowerDesigner+15.0+Repository——元数据管理工具的新特性.pdf
本文主要介绍PowerDesigner中概念数据模型 CDM的基本概念
关系数据库从应用以来,一直是数据关系系统数据存储方式的不二选择,本博文是在一个关系数据库学习过程中对一个简单的关系数据库进行系统分析和模型设计的基础上,应用数据建模工具PowerDesigner工具来描叙概念数据...