第4章 数据完整性的设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.3 域完整性的设计与实现
域完整性是用来保证在数据表中输入有
效的数据值。域完整性可以通过定义字 段的数据类型、设置字段非空、检查约 束、默认约束和规则来实现。
4.3.1 默认约束
默认约束完成的功能是对于设置了默认
约束的字段,如果在录入记录时没有提 供输入值,则系统会自动为该字段填入 默认值。 默认值可以是常量、函数或者空值。
2.使用Transact-SQL语句设置检 查约束
使用Transact-SQL语句设置检查约束的
语法形式如下: CONSTRAINT constraint_name CHECK [NOT FOR REPLICATION] (logical_expression)
2.使用Transact-SQL语句设置检 查约束
第4章 数据完整性的设计与实现
本章学习目标
掌握数据完整性的分类; 掌握如何创建主键约束;
掌握设置惟一性约束的方法;
掌握设置默认约束的方法; 掌握设置检查约束的方法; 掌握设置外键约束的方法。
4.1 概
述
数据的完整性主要涉及以下几个方面: (1)实体完整性。 (2)域完整性。 (3)参照完整性。 (4)用户定义的完整性。 本章主要介绍前三种数据完整性的设计与 实现方法。
2.使用Transact-SQL语句设置主 键约束
CLUSTERED|NONCLUSTERED:用于指 定索引的类型,即聚簇索引或者非聚簇 索引,CLUSTERED为默认值。 column_name:用于指定主键的列名。主 键最多由16个列组成。
2.使用Transact-SQL语句设置主 键约束
2.使用Transact-SQL语句设置 IDENTITY属性
使用Transact-SQL语句设置IDENTITY属
性的语法形式如下: IDENTITY[(种子, 递增量) 其中,“种子”是初始值;“递增量” 是每次增加的数值。 说明:必须同时指定种子和递增量,或 者二者都不指定。如果二者都未指定, 则默认为(1,1)。
CONSTRAINT constraint_name PRIMARY KEY [CLUSTERED|NONCLUSTERED] (column_name[,…n])
2.使用Transact-SQL语句设置主键 约束
其中各参数的说明如下: constraint_name:用于指定约束的名称, 约束的名称在数据库中应该是惟一的。如 果不指定,则系统会自动生成一个约束名。
各参数说明如下: constraint_name:惟一性约束的名称。
UNIQUE:指定通过惟一索引为给定的
一列或多列提供实体完整性约束。 CLUSTERED:指定创建聚集索引。 NONCLUSTERED:指定创建非聚集索 引。
2.使用Transact-SQL语句设置惟 一性约束
能为空。 特点:如果设定某列为NOT NULL,则 在添加记录时,则此列必须插入数据。
约束的类型
CHECK约束:它使用逻辑表达式来限制
表中的列可以接受哪些数据值。 例如:成绩值应该在0-100之间,则可以 为成绩字段创建CHECK约束,使取值在 正常范围内。
约束的类型
DEFAULT约束:它为表中某列建立一个
约束的类型
主键约束:在表中定义一个主键来惟一
标识表中的每行记录 特点:每个表中只能有一个主键,主键 可是一列,也可是多列;主键不能为空; 主键值不能重复;
约束的类型
UNIQUE约束:它主要用来限制表的非
主键列中的值不能重复。 特点:一个表中可以定义多个惟一约束
约束的类型
NOT NULL约束:它用来设定某列值不
4.2.3 惟一性约束
惟一性约束可以指定一个或多个字段列
的组合值具有惟一性,即不会出现重复 的值。在一个数据表中可以为多个字段 或字段的组合设置惟一性约束。
1.通过企业管理器管理惟一性约束
例4-5 使用企业管理器在“图书基本信息表”
中为“书名”和“作者”两个字段的组合字段 设置惟一性约束。 在表设计器中,右击选择属性,选择"索引/键" 选项卡。选择"新建"命令。系统分配的名称出 现在"索引名"框中。 在"列名"下展开列的列表, 选择要将约束附加到的列。若要将约束附加到 多个列,在后续行中选择其它的列。选择"创建 UNIQUE"复选框。选择"约束"选项。
则“ຫໍສະໝຸດ BaiduULE_大于0”,要求数据必须大于 0。并将之绑定在“图书基本信息表”中 的“定价”字段上。 在数据库中创建规则,规则文本的写法: @id>0
2.使用Transact-SQL语句设置规 则
例4-12 使用Transact-SQL语句创建一个新的
4.2.1 主键约束
通过定义主键,能够惟一地确定表中的
每一条记录。定义为主键的列不允许为 空,且image和text类型的列不能被指定 为主键。可以将数据表中的一列或多列 的组合定义为主键。
1.通过企业管理器管理主键约束
例4-1 在“图书基本信息表”中为“图
书编码”字段设置主键约束。
2.使用Transact-SQL语句设置主 键约束
4.3.3 规则
规则是对存储在数据表中的数据值的规
定和限制。规则的功能与CHECK约束的 功能相似,但规则是作为一个独立的数 据库对象存储在数据库中的,使用规则 的好处是可以只创建一次,然后可以绑 定到多个字段上。对于数据表中的一个 字段列,只能应用一个规则。
1.使用企业管理器管理规则
例4-11 使用企业管理器创建一个新的规
完整性的类型
域完整性 域完整性:向表中添加的数据必须与数
据类型、格式及有效的数据长度相匹配。 实现实体完整性的方法:CHECK约束、 外键约束、默认约束、非空定义、规则 以及在建表时设置的数据类型
完整性的类型
参照完整性 参照完整性:又称为引用完整性。是指
通过主键与外键相联系的两个表或两个 以上的表,相关字段的值要保持一致。 实现实体完整性的方法:外键约束
默认值,当为表中添加记录时,如果没 有提供输入值,则自动以默认值赋给该 列。 特点:默认值可以为常量、函数或表达 式。使用默认值可以提高数据输入的速 度。
约束的类型
FOREIGN KEY约束 外键:是指一个表中的一列或列组合,
它虽不是该表的主键,但是另一个表的 主键。 特点:实现两表之间相关数据的一致性。
4.2.2 IDENTITY属性
可以使用IDENTITY属性来实现实体完整
性。方法是在数据表中创建一个标识列, 该标识列中的数据由系统自动生成。
1.通过企业管理器管理IDENTITY属性
例4-3 使用企业管理器创建一个新的数
据表TEMP1,包含4个字段:图书编码、 书名、作者、出版社,并将图书编号字 段设置成一个标识列,列中的数据从1开 始,每次增加1。
4.3.2 检查约束
设置检查约束的目的是对输入的数据值
进行检查,满足条件的数据可以保存在 数据表中,对于不满足条件的数据则拒 绝接受。在某一个数据表中,对于每一 个字段可以设置多个检查约束。
1.使用企业管理器管理检查约束
例4-9 使用企业管理器在“图书基本信
息表”中为“定价”字段设置检查约束, 要求输入的数据必须大于0。 在表设计器中,右击选择check约束
1.使用企业管理器管理默认约束
例4-7 在“图书基本信息表”中为“类
别”字段设置默认约束“计算机”。
2.使用Transact-SQL语句设置默 认约束
可以使用DEFAULT关键字来指定某个字段的
默认值。 例4-8 创建“图书基本信息表3”,并为“类 别”字段设置默认约束“计算机”。 create table 图书基本信息表3(图书编号 int not null ,书名 char(50)not null ,作者 char(20) not null constraint tt unique (书名,作者),出版社 char(50),类别 char(20) default '计算机')
2.使用Transact-SQL语句设置 IDENTITY属性
例4-4 使用Transact-SQL语句创建一个
新的数据表TEMP2,包含4个字段:图 书编码、书名、作者、出版社,并将图 书编码字段设置成一个标识列,列中的 数据从3开始,每次增加2。 create table temp2(图书编号 int not null identity(3,2),书名 char(50),作者 char(20), 出版社 char(50))
完整性的类型
用户定义的完整性 用户定义的完整性:是根据具体的应用
领域所要遵循的约束条件由用户自己定 义的特定的规则。
约束的类型
约束:SQL Server提供的自动强制数据
完整性的一种方法。它通过定义列的取 值规则来维护数据的完整性。 常用约束:NOT NULL,CHECK、 UNIQUE、PRIMARY KEY、FOREIGN KEY、DEFAULT
例4-2 重新创建“读者基本信息表”,并为其
中的“读者编号”字段设置主键约束。 create table memberinfo (memberid char (12) not null primary key,memname char(10) null,memphone char(11) null) 或者已建好表后,使用: Alter table memberinfo add constraint xx primary key (memberid,memname)
为“定价”字段设置检查约束,条件为 此字段不能输入小于0的数据。 create table 图书基本信息表4(图书编号 int not null ,书名 char(50) ,作者 char(20), 定价 real check (定价>0),出版社 char(50),类别 char(20) default '计算机')
返回
约束的创建
创建约束的时间:在建表的同时进行创
建,也可在已存在的表上创建。 如何创建:在企业管理器中创建,或在 查询分析器中用SQL命令创建
4.2 实体完整性的设计与实现
实体完整性要求数据表中的每一行在表
中是惟一的实体。采用以下三种方式, 即主键约束、IDENTITY属性和惟一性约 束。
完整性的概念
之所以要引入数据完整性是为了在数据
的添加、删除、修改等操作中不出现数 据的破坏或多个表数据不一致 数据完整性是指存储在数据库中的数据 正确无误并且相关数据具有一致性
完整性的类型
实体完整性 实体:表中的记录,一个实体就是指表
中的一条记录。 实体完整性:在表中不能存在完全相同 的记录,且每条记录都要具有一个非空 且不重复的主键值。 实现实体完整性的方法:设置主键、惟 一索引、惟一约束、指定IDENTITY属性
其中,参数NOT FOR REPLICATION用
于指定在把从其他表中复制的数据插入 到表中时检查约束对其不发生作用。 logical_expression用于指定逻辑表达式, 返回值为TRUE或者FALSE。
2.使用Transact-SQL语句设置检 查约束
例4-10 创建“图书基本信息表4”,并
2.使用Transact-SQL语句设置惟 一性约束
使用Transact-SQL语句设置惟一性约束
的语法形式如下: CONSTRAINT constraint_name UNIQUE [CLUSTERED|NONCLUSTERED] (column_name[,…n])
2.使用Transact-SQL语句设置惟 一性约束
例4-6 使用Transact-SQL语句创建一个
新的数据表“图书基本信息表2”,并为 “书名”和“作者”两个字段的组合字 段设置惟一性约束。 create table temp4(图书编号 int not null , 书名 char(50)not null ,作者 char(20) not null constraint yy unique (书名,作者),出 版社 char(50))