利用SSMS表设计器设置数据库约束

日期: 2013-11-14 作者:Robert Sheldon翻译:Ranma 来源:TechTarget中国 英文

编者按:本系列文章将介绍利用SQL Server Management Studio Table Designer(表设计器)来在SQL Server数据库表上进行创建和设置属性。本文主要介绍设置数据库约束。 为一个表添加数据库约束是表创建过程非常重要的一部分。对于大多数表来说,你可能会定义一个PRIMARY KEY(主键)约束,但是可能也会需要其他类型的数据库约束,例如UNIQUE(唯一)、FOREIGN KEY(外键)、 CHECK(检查)或DEFAULT(默认)。

你已经看过如何添加一个DEFAULT约束,我们是在定义DateAdded字段的时候添加的。因此,我们来看一下如何添加一个PR……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

编者按:本系列文章将介绍利用SQL Server Management Studio Table Designer(表设计器)来在SQL Server数据库表上进行创建和设置属性。本文主要介绍设置数据库约束。

为一个表添加数据库约束是表创建过程非常重要的一部分。对于大多数表来说,你可能会定义一个PRIMARY KEY(主键)约束,但是可能也会需要其他类型的数据库约束,例如UNIQUE(唯一)、FOREIGN KEY(外键)、 CHECK(检查)或DEFAULT(默认)。

你已经看过如何添加一个DEFAULT约束,我们是在定义DateAdded字段的时候添加的。因此,我们来看一下如何添加一个PRIMARY KEY约束,我们将根据 StoreID和ProductID字段对其进行说明。创建此约束,要在表设计器网格中选择这两个字段,然后右击上窗格里的某处,接着单击SetPrimary Key。一个钥匙图标就会加入到字段清单以表明已经添加了一个主键,如图6所示。

图6. 设置表的主键

你所要做的就是创建主键。要查看或更改此键的设置,再次右击上网格,但是本次要单击Indexes/Keys以打开Indexes/Keys(索引/键)对话框。如你在图7中所见,此对话框会显示此新建主键的相关信息,其被命名为PK_SpecialtyProducts

图7. 配置表的主键

在这一点上,你可以坚持使用默认设置或修改属性为必要。例如,可以改变约束名称,主键字段,以及是否需要创建一个非聚簇索引而不是聚簇索引。对于本例,我将名称改为pk_StoreID_ProductID,而将其他属性置为默认值。

还可以在通过单击Add按钮 在Indexes/Keys对话框创建一个UNIQUE约束。当单击此按钮的时候,一个基本索引会添加至此对话框,本例中将其命名为IX_SpecialtyProducts,如图8所示。

图8. 在SpecialtyProducts表中添加一个索引

另外,可以改变名称同样也可以修改其他设置。对于这个例子来说,我已将名称改为uq_AltID,因为约束会在AltID字段上进行创建。然而,要将此变为UNIQUE约束,我们必须采取更多的步骤。首先,我们要实际指定AltID字段。而需要注意的是,AltID字段允许空值。通过在此字段上创建UNIQUE索引,在同一时间只允许有一个空值。大多数关系型数据库都不会这样工作,出于这个原因,需要重新考虑是否要在这个字段上允许空值。

要指定AltID字段,选择Columns(字段)属性然后单击属性清单右边的浏览按钮(省略号)。这会打开Index Columns(索引字段)对话框,可以在里面选择约束所涉及到的字段并为每个字段进行排序,如图9中所示。

图9. 指定索引字段

在选择了AltID字段之后,单击OK以关闭 IndexColumns对话框。在Indexes/Key 对话框中,为 Type(类型)属性选择Unique Key(唯一键)选项。这会自动将Is Unique(是否唯一)属性变更为Yes(是)。图10显示了UNIQUE约束在有了新名称及更新了设置情况下的样子。

图10. 在AltID字段上创建UNIQUE约束

我们下一个步骤是在ProductID字段上创建一个外键约束。此外键将会在Production.Product表内引用 ProductID字段。要创建此外键约束,右键点击表设计器中的上窗格然后单击Relationships。当出现Foreign Key Relationships对话框时,点击Add以创建此新约束。图11显示了此对话框尚未配置任何属性而拥有初始外键时的情况。

图11. 为SpecialtyProducts表添加一个外键

至少,必须修改Tables And Columns Specification属性组,它标示了在此外键中过去引用的和正在引用的字段。选择属性组清单然后点击其相关的浏览按钮。当Tables and Columns对话框出现时,选择 Product表作为主键表并从表中选择 ProductID字段。对于SpecialtyProducts表,它是外键表,选择ProductID字段。此外,如果需要,可以修改外键的名称。我将其修改为fk_ProductID。表和字段对话框现在应如图12中所示。

图12. 指定外键字段

一旦你定义了约束表和字段,点击OK 来关闭Tables and Columns 对话框。Foreign KeyRelationships 对话框应该会反映出所做的更改,如图13所示。注意 Tables And Columns Specification属性组及其单独属性现在会显示正在引用和过去引用过的表和字段。此约束的名称也已经更新过了。

表13. 在ProductID字段上定义一个外键

此时如果需要,可以添加更多的外键约束。例如在 StoreID 字段上定义一个外键来引用Sales.Store 表中的BusinessEntityID 字段。

要添加一个检查约束,再次右键表设计器中的上窗格然后单击Check Constraints。当检查约束对话框出现时,点击Add按钮来创建一个新的约束。图14显示了此对话框尚未配置任何属性而拥有初始约束的情况。

图14.为SpecialtyProducts表添加一个检查约束

要创建此检查约束,必须配置Expression 属性。你可以直接输入表达式或者点击浏览按钮打开Check Constraint Expression对话框,在此对话框中,你会有更多的空间来写表达式,如图15中所示。

图15. 定义检查约束的表达式

在这种情况下,我所定义的表达式指定了每个AltID值必须与正则表达式所定义的字符串值相匹配,即以“SP”开始并以五位数结尾。此五位数必须是1到9的数字而剩下的数字则可以是0到9。结果就是只有与此格式相匹配的值才能插入到AltID 字段。例如,可以插入SP54321,而不是SC01234

一旦已经定义了自己的表达式,就可以设置任何其他属性了,包括 Name。在本例中,我将此约束重命名为ck_AltID。图16显示了在Check Constraints 对话框中检查属性的样式。

图16. 在AltID字段上配置一个检查约束

如你所见,表设计器使得添加检查约束如添加其他两类约束一样简便。考虑到约束在保证数据完整性上所扮演的重要角色,正确的设置是非常重要的,而表设计器可以帮你做到这一点。

结束部分
定义了表属性,创建了字段并添加了约束之后,就做好了保存此表定义到数据库的准备。你可以单击工具栏上的Save按钮。Save对话框会出现,并提供给你一个会受新表影响的表的清单,如图17中所示。在本例中,包含了Product表,这是因为我们为其定义了一个外键关系。

图17. 将SpecialtyProducts表保存至数据库

在创建了表之后,你可以在SSMS中的Object Explorer(对象管理器)里查看。图18显示在AdventureWorks2012 数据库中列出了此新表。注意每个结点都是展开的以显示所创建的字段,键,约束,索引以及统计数据。

图18. 在对象管理器中查看SpecialtyProducts表

你现在可以轻松地查看用于定义此表的T-SQL并将其代码保存至一个脚本文件。右击此表,点ScriptTable as,再点CREATE To然后点击New Query EditorWindow。代码会出现在其自身的查询窗口中。你可以查看字段和约束是如何创建的以及表级别的属性是如何配置的。

表设计器可能并不适合每个人,但是对于那些寻找一种方法来轻松地创建表和在此过程中了解表定义的人来说,表设计器确实是一个颇有价值的资源。它不仅可以让你轻松地访问一个表可用的各种设置及其字段,而且还会提供一个友好的环境来让你可以查看所有的选项并让你可以看到它们之间是如何相互影响的。即使只是想要把表设计器作为学习T-SQL的一块垫脚石,你也会从其所提供的功能中获益良多。

系列文章第一篇:利用SSMS表设计器来创建数据库表

翻译

Ranma
Ranma

相关推荐