文档介绍:基于 SQL Server 数据库技术及应用
实现数据完整性
第一节数据完整性
第二节约束
第三节规则和缺省
第一节数据完整性
一、强制数据完整性
二、使用IDENTITY属性强制实施数据完整性
数据完整性指数据库中存储数据的一致性,即在设计表时需要识别列的有效值并决定如何强制实现列中数据的完整性。常规数据库管理系统需要在每个应用程序中编码来实现数据完整性逻辑。SQL Server在自身数据库中存储该逻辑,确保一致性并简化了维护。
数据完整性广义的分为四类
实体完整性
实体完整性确保了每一行都可以被一个叫主关键字的属性唯一标识。
域完整性
域完整性确保了只有在某一合法范围内的值才能存储到一列中。
引用完整性
引用完整性确保所有外关键字中的值和主关键字中的值匹配。
用户自定义的完整性
用户自定义的完整性是指一系列的业务规则,它们是由用户指定的,不属于实体、域和引用完整性的范畴。
一、强制数据完整性
数据完整性是通过实现过程数据完整性和声明式数据完整性来强制执行的。
过程数据完整性是使用数据定义语言及SQL Server上的Transact_SQL语言实现的。
声明式完整性被声明为数据库定义的一部分,叫过程数据完整性更为简洁,且更少出现错误。完整性检查由数据库管理系统执行,而非负责编写规则、存储过程或触发器的人员进行。
二、使用IDENTITY属性强制实施数据完整性
在表中可能会包含用于存储唯一连续值的列。只要将IDENTITY属性附加到该列,则SQL Server会自动生成这些值。IDENTITY属性生成的值唯一的标识表中的每一行。每次在表中插入一行时,该属性即会自动生成值,并确保列内容有效。
定义IDENTITY列的语法:
IDENTITY(基数值,步长值)
参数说明:
基数值
指定IDENTITY列的初始值。
步长值
指定为列生成下一个值的增量。
注意,必须同时指定基数值和步长值,或者二者都不指定。如果二者都未指定,则取默认值(1,1)。
例7-1:创建一个Student表,其中的StudID列具有IDENTITY属性,基数值为101,步长值为5。
代码如下:
CREATE TABLE Student
(
StudID int IDENTITY(101,5),
FirstName varchar(20) NOT NULL,
LastName varchar(20) NOT NULL
)
例7-2:下面的示例创建一个新表,该表将 IDENTITY 属性用于获得自动增加的标识号。
代码如下:
CREATE TABLE new_employees
(
id_num int IDENTITY(1,1),
fname varchar (20),
minit char(1),
lname varchar(30)
)
INSERT new_employees (fname, minit, lname)
VALUES ('Karin', 'F', 'Josephs')