首页 理论教育数据库实体完整性-数据库技术与应用教程

数据库实体完整性-数据库技术与应用教程

【摘要】:实体完整性也称为行完整性,是指表中的每一行都必须能够唯一标识,且不存在重复的数据行。在SQL Server 2012中,实体完整性可以通过主键约束和唯一性约束实现。图8—11违反唯一性约束使用T-SQL语句也可以实现唯一性约束。图8—12系统提示错误信息从约束效果看主键约束和唯一性约束,基本相同。

实体完整性也称为行完整性,是指表中的每一行都必须能够唯一标识,且不存在重复的数据行。在SQL Server 2012中,实体完整性可以通过主键约束和唯一性约束实现。

1.主键约束

在表结构设计器中可以设置主键。某列(例如StudentⅠD列、CourseⅠD列、AuthorⅠD列)被设置为主键,该列取值就不能为空,也不能重复。当表中主键列值违反主键约束,即出现重复值或有空值存在,系统自动提示错误信息。例如,当在Course表中输入一门新课,如果Coursed号与其他数据重复,违反了主键约束,系统将提示出错,如图8-1所示。主键约束是表对象,在表的“键”中可以查看,如图8-2所示。

图8—1 违反主键约束

图8—2 查看主键对象

如果主键设置需要修改或删除,可以在表结构设计器中修改或删除,也可以针对主键对象修改或删除,如图8-3所示。

图8—3 修改或删除主键对象

使用T-SQL语句也可以实现主键约束。在CREATE TABLE或ALTER TABLE语句中使用PRⅠMARY KEY子句,实现主键约束的创建、修改或删除。

CourseⅠD被设置为主键,需要PRⅠMARY KEY字句。PRⅠMARY KEY字句可以放在列名后面,也可以放在最后。

CourseⅠD和StudentⅠD被设置为主键(组合多列主键),PRⅠMARY KEY就不能放在列名后,只能放在最后。CONSTRAⅠNT字句用来命名主键。

当使用ⅠNSERT、UPDATE语句违反主键约束时,系统也会提示错误信息。如果Coursed列值与其他数据重复,违反了主键约束,系统将提示出错,如图8-4所示。

图8—4 T—SQL语句违反主键约束

2.唯一性约束

一个表只能有一个主键。但有的表中除了主键不能为空和不能有重复值存在之外,还有其他列也有同样的要求,例如Course表的CourseName列、School表的SchoolName列也不允许为空和不能有重复值存在。这时就可以设置唯一性来实现。

在表结构设计器中打开School表,右键点击,在弹出的快捷菜单中选择“索引/键”选项,如图8-5所示,进入“索引/键”对话框,如图8-6所示。在该对话框中,已经存在一个名为“PK School”的索引/键。这是在建表设置主键时,系统自动创建的主键约束。

图8—5 选择“索引/键”选项(www.chuimin.cn)

图8—6 “索引/键”对话框

设置唯一性约束,单击“索引/键”对话框的“添加”按钮,添加一个新的索引/键对象。用户可以对新建的索引/键选项设置。选择“类型”下拉列表框“唯一键”选项,再选择“列”选项,将列选择为“SchoolName(ASC)”,其中SchoolName是这个索引/键作用的列名,ASC为该列数据排序为升序,如图8-7所示。关闭并保存,即唯一性设置成功。如果选择“类型”下拉列表框“索引”选项,这是创建唯一性索引。还需要将“是唯一的”选项设置为“是”,约束效果相同,如图8-8所示。

图8—7 唯一性设置

图8—8 创建唯一性索引

唯一性约束是表对象,在表的“键”中可以查看,如图8-9所示。主键约束和唯一性约束都在表的“键”中以键对象的形式存在。它们不仅以名称区分,还以图标显示区分。“”掌图标(金黄色)表示主键对象,”图标(蓝色)表示唯一性约束对象。

图8—9 查看唯一性约束对象

如果唯一性约束设置需要修改或删除,可以在表结构设计器中修改或删除,也可以针对键对象修改或删除,如图8-10所示。

图8—10 修改或删除唯一性约束对象

当用户在School表中输入一个新学院,如果SchoolName与其他数据重复,则违反了唯一性约束,系统将提示出错,如图8-11所示。

图8—11 违反唯一性约束

使用T-SQL语句也可以实现唯一性约束。在CREATETABLE或ALTER TABLE语句中,使用UNⅠQUE子句,实现唯一性约束的创建、修改或删除。当使用ⅠNSERT、UPDATE语句违反唯一性约束时,系统也会提示错误信息,如图8-12所示。

图8—12 系统提示错误信息

从约束效果看主键约束和唯一性约束,基本相同。两者不同的是,一个表只能有一个主键约束,但可以有多个唯一性约束。