ch09数据完整性课件

上传人:风*** 文档编号:240745716 上传时间:2024-05-04 格式:PPTX 页数:40 大小:1.06MB
返回 下载 相关 举报
ch09数据完整性课件_第1页
第1页 / 共40页
ch09数据完整性课件_第2页
第2页 / 共40页
ch09数据完整性课件_第3页
第3页 / 共40页
点击查看更多>>
资源描述
2024年5月4日第1页第第9章章 数据完整性数据完整性本章概述 本章要点本章内容2024年5月4日第2页本章概述本章概述l无论是产品,还是信息,质量都是非常重要的。无论是产品,还是信息,质量都是非常重要的。信息质量是指信息的准确性、完整性、一致性等。信息质量是指信息的准确性、完整性、一致性等。在许多数据库应用系统中,数据质量的高低往往在许多数据库应用系统中,数据质量的高低往往是影响该系统成功与否的重要因素。数据完整性是影响该系统成功与否的重要因素。数据完整性是保证数据质量的一种重要方法,是现代数据库是保证数据质量的一种重要方法,是现代数据库系统的一个重要特征。系统的一个重要特征。Microsoft SQL Server 2008系统提供了一系列的数据完整性方法和机制,系统提供了一系列的数据完整性方法和机制,例如约束、触发器等。其中,约束技术是应用最例如约束、触发器等。其中,约束技术是应用最为广泛的数据完整性方法。本章详细讨论有关数为广泛的数据完整性方法。本章详细讨论有关数据完整性的技术和方法。据完整性的技术和方法。2024年5月4日第3页本章要点本章要点l操纵数据时的问题和解决机制操纵数据时的问题和解决机制l约束的基本概念和类型约束的基本概念和类型l管理管理DEFAULT约束约束l管理管理CHECK约束约束l管理主键约束管理主键约束l管理管理UNIQUE约束约束l管理外键约束管理外键约束l禁止约束的场景禁止约束的场景2024年5月4日第4页本章内容本章内容9.1 概述概述9.2 约束的概念和类型约束的概念和类型9.3 管理约束管理约束9.4 禁止约束禁止约束9.5 本章小结本章小结9.1 概述概述l本节讨论两个方面的内容。首先,分析操本节讨论两个方面的内容。首先,分析操纵数据时经常遇到的问题。其次,提出解纵数据时经常遇到的问题。其次,提出解决这些问题的方法。决这些问题的方法。l当操纵表中数据时,由于种种原因,经常当操纵表中数据时,由于种种原因,经常会遇到一些问题。下面,分析一下这些问会遇到一些问题。下面,分析一下这些问题的表现形式和特征。题的表现形式和特征。2024年5月4日第5页常见问题常见问题l当向表中的某个列插入数据时,插入了不合适的数据,当当向表中的某个列插入数据时,插入了不合适的数据,当时却没有被发现,例如员工进入公司的日期早于该员工的时却没有被发现,例如员工进入公司的日期早于该员工的出生日期。出生日期。l一般地,某个公司中员工的姓名有可能是重复的,但是员一般地,某个公司中员工的姓名有可能是重复的,但是员工的编号是不会重复的。可是,人力资源部门的工作人员工的编号是不会重复的。可是,人力资源部门的工作人员不小心,某个员工的编码出错了,造成有两个员工的编号不小心,某个员工的编码出错了,造成有两个员工的编号是相同的。但是,当时并没有发现这种问题。是相同的。但是,当时并没有发现这种问题。l在许多公司的数据库中,往往有很多表,每一个表中都存在许多公司的数据库中,往往有很多表,每一个表中都存在某个领域的数据。例如,人事表中存储了员工的基本信在某个领域的数据。例如,人事表中存储了员工的基本信息,借款表中记录了员工的借款信息。但是,后来发现,息,借款表中记录了员工的借款信息。但是,后来发现,借款表中的某个员工不是本公司的员工,因为人事表中没借款表中的某个员工不是本公司的员工,因为人事表中没有该员工的基本信息。这种问题为什么会发生呢?有该员工的基本信息。这种问题为什么会发生呢?2024年5月4日第6页数据完整性数据完整性l诸如此类的问题,不能仅靠数据录入人员和操纵人员的认诸如此类的问题,不能仅靠数据录入人员和操纵人员的认真和负责,而是应该建立一套保障机制:要么防止这些问真和负责,而是应该建立一套保障机制:要么防止这些问题发生,要么发生这些问题时可以及时地发现。数据完整题发生,要么发生这些问题时可以及时地发现。数据完整性就是解决这些问题的机制。性就是解决这些问题的机制。l数据完整性就是指存储在数据库中的数据的一致性和准确数据完整性就是指存储在数据库中的数据的一致性和准确性。在评价数据库的设计时,数据完整性的设计是数据库性。在评价数据库的设计时,数据完整性的设计是数据库设计好坏的一项重要指标。在设计好坏的一项重要指标。在Microsoft SQL Server 2008系统中,有系统中,有3种数据完整性类型,即域完整性、实体种数据完整性类型,即域完整性、实体完整性和引用完整性。完整性和引用完整性。2024年5月4日第7页域完整性域完整性l域完整性,也可以称为列完整性,指定一域完整性,也可以称为列完整性,指定一个数据集对某一个列是否有效和确定是否个数据集对某一个列是否有效和确定是否允许空值。允许空值。l域完整性通常是经过使用有效性检查来实域完整性通常是经过使用有效性检查来实现的,并且还可以通过限制数据类型、格现的,并且还可以通过限制数据类型、格式或者可能的取值范围来实现。例如,设式或者可能的取值范围来实现。例如,设置员工进入公司的日期大于员工的出生日置员工进入公司的日期大于员工的出生日期,期,2024年5月4日第8页实体完整性实体完整性l实体完整性,也可以称为行完整性,要求表中的实体完整性,也可以称为行完整性,要求表中的所有行有一个唯一的标识符,这种标识符一般称所有行有一个唯一的标识符,这种标识符一般称为主键值。例如,对于所有的中国公民来说,居为主键值。例如,对于所有的中国公民来说,居民身份证号码是唯一的,使用居民身份证号码可民身份证号码是唯一的,使用居民身份证号码可以唯一地确定某一个人,因此可以把公民的居民以唯一地确定某一个人,因此可以把公民的居民身份证号码作为主键对待。主键值是否能够被修身份证号码作为主键对待。主键值是否能够被修改或表中的全部数据是否能够被全部删除都要依改或表中的全部数据是否能够被全部删除都要依赖于主键表和其他表之间要求的完整性。对于一赖于主键表和其他表之间要求的完整性。对于一个公司来说,可以设置员工编号为主键,避免重个公司来说,可以设置员工编号为主键,避免重复数据出现。复数据出现。2024年5月4日第9页引用完整性引用完整性l引用完整性保证在主键引用完整性保证在主键(在被参考表中在被参考表中)和外键之间和外键之间的关系总是得到维护。如果被参考表中的一行被的关系总是得到维护。如果被参考表中的一行被一个外键所参考,那么这一行数据便不能直接被一个外键所参考,那么这一行数据便不能直接被删除,用户也不能直接修改主键值。删除,用户也不能直接修改主键值。l例如,在一个数据库中有两个表,即人事表和财例如,在一个数据库中有两个表,即人事表和财务表。人事表中记录了本单位的所有员工的基本务表。人事表中记录了本单位的所有员工的基本信息,财务表记录了本单位员工的借款信息。一信息,财务表记录了本单位员工的借款信息。一般地,如果某个公司员工有借款,那么他就不能般地,如果某个公司员工有借款,那么他就不能从人事表中直接删除。从人事表中直接删除。2024年5月4日第10页实现数据完整性实现数据完整性l在在Microsoft SQL Server 2008系统中,可系统中,可以使用两种方式实现数据完整性,即声明以使用两种方式实现数据完整性,即声明数据完整性和过程数据完整性。数据完整性和过程数据完整性。2024年5月4日第11页声明数据完整性和过程数据完整性声明数据完整性和过程数据完整性l声明数据完整性就是通过在对象定义中定义的数声明数据完整性就是通过在对象定义中定义的数据标准来实现数据完整性,是由系统本身自动强据标准来实现数据完整性,是由系统本身自动强制来实现的。声明数据完整性的方式包括使用各制来实现的。声明数据完整性的方式包括使用各种约束、缺省和规则。例如,在某个表中定义了种约束、缺省和规则。例如,在某个表中定义了主键约束,那么这种定义就由系统自动强制实现。主键约束,那么这种定义就由系统自动强制实现。l过程数据完整性是通过在脚本语言中定义的数据过程数据完整性是通过在脚本语言中定义的数据完整性标准来实现的。在执行这些脚本的过程中,完整性标准来实现的。在执行这些脚本的过程中,由脚本中定义的强制完整性实现。过程数据完整由脚本中定义的强制完整性实现。过程数据完整性的方式包括使用触发器和存储过程等。性的方式包括使用触发器和存储过程等。2024年5月4日第12页9.2 约束的概念和类型约束的概念和类型l约束是通过限制列中数据、行中数据和表之间数约束是通过限制列中数据、行中数据和表之间数据来保证数据完整性的非常有效的方法。约束可据来保证数据完整性的非常有效的方法。约束可以确保把有效的数据输入到列中并维护表和表之以确保把有效的数据输入到列中并维护表和表之间的特定关系。间的特定关系。Microsoft SQL Server 2008系系统提供了统提供了5种约束类型,即种约束类型,即PRIMARY KEY(主键主键)、FOREIGN KEY(外键外键)、UNIQUE、CHECK、DEFAULT约束。约束。l每一种数据完整性类型,例如域完整性、实体完每一种数据完整性类型,例如域完整性、实体完整性和引用完整性,都由不同的约束类型来保障。整性和引用完整性,都由不同的约束类型来保障。表表9-1描述了不同类型的约束和完整性之间的关系。描述了不同类型的约束和完整性之间的关系。2024年5月4日第13页使用使用sys.key_constraints目录目录视图视图2024年5月4日第14页9.3 管理约束管理约束l本节详细研究各种本节详细研究各种DEFAULT、CHECK、主键、主键、UNIQUE、外键等约束的特点、创建、外键等约束的特点、创建方式、修改等内容。方式、修改等内容。2024年5月4日第15页DEFAULT约束约束l当使用当使用INSERT语句插入数据时,如果没有语句插入数据时,如果没有为某一个列指定数据,那么为某一个列指定数据,那么DEFAULT约束约束就在该列中输入默认值。就在该列中输入默认值。l例如,在记录了人事信息的例如,在记录了人事信息的person表的性表的性别列中定义了一个别列中定义了一个DEFAULT约束为约束为“男男”。那么当向该表中输入数据时,如果没有为那么当向该表中输入数据时,如果没有为性别列提供数据,那么性别列提供数据,那么DEFAULT约束把默约束把默认值认值“男男”自动插入到该列中。因此,自动插入到该列中。因此,DEFAULT约束可以实现指定的域完整性。约束可以实现指定的域完整性。2024年5月4日第16页使用使用CREATE TABLE语句定义语句定义DEFAULT约束约束2024年5月4日第17页使用使用ALTER TABLE语句定义语句定义DEFAULT约束约束2024年5月4日第18页CHECK约束约束lCHECK约束用来限制用户输入某一个列的数据,即在该约束用来限制用户输入某一个列的数据,即在该列中只能输入指定范围的数据。列中只能输入指定范围的数据。CHECK约束的作用类似约束的作用类似于外键约束,两者都是限制某个列的取值范围,但是外键于外键约束,两者都是限制某个列的取值范围,但是外键是通过其他表来限制列的取值范围,是通过其他表来限制列的取值范围,CHECK约束是通过约束是通过指定的逻辑表达式来限制列的取值范围。指定的逻辑表达式来限制列的取值范围。l例如,在描述学生性别的例如,在描述学生性别的gender列中可以创建一个列中可以创建一个CHECK约束,指定其取值范围是约束,指定其取值范围是“男男”或者或者“女女”。这。这样,当向样,当向gender列输入数据时,要么输入数据列输入数据时,要么输入数据“男男”,要么输入数据要么输入数据“女女”,而不能输入其他不相关的数据。,而不能输入其他不相关的数据。2024年5月4日第19页使用使用CREATE TABLE语句定义语句定义CHECK约束约束2024年5月4日第20页使用使用ALTER TABLE语句定义语句定义CHECK约束约束2024年5月4日第21页主键约束主键约束l主键约束在表中定义一个主键值,这是唯一确定表中每一主键约束在表中定义一个主键值,这是唯一确定表中每一行数据的标识符。在所有的约束类型中,主键约束是最重行数据的标识符。在所有的约束类型中,主键约束是最重要的一种约束类型,也是使用最广泛的约束类型。该约束要的一种约束类型,也是使用最广泛的约束类型。该约束强制实体完整性。一个表中最多只能有一个主键,且主键强制实体完整性。一个表中最多只能有一个主键,且主键列不允许空值。列不允许空值。l例如,在例如,在students表中,一般将描述学生学号的表中,一般将描述学生学号的studentID列作为主键值,因为列作为主键值,因为studentID列中的值是唯一列中的值是唯一的。主键经常定义在一个列上,但是也可以定义在多个列的。主键经常定义在一个列上,但是也可以定义在多个列上。当主键定义在多个列上时,虽然某一个列中的数据可上。当主键定义在多个列上时,虽然某一个列中的数据可能重复,但是这些列的组合值不能重复。能重复,但是这些列的组合值不能重复。2024年5月4日第22页在在CREATE TABLE语句中定义语句中定义主键约束主键约束2024年5月4日第23页定义包含了两个列的主键约束定义包含了两个列的主键约束2024年5月4日第24页UNIQUE约束约束lUNIQUE约束指定表中某一个列或多个列不能有相同的两约束指定表中某一个列或多个列不能有相同的两行或两行以上的数据存在。这种约束通过实现唯一性索引行或两行以上的数据存在。这种约束通过实现唯一性索引来强制实体完整性。当表中已经有了一个主键约束时,如来强制实体完整性。当表中已经有了一个主键约束时,如果需要在其他列上实现实体完整性,又因为表中不能有两果需要在其他列上实现实体完整性,又因为表中不能有两个或两个以上的主键约束,所以只能通过创建个或两个以上的主键约束,所以只能通过创建UNIQUE约约束来实现。束来实现。l例如,在例如,在students表中,主键约束创建在表中,主键约束创建在studentID列上,列上,如果这时还需要保证该表中的存储身份证号的如果这时还需要保证该表中的存储身份证号的SSL列的数列的数据是唯一的,可以使用据是唯一的,可以使用UNIQUE约束。一般地,把约束。一般地,把UNIQUE约束称为候选的主键约束。约束称为候选的主键约束。2024年5月4日第25页使用使用ALTER TABLE语句定义语句定义UNIQUE约束约束2024年5月4日第26页外键约束外键约束l外键约束强制引用完整性。外键约束定义外键约束强制引用完整性。外键约束定义一个列或多个列,这些列可以引用同一个一个列或多个列,这些列可以引用同一个表或另外一个表中的主键约束列或表或另外一个表中的主键约束列或UNIQUE约束列。实际上,通过创建外键约束可以约束列。实际上,通过创建外键约束可以实现表和表之间的依赖关系。一般情况下,实现表和表之间的依赖关系。一般情况下,在在Microsoft SQL Server关系型数据库管关系型数据库管理系统中,表和表之间经常存在着大量的理系统中,表和表之间经常存在着大量的关系,这些关系都是通过定义主键约束和关系,这些关系都是通过定义主键约束和外键约束实现的。外键约束实现的。2024年5月4日第27页包含了多个关系的关系图包含了多个关系的关系图2024年5月4日第28页在在CREATE TABLE语句中定义语句中定义外键约束外键约束2024年5月4日第29页在在ALTER TABLE语句中定义外语句中定义外键约束键约束2024年5月4日第30页删除外键约束删除外键约束2024年5月4日第31页定义引用同一个表中主键列的外定义引用同一个表中主键列的外键约束键约束2024年5月4日第32页9.4 禁止约束禁止约束l在表上定义约束之后,就可以依靠约束来在表上定义约束之后,就可以依靠约束来保证表中数据的完整性。但是,在某些特保证表中数据的完整性。但是,在某些特殊的情况下,需要禁止在已有的数据上应殊的情况下,需要禁止在已有的数据上应用定义的约束或者禁止在加载数据时应用用定义的约束或者禁止在加载数据时应用约束。下面讨论有关禁止约束的内容。约束。下面讨论有关禁止约束的内容。2024年5月4日第33页禁止在已有的数据上应用约束禁止在已有的数据上应用约束l般地,在一个已经有数据的表上定义约束般地,在一个已经有数据的表上定义约束时,时,Microsoft SQL Server系统自动检查系统自动检查这些数据是否满足约束条件。然而,在某这些数据是否满足约束条件。然而,在某些特殊情况下,还可以禁止约束检查已经些特殊情况下,还可以禁止约束检查已经存在的数据是否满足约束的定义。禁止在存在的数据是否满足约束的定义。禁止在已有的数据上应用约束,实际上就是说这已有的数据上应用约束,实际上就是说这些约束对表中已有的数据不起作用。这种些约束对表中已有的数据不起作用。这种禁止只有在向表中增加约束时才能指定。禁止只有在向表中增加约束时才能指定。2024年5月4日第34页使用使用WITH NOCHECK子句子句2024年5月4日第35页禁止在加载数据时应用约束禁止在加载数据时应用约束l对于对于CHECK约束和外键约束,除了可以禁约束和外键约束,除了可以禁止对已有的数据应用约束之外,也可以在止对已有的数据应用约束之外,也可以在加载数据时禁止应用这些定义的约束。也加载数据时禁止应用这些定义的约束。也就是说,在更新表中数据或向表中添加数就是说,在更新表中数据或向表中添加数据时,可以不判断这些数据是否与所定义据时,可以不判断这些数据是否与所定义的的CHECK约束或外键约束冲突。约束或外键约束冲突。2024年5月4日第36页禁止和解禁约束应用到加载的数据禁止和解禁约束应用到加载的数据2024年5月4日第37页9.5 本章小结本章小结l本章研究了数据完整性技术。首先,提出本章研究了数据完整性技术。首先,提出了有关数据完整性方面存在的问题和解决了有关数据完整性方面存在的问题和解决的思路。其次,指出约束是数据完整性领的思路。其次,指出约束是数据完整性领域的一个重要技术,并且研究了约束的类域的一个重要技术,并且研究了约束的类型和特点。接下来,对型和特点。接下来,对DEFAULT、CHECK、主键、主键、UNIQUE、外键等约束类、外键等约束类型进行了详细分析,分析内容包括这些约型进行了详细分析,分析内容包括这些约束的创建方式和使用特点。最后,讨论了束的创建方式和使用特点。最后,讨论了有关禁止约束方面的问题。有关禁止约束方面的问题。2024年5月4日第38页p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢大家荣幸这一路,与你同行ItS An Honor To Walk With You All The Way演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!