内容正文:
网站数据库应用技术SQL Server 2008
(项目教程)
项目五: 数据完整性
数据完整性的概念
强制性完整性的选项
实现约束
任务一
任务二
任务三
数据完整性
5.1 任务1: 数据完整性的概念
5.1.1相关知识
数据完整性的概念
数据库中的数据质量很大程度上决定了依赖于这些数据的应用程序的有用程度和效率,它对企业或商业活动的成败起着重要作用,为了提高数据质量,需要采用某些特定的方式对数据进行约束,以保数据值的完整性,维护高质量数据。
不论是在首次输入信息或收集,直至存储,都应在数据的所有级别强制实施数据完整性。
1.数据完整性的概念
数据完整性是指数据是否正确和是否可靠。以防止数据库中的数据存在错误并防止因错误信息的输入输出造成数据库的无效操作或错误信息。
2.数据完整性的分类
在SQL Server2008中,数据完整性主要分为以下三类:域完整性(列)、实体完整性(行)、引用完整性(表之间或同表的列之间),其中:
(1)域完整性
域完整性也称为列完整性,它主要指定对列有效的一组数据值,并确定是否允许NULL空值。域完整性通常是使用验证检查实施的,并且可通过限制列允许的数据类型,格式或可能的值的范围来进行约束。
相关知识
数据完整性的概念
(2)实体完整性
实体完整性也称为表完整性,主要要求表中的所有行都有唯一的标识符,也称为主键值。主键值是否可以更改,或者整行数据是否可以删除,都取决于主键与任何其它表之间所需的完整度级别。
(3)引用完整性
引用完整性主要确保主键(在被引用表中)和外键(在引用表中)之间的关系是否总是得以维持。如果外键引用某一行数据,那么除非级联操作允许,否则不可以删除被引用表中这一行的数据,也不可以更改主键。引用完整性还可以被用来定义同表中或异表数据间的引用关系。
域完整性、实体完整性、引用完整性三者之间的关系如图5-1所示。
相关知识
数据完整性的概念
图5-1数据完整性关系图
相关知识
数据完整性的概念
3.主键与外键
(1) 主键
主关键字是表中的一个或多个字段,它的值用于惟一的标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表不能有多个主关键字,并且主关键字的列不能包含空值。主关键字是可选的,并且可在CREATE TABLE或ALTER TABLE语句中定义。
(2) 外键
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。换而言之,如果关系模式R中的某属性集不是R的主键,而是另一个关系R1的主键则该属性集是关系模式R的外键,通常在数据库设计中缩写为FK。
5.2 任务2:强制性完整性的选项
5.2.1 相关知识
强制性完整性的选项
强制性保障数据完整性的方式有很多,具体如表5-1所示:
方式 说明
数据类型 用于定义可存储在列中的数据的类型
规则 定义可插入列中的可接受值
默认值 定义未指定列值时应取的列值
约束 定义数据库引擎如何强制实施数据完整性
触发器 定义在修改表时自动执行的代码
表5-1 强制性保障数据完整性方式
5.3 任务3:实现约束
5.3.1相关知识
实现约束
1. 实现约束的主要类型
数据约束是实现数据完整性的首选方法。约束能确保有效的数据值输入列,并保持表间关系。
约束的类型有很多,总体来说数据库约束分为以下5种,总的来说有五种:唯一性和主键约束、外键约束、检查约束、空值约束、默认值约束。主要的关键词包括有五大关键词,UNIQUE和Primary Key, Foreign Key, CHECK, NOT NULL, DEFAULT。
约束的分类如表5-2所示:
完整性类型 约束类型 说明
域 DEAULT 指定列的默认值
CHECK 指定列的允许值
FOREIGN 指定必须有值存在的列
NULL 指定是否允许NULL
实体 PRIMARY 唯一标识每一行
UNIQE 防止非主键重复
引用 FOREIGN KEY 定义值必须与此表的主键匹配的列
CHECK 指定列的允许值必须基于另一个列的内容
表5-2约束分类
2. 实现约束的主要方式
实现数据约束主要方式包括两种,即利用SMSS工具和T-SQL语句。
3. 创建约束的语法
创建约束的语法如下:
①创建主键约束:
CREATE TABLE(Table_Name)
(……
Primary Key (Key_Name)
……)
②创建外键约束:
ALT TABLE
ALTER TABLE