资源简介 (共59张PPT)网站数据库应用技术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 TABLEALTER TABLE (Table_Name)ADD FOREIGN KEY (ID)REFERENCES Table_Name (ID)③创建DEAULT约束:ALTER TABLE (Table_Name)ADD CONSTRAINT 字段名 DEFAULT '值' FOR 字段名④创建CHECK约束ALTER TABLE (Table_Name)ADD CONSTRAINT 字段 CHECK (性别='值1' OR 性别='值2' )⑤创建UNIQUE约束ALTER TABLE (Table_Name)ADD UNIQUE (字段名)4. 删除约束的语法ALTER TABLE (Table_Name)DROP PRIMARY KEY 约束名DROP FOREIGN KEY约束名5.3.2 任务实施实现约束(1)键约束Primary Key约束与FOREIGN KEY约束也被称为键约束,其中Primary Key约束又称主键约束,FOREIGN KEY约束称为外键约束。Primary Key约束定义表中构成主键的一列或多列。每个表只能有一个Primary Key约束,并不能允许NULL值。5.3.2 任务实施实现约束步骤1:在“SQL Server Managerment Studio”管理工具中展开数据库对象文件夹,选择并展要创建视图的数据库如“Student”。新建表“社团”,包括“姓名”、“社团名称”、“社团编号”、“院系”、“性别”等字段。如图5-2所示。主键约束方法1:使用“SSMS”管理工具创建索引操作图示步骤2:设置“社团编号”为主键,创建Primary Key约束。可以在“社团编号”上单击图标 ,也可以右击“社团编号”,点击设置主键,如图5-3所示。操作图示任务实施实现约束在数据库(Student)中,创建“社团表”,并建立Primary Key约束,执行语句如下:USE StudentGOCREATE TABLE 社团(社团编号 varchar(3) NOT NULL,社团名称 nchar(30) NOT NULL,院系名称 nchar(30),性别 char(2),姓名 nvarchar(10),PRIMARY KEY (社团编号))更新数据库表节点,可以看到新建了一张社团表,并创建了相应的约束条件,如图5-4所示。方法2:使用T-SQL创建主键约束操作图示任务实施实现约束在数据库中将班级表的主键(班级编号)作为学生表的外键并创建外键约束。步骤1:打开班级表和学生表,确定要建立外键关系的列与主键表中的数据类型完全一致如图5-5、图5-6所示。外键约束FOREIGN KEY约束,用于建立和强制实施两个表中数据之间的关联。主要用于同表或异表中的列之间的引用,此外FOREIGN KEY必须采PRIMARY KEY或UNIQUE约束。操作图示方法1:使用SMSS创建外键约束图 5 5 主键表数据列图 5 6外键表数据列任务实施实现约束步骤2:在外键表上任意列单击右键选择关系选项,进入外键关系对话框,如图5-7所示。操作图示步骤3:单击“添加”按钮,并在表和列规范中单击右侧按钮如图5-8所示。操作图示步骤4:在表和列的对话框中选择主键表为“班级表”,并在下拉菜单中选择“班级编号”。在外键表中选择“学生表”,并在下拉菜单中选择“班级编号”。如图5-9所示。操作图示步骤5:单击“确定”,即成功创建外键约束。任务实施实现约束步骤1:在数据库(Student)中,修改班级表,并对“班级编号”建立FOREIGN KEY约束,执行语句如下:USE StudentGOALTER TABLE 学生表ADD FOREIGNKEY (班级编号)REFERENCES 班级表(班级编号)方法2:使用T-SQL创建外键约束任务实施实现约束(2)其他约束在创建其他约束时需要注意以下几个方面情况,如表5-3所示约束 注意事项DEFAULT(用于向列中插入默认值,如果没有规定插入其他的值,那么会将默认值添加到所有的新记录) 定义未指定列值时应取的列值每列只有一个DEFAULT允许某些系统函数CHECK(用于限制列中的值的范围) 限制可输入列的值每列允许多个CHECK约束可引用同表中的列,无子查询UNIQUE(用于约束唯一标识数据库表中的每条记录。每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束) 确保列中的每一个值都是唯一的唯一列中只允许一个NULL值可包含一列或多列表5 3其他约束注意事项任务实施实现约束DEFAULT约束方法1:使用SMSS创建DEFAULT约束在学生数据库(Student)中的表学生表,为邮编列设置为“310000”步骤1:打开数据库(Student),右键单击学生表,选择设计,打开设计窗口。如图5-10所示。操作图示步骤2:选择“邮编”列,在下方的列属性表中选择“默认值或绑定”,输入“31000”,即完成DEFAULT约束设置,如图5-11所示。操作图示任务实施实现约束DEFAULT约束方法2:使用T-SQL语句创建DEFAYLT约束在学生数据库(Student)中的学生表,对列“性别”设置DEFAULT约束,将性别默认为“男”,执行语句如下:USE StudentGOALTER TABLE 学生表ADD CONSTRAINT性别DEFAULT '男' FOR 性别如图5-12所示。操作图示任务实施实现约束CHECK约束方法1:使用SMSS创建CHECK约束为“院系表”中的列“院系名称”添加CHECK约束,约束为只能是“建筑系”或“信息系”。步骤1:在学生数据库(Student)中单击“院系表”,打开表设计器。如图5-13所示。操作图示步骤2:右击“院系名称”列,选择CHECK约束,打开CHECK约束编辑器,如图5-14所示。操作图示任务实施实现约束步骤3:在CHECK约束对话框中选择“添加”按钮,在表达式行中单击“编辑”按钮,打开表达式编辑对话框,如图5-15所示。操作图示步骤4:在表达式编辑对话框中添加约束条件,并单击“确定”按钮。如图5-16所示。操作图示任务实施实现约束方法2:使用S-SQL创建CHECK约束操作1:在学生数据库(Student)中的学生表,对性别设置CHECK约束,约束为“男”或者“女”,执行语句如下:USE StudentGOALTER TABLE 学生表ADD CONSTRAINT 性别 CHECK (性别='男'OR性别='女')任务实施实现约束UNIOUE约束方法1:使用SMSS创建CHECK约束在学生数据库(Student)中的“班级表”,为“班级名称”列设置UNIQUE约束。步骤1:在学生数据库(Student)中单击班级表,打开表设计器。如图5-17所示。操作图示步骤2:右击“班级名称”列,选择“索引/键”选项,如图5-18所示。操作图示任务实施实现约束步骤3:在索引/键对话框中选择“班级名称”列,在右侧的常规选项卡中,单击“是唯一的”选项右侧的下拉菜单,选择是。即完成约束设置。如图5-19所示。操作图示任务实施实现约束方法2:使用S-SQL创建UNIQUE约束学生数据库(Student)中的“院系表”,对列“院系编号”设置UNIQUE约束,执行语句如下:USE StudentGOALTER TABLE 院系表ADD UNIQUE(院系编号)任务实施实现约束步骤1:在学生数据库(Student)中单击班级表,打开表设计器。如图5-20所示。约束的删除方法1:使用SMSS删除约束在学生数据库(Student)中的“班级表”,删除班级编号列的PRIMARY KEY约束。操作图示步骤2:右击“班级编号”列,选择“索引/键”选项,如图5-21所示。操作图示任务实施实现约束步骤3:在索引/键对话框中选择索引,单击下方的删除按钮。即完成约束的删除。如图5-22所示。操作图示任务实施实现约束方法2:使用S-SQL删除约束在学生数据库(Student)中的“班级表”,删除班级编号列的PRIMARY KEY约束。学生数据库(Student)中的院系表,对列院系编号设置UNIQUE约束,执行语句如下:USE StudentGOALTER TABLE 院系表DROP UNIQUE 约束名称项目小结本章主要介绍了保证数据完整性的重要性,以及数据完整性的分类,同时介绍了数据完整性的主要保证手段,接着介绍了数据约束的分类,数据完整性总的来说有五种:唯一性和主键约束、外键约束、检查约束、空值约束、默认值约束。主要的关键词包括有五大关键词,UNIQUE和Primary Key、Foreign Key、CHECK、NOT NULL、DEFAULT。接下来主要介绍了如何使用SMSS以及T-SQL语句来创建约束,以及如何利用SMSS和SQL语句完成约束的删除。实 训 项 目综合实训1:创建约束实训项目实训目的:掌握数据完整性的概念及分类,理解约束的概念和使用约束保证数据完整性的方法。掌握运用SMS及Transact-SQL语言进行不同类型约束的创建及调试。实训内容:在数据库“Library”中完成下列操作:利于T-SQL创建author表,包括“Name”,“Book_No”,“Sex”,“age”,“Country”等利用T-SQL,将book表中的“Book_No”作为author表的外键,并创建外键约束。利用T-SQL,将author表中的“Sex”设置DEFAULT约束,默认约束条件为“Man”利用T-SQL,将book表中的“Is_Borrow”设置CHECK约束,约束为只能填“是”或者“否”实训操作步骤:实训项目主键创建语法如下:USE LibraryGOCREATE TABLE author(Name nchar(30) NOT NULL,Book_No varchar(8) NOT NULL,Sex char(2),age char(5),Country nchar(30),PRIMARY KEY (Name)实训操作步骤:实训项目外键创建语法如下:USE LibraryGOALTER TABLE authorADD FOREIGNKEY (Book_No)REFERENCES Book_Info(Book_No)实训操作步骤:实训项目设置DEFAULT约束的语法如下:USE LibraryGOALTER TABLE authorADD CONSTRAINT Sex DEFAULT 'Man' FOR Sex实训操作步骤:实训项目设置CHECK约束的语法如下:USE LibraryGOALTERTABLE Book_InfoADD CONSTRAINT Is_Borrow CHECK (Is_Borrow='是'ORIs_Borrow='否')THANKS 展开更多...... 收起↑ 资源预览