第5篇完整性约束定义
- 格式:ppt
- 大小:121.00 KB
- 文档页数:30
第五章-完整性约束⽬录1. 概述数据库的完整性指数据的正确性(correctness)和相容性(compat-ability)。
正确性:指数据符合现实语义。
相容性:指同⼀对象在不同关系表中的数据是符合逻辑的。
为了维护数据库的完整性,数据库管理系统(DBMS)必须实现如下功能:定义完整性约束在SQL标准中定义了⼀系列定义完整性约束的语句。
完整性检查检查数据是否符合完整性约束条件的机制成为完整性检查。
完整性检查通常在INSERT、UPDATE、DELETE语句执⾏后开始检查,也可在事务提交时检查。
违约处理在DBMS发现⽤户的操作违背了完整性约束条件,将采取⼀定的操作。
关系数据库管理系统使得完整性控制成为其核⼼⽀持的功能,从⽽能为所有⽤户和应⽤提供⼀致的数据库完整性。
数据库完整性主要分为:实体完整性、参照完整性和⽤户定义完整性。
在下⽂中,我将逐⼀介绍上述三类完整性,并且还会介绍⼀些SQL中定义的⼀些特性。
2. 实体完整性定义实体完整性⽰例:CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY, -- 在列⼀级定义主码Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)PRIMARY KEY(Sno) -- 在表⼀级定义主码);实体完整性检查和违约处理使⽤PRIMARY KEY短语定义关系的主码后。
每当⽤户插⼊或更新记录时,DBMS都会⾃动进⾏实体完整性检查:检查主码是否唯⼀,若不唯⼀便拒绝插⼊或修改。
检查主码的各个属性是否为空,若存在为空便拒绝插⼊或修改。
3. 参照完整性关系模型的参照完整性在创建表时使⽤FOREIGN KEY短语定义参照关系。
定义参照完整性⽰例:CREATE TABLE SC(Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT,PRIMARY KEY (Sno, Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno), -- 定义表级参照完整性FOREIGN KEY (Cno) REFERENCES Student(Cno) -- 定义表级参照完整性);参照完整性检查如你所知,参照完整性将两个表中相应的元组联系起来。
完整性约束的SQL定义更新数据库时,表中不能出现不符合完整性要求的记录,以保证为⽤户提供正确、有效的数据。
实现该⽬的最直接的⽅法,是在编写数据库应⽤程序时,对每个更新操作都进⾏完整性检查。
但这种检查往往是复杂、重复、低效的。
SQL把各种完整性约束作为数据库模式定义的⼀部分,由数据库管理系统维护,这样即可有效防⽌对数据库的意外破坏,提⾼了完整性检测的效率,⼜减轻了编程⼈员的负担。
SQL Server⽀持三种完整性约束:1、实体完整性2、参照完整性(或引⽤完整性)3、⽤户⾃定义完整性1、实体完整性和主码实体完整性是通过主码(PRIMARY KEY)的定义来实现的。
⼀旦某个属性或属性组被定义为主码,该主码的每个属性就不能为空值,并且在表中不能出现主码值完全相同的两个记录。
主码可以在CREATE TABLE语句中使⽤PRIMARY KEY定义。
有两种定义主码的⽅法:⼀种是在属性后增加关键字,另⼀种是在属性表中加⼊额外的定义主码的⼦句:PRIMARY KEY(主码属性名表)。
(1)属性后增加关键字定义CREATE TABLE StudentInfo(StudentID char(8) PRIMARY KEY,StudentName varchar(10),StudentSex bit);(2)加⼊额外的定义主码的⼦句CREATE TABLE StudentInfo(StudentID char(8),StudentName varchar(10),StudentSex bit,PRIMARY KEY(StudentID));如果表的主码只含有单个属性,上⾯的两种⽅法都可以使⽤。
如果主码由多个属性组成,只能使⽤第⼆种⽅法。
除了主码,SQL提供了类似候选码的说明⽅法,使⽤关键字UNIQUE定义(与候选码不同的是:定义为UNIQUE的属性可以定义为空值,但只能有⼀个记录该属性的值为NULL),说明该属性(或属性组)的值不能重复。
数据库完整性约束原创数据库完整性约束分为三种:实体完整性约束、参照完整性约束、⽤户定义的完整性实体完整性规则:若属性(指⼀个或⼀组属性)A是基本关系R的主属性,则A不能取空值。
所谓空值就是”不知道“或”不存在“或”⽆意义“的值。
意思⼗分明显,就是关系中的主码是不能取空值的参照完整性定义:设F施基本关系R的⼀个或⼀组属性,但不是关系R的码,K S是基本关系S的主码。
如果F与K S相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或⽬标关系。
规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K S相对应,则对于R中每个元组在F上的值必须:或者取空值或者等于S中某个元祖的主码值⽤户定义的完整性任何关系数据库系统都应该⽀持实体完整性和参照完整性。
除此之外,不同的关系数据库系统根据其应⽤环境的不同,往往还需要⼀些特殊的约束条件。
⽤户定义的完整性就是针对某⼀具体关系数据库的约束条件,它反映某⼀具体应⽤所涉及的数据必须满⾜的语义要求。
定义实体完整性关系模型的实体完整性在CREATE TABLE中⽤PRIMARY KEY定义。
对单属性构成的码有两种说明⽅法,⼀种是定义为列级约束条件,另⼀种是定义为表级约束条件。
对多个属性构成的码只有⼀种说明⽅法,即定义为表级约束条件。
/*建⽴Student表*/create table Student(sno char(9) primary key, //在列级定义主码sname char(20) not null,ssex char(2),sage smallint,sdept char(20));/*建⽴Course表*/create table Course(cno char(9),cname char(20)primary key(cno) //在表级定义主码)实体完整性检查:检查主码值是否唯⼀,如果不唯⼀则拒绝插⼊或修改。
检查主码的各个属性是否为空,只有有⼀个为空就拒绝插⼊或修改。
5. 4数据完整性的概念与实施方法5.4. 1数据完整性概念■数据完整性是指数据的正确性、完备性和一致性,是衡量数据库质量好坏的重要标准。
■在用INSERT. DELETE. UPDATE语句修改数扌居库内容时, 数据的完整性可能会遭到破坏。
可能会存在下列情况: 无效的数据被添加到数据库的表中。
如:将学生考试成绩输入成负数;■SQL Server提供了对数据库中表、列实施数据完整性的方法。
对表进行设计数据完整性有两个重要内容:标识列的有效值和确定如何强制列中的数据完整性。
1.域完整性■域完整性是指一个列的输入有效性,是否允许空值。
强制域完整性的方法有:限制类型(通过设定列的数据类型)、格式(通过CHECK约束和规则)或可能值的范围(通过FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则)。
2.实体完整性■实体完整性是指保证表中所有的行唯一。
实体完整性要求表中的所有行都有一个唯一标识符。
这个唯一标识符可能是一列,也可能是几列的组合,称之为主键。
也就是说,表中主键在所有行上必须取值唯一。
强制实体完整性的方法有:索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性。
3.参照完整性■参照完整性也叫引用完整性。
参照完整性总是保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。
它涉及两个或两个以上表数据的一致性维护。
5.4. 2 数据完整性实施方法1.声明型数据完整性■声明型数据完整性一般在对象创建时定义,由SQL Server强制实施,通常使用约束、缺省值和规则来实现。
实现基本数据完整性的首选方法是使用声明型数据完整性。
■声明型数据完整性作为数据库对象说明的一部分在语法中实现, 在CREATE TABLE和ALTER TABLE定义中使用CONSTRAINT. DEFAULT 等语句限制表中的值。
使用这种方法实现数据完整性简单且不易出错,系统直接将实现数据完整性的要求定义在表和列上。
关系数据库的完整性约束关系数据库是一种常用的数据库模型,它使用表格来存储和组织数据。
在关系数据库中,完整性约束是一种重要的机制,用于确保数据的一致性和准确性。
本文将介绍关系数据库的完整性约束的定义、类型以及它们在数据库设计和数据管理中的作用。
一、完整性约束的定义完成性约束是指定义在关系数据库表上的规则,用于保证数据的完整性。
它可以限制某些列的取值范围、规定表之间的关系、强制规则和业务规则等。
通过定义完整性约束,可以防止不一致、不准确或不符合业务规则的数据进入数据库。
二、完整性约束的类型1. 实体完整性约束实体完整性约束用于确保每一行数据在主键列上具有唯一的值,并且不为空。
主键是关系数据库中用于唯一标识每一行数据的列或列组合。
2. 引用完整性约束引用完整性约束用于确保表之间的关系的一致性。
它结合了外键和主键的概念,确保在外键列中的值必须在参照表的主键列中存在。
这样可以防止不一致的关系建立或错误的数据引用。
3. 域完整性约束域完整性约束用于限制某些列的取值范围。
可以通过定义数据类型、长度、格式等约束来确保数据的准确性和一致性。
4. 用户自定义完整性约束用户自定义完整性约束是根据特定业务需求定义的约束规则。
可以使用触发器、存储过程或触发器等数据库对象来实现自定义完整性约束。
5. 断言完整性约束断言完整性约束是在SQL标准中定义的,用于在关系数据库中表示某种条件必须成立。
断言可以在表创建时定义或随后添加,以确保数据满足特定条件。
三、完整性约束的作用1. 数据的一致性和准确性:通过完整性约束,可以限制数据的取值范围和关系,确保数据的准确性和一致性。
2. 数据的安全性:完整性约束可以防止数据被非法篡改、删除或插入不符合规定的数据。
3. 业务规则的保护:通过完整性约束,可以确保数据库中存储的数据符合特定的业务规则。
4. 避免错误的数据关联:引用完整性约束可确保外键的合法性,防止不一致的数据关联。
5. 数据的可靠性和可维护性:通过定义完整性约束,可以为数据库提供可靠的结构和规范,便于数据的管理和维护。
数据完整性约束是数据库技术中非常重要的一环。
它能够保证数据库中的数据准确、一致和可靠,从而确保数据库系统的正确性和可信度。
在这篇文章中,我们将探讨数据完整性约束的定义、类型以及在实际应用中的重要性。
1. 定义数据完整性约束指的是对数据库中的数据进行约束和限制,以确保数据的准确性和一致性。
通过定义和实施数据完整性约束,可以防止不符合事务要求或业务规则的数据被插入、修改或删除。
2. 类型数据完整性约束可以分为以下几种类型:实体完整性约束实体完整性约束是指对数据库中的实体对象的约束,确保每个实体具有唯一性。
例如,对于一个学生表,可以通过指定学生ID字段为主键,来保证每个学生有唯一的ID。
域完整性约束域完整性约束保证数据在一定的范围内,符合业务要求。
例如,对于学生成绩表,可以限制成绩字段的取值范围在0到100之间。
参照完整性约束参照完整性约束用于确保外键的有效性。
在关系型数据库中,可以通过引用主键来确保外键引用的表中存在对应的记录。
例如,如果有一个订单表和一个客户表,可以通过外键约束确保每个订单必须关联一个有效的客户。
用户定义完整性约束用户定义完整性约束是指根据具体业务规则定义的约束条件。
通过用户定义完整性约束,可以适应不同业务需要。
例如,对于一个邮寄地址表,可以定义一个用户定义完整性约束,确保邮政编码必须符合特定的格式。
3. 重要性数据完整性约束在数据库系统中具有重要的意义:数据准确性数据完整性约束能够确保数据的准确性。
它可以防止非法、无效或不一致的数据被插入或修改,从而保证数据的准确性和可信度。
业务规则数据完整性约束可以根据业务规则定义和实施约束条件。
通过数据完整性约束,可以确保数据库中存储的数据满足业务规则的要求,从而提高系统的可用性和可靠性。
数据一致性数据完整性约束可以保证数据库中的数据一致性。
通过定义合适的完整性约束,可以确保数据在不同的表之间保持一致,并防止数据冲突和不一致的情况发生。
保护数据安全数据完整性约束可以防止非法操作和恶意篡改数据。
MySQL中的数据完整性与约束定义MySQL是一种常用的关系型数据库管理系统,由于其开源性和易用性,广泛应用于各个领域。
在数据库中,数据完整性是一项至关重要的概念,它确保了数据的准确性和可靠性。
本文将介绍MySQL中的数据完整性与约束定义,并着重讨论一些常见的约束定义和它们的作用。
一、数据完整性的概念和重要性数据完整性是指数据库中的数据应满足所有定义的规则,以确保数据的准确性、一致性和有效性。
数据完整性能够保证数据的完全性和可靠性,是数据库中必不可少的一项功能。
数据完整性的重要性体现在以下几个方面:1. 数据的准确性:通过定义各种约束,可以防止非法的或不符合要求的数据插入数据库中,确保数据的准确性。
2. 数据一致性:通过定义外键约束等,可以保持数据间的一致性,避免出现不一致的情况。
3. 数据有效性:通过定义检查约束等,可以限制数据的取值范围,确保数据的有效性。
4. 数据安全性:数据完整性还有助于保护数据的安全性,防止误操作或非法访问对数据造成的破坏。
二、主键约束主键约束是一个用于唯一标识表中每一行的字段或字段组合,确保表中每一行的唯一性。
在MySQL中,主键约束可以通过PRIMARY KEY关键字来定义。
主键约束的作用有:1. 确保表中的每一行都有唯一标识,方便对数据进行查询和修改。
2. 加速查询速度:主键约束在创建索引时会自动为主键字段创建索引,提高查询速度。
3. 防止重复数据的插入:当插入重复的主键值时,MySQL会报错并拒绝插入。
三、唯一约束唯一约束用于确保表中的某一列或某几列的值唯一。
在MySQL中,唯一约束可以通过UNIQUE关键字来定义。
唯一约束的作用有:1. 防止重复数据的插入:当插入重复的唯一约束值时,MySQL会报错并拒绝插入。
2. 加速查询速度:唯一约束在创建索引时会自动为唯一字段创建索引,提高查询速度。
四、外键约束外键约束用于建立两个表之间的关联关系,确保数据的引用完整性。
数据库技术中的数据完整性约束引言数据的正确性和完整性是数据库管理系统中非常重要的方面之一。
为了确保数据能够正确且完整地存储和管理,数据库技术引入了数据完整性约束。
本文将探讨数据库技术中的数据完整性约束以及其在数据管理中的重要性。
1.数据完整性约束的定义数据完整性约束是指在数据库中对数据存储和更新操作时所强制的规则。
它们有助于确保数据的完整性,即保证数据的准确性、一致性和有效性。
通常,数据完整性约束分为五个方面,包括实体完整性、域完整性、参照完整性、用户定义完整性和触发完整性。
2.实体完整性实体完整性是指确保每个表中的每个记录都具有唯一的标识符。
在某些关系数据库管理系统中,可以通过将主键约束应用于表的主键列来实现实体完整性。
主键列的值必须是唯一的,并且不能为NULL。
3.域完整性域完整性是指对于每个属性,仅允许特定的数据类型、值范围和格式。
例如,一个员工表的年龄属性应该是一个正整数,而不是一个字符串或负数。
域完整性可以通过在表的列上应用数据类型、范围和格式约束来实现。
4.参照完整性参照完整性用于确保两个表之间的关系保持一致。
例如,一个订单表中的客户ID应该与一个客户表中的有效客户ID相对应。
参照完整性可以通过在表之间创建外键约束来实现。
外键约束要求在引用表中的列中的值必须在被引用的表的主键列中找到。
5.用户定义完整性用户定义完整性是指根据特定需求和业务规则来定义的数据完整性约束。
例如,一个电子邮件地址应该包含"@"符号。
用户定义完整性可以通过在列上应用自定义规则、触发器或存储过程来实现。
6.触发完整性触发完整性是指在数据操作(如插入、更新或删除)之前或之后自动执行的操作。
触发完整性可以用于强制执行数据完整性约束。
例如,当一个新的订单被插入时,可以触发一个触发器来确保订单中必填字段的值不为空。
总结数据完整性约束在数据库管理系统中是至关重要的。
它们确保数据的正确性、一致性和有效性,提高数据的质量和可靠性。
1、域完整性约束域完整性(Domain Integrity)约束要求属性值必须取自其对应的值域;一个属性值能否为空值由其语义决定。
域完整性约束是最基本的约束。
2、实体完整件约束实体完整性(Entity Integrity)约束的规则是:主关键字值必须是唯一的,且任何组成部分都不能是空值。
这一规则的理论根据如下:由定义可知,任何元组必须是可辨识的。
在关系数据库中,主关键字起唯一的标识作用,如果一个标识项(主关键字)全都是空值,就起不到一个标识的作用。
这等于说有这样—些元组,它们并没有任何唯一的标识项,即不能和其他元组区别开来。
这是不允许的,因此主关键字不能全部为空值。
类似地分析表明,即使标识项的一部分是空值也是不能允许的。
3、参照完整件约束一个关系涉及对另一关系的引用是常有的事。
例如,选课关系经由它的属性学号和课程号,既涉及到对学生关系的引用,又涉及到对课程关系的引用。
很显然,如果选课关系的一个元组含有学号属性的某个值,比如说是“990027”,那么在学生关系中,学号为“990027”的学生元组就应该存在。
否则,选课关系的元组显然涉及到了一个并不存在的学生。
这是不允许的;对于课程情况也是如此。
为此,必须引入一定的参照完整性约束规则,不允许引用不存在的实体。
参照完整性(Referential Integrity)又称为引用完整性,其约束的规则是:设D是一个主域,R1是一个关系,它有一个在D上定义的属性A。
那么,在任何给定的时刻,R1中A的每个值或者是空值,或者等于以A为主关键字的某个关系R2中的一个主关键字值(R1和R2可以相同)。
主关键字和外来关键字提供了一种表示元组之间联系的手段。
外来关键字要么空缺,要么引用—个实际存在的主关键字。
一个给定的域被选择为主域当且仅当有一个单一属性的主关键字是在这个域上定义的。
但是要注意,不是所有能起这种“联系”作用的属性都是关键字。
例如,学生和教师之间有一个联系“年龄”,这个联系是由学生关系和教师关系的年龄属性表示的,但年龄并不是外来关键字。
第5章数据库完整性约束总结数据库完整性约束是指对数据库中数据的完整性进行约束和验证,从而保证数据的准确性和一致性。
在数据库设计和管理中,完整性约束是非常重要的一部分。
本文将总结数据库完整性约束的相关内容。
一、数据库完整性约束的概念数据库完整性是指对数据库中存储的数据进行约束,以保证数据的正确性和一致性。
完整性约束是通过规定一系列的规则和条件来限制数据的输入和修改,以保证数据的完整性。
常见的完整性约束有实体完整性、域完整性、参照完整性、用户定义完整性等。
1.实体完整性:是指每个表中的记录都有唯一的标识符,不允许重复记录的存在。
实体完整性可以通过设置主键来实现,主键是唯一标识一条记录的字段或字段组合。
2.域完整性:是指数据库中每个字段的取值必须满足指定的规则和约束。
数据类型、长度、有效性等都是域完整性的一部分。
3.参照完整性:是指在关系数据库中建立表之间的关系时,要求所有的外键引用必须是有效的,即引用的主键值必须存在。
参照完整性可以防止无效的外键引用和数据的不一致。
4.用户定义完整性:是指用户可以根据自己的需求定义一些完整性约束,例如检查一些字段值的范围、格式等。
二、实现数据库完整性约束的方法在数据库中,可以通过以下方法来实现完整性约束。
1.主键约束:主键是唯一标识一个实体的字段或字段组合,可以通过设置主键来实现实体完整性。
主键约束要求主键的值不能重复,可以通过唯一索引或者唯一约束来实现。
2.唯一约束:唯一约束是指一个字段的值不能重复,可通过唯一索引或者唯一约束来实现。
3.非空约束:非空约束是指一个字段的值不能为空,可以通过设置字段的默认值或者非空约束来实现。
4.外键约束:外键是指一个表中的字段引用了另一个表的主键,可以通过外键约束来实现参照完整性。
外键约束要求外键引用的主键值必须存在,可以通过设置级联删除或者设置为空来处理引用的主键删除或修改的情况。
5.检查约束:检查约束是指限制字段值的取值范围,可以通过设置字段的数据类型和长度来实现。
完整性约束⼀、实体完整性:是指保证表中所有的⾏唯⼀。
实体完整性要求表中的所有⾏都有⼀个唯⼀标识符。
这个唯⼀标识符可能是⼀列,也可能是⼏列的组合,称为主键。
也就是说,表中的主键在所有⾏上必须取唯⼀值。
强制实体完整性的⽅法有:索引、约束、PRIMARY KEY约束或IDENTITY属性。
如:stu表中sid(学号)的取值必须唯⼀,它唯⼀标识了相应记录所代表的学⽣,学号重复是⾮法的。
学⽣的姓名不能作为主键,因为完全可能存在两个学⽣同名同姓的情况。
1、主键(Primary Key):主键列的值不能为NULL,也不能重复创建表:定义列时指定主键:CREATE TABLE stu(sid CHAR(6) PRIMARY KEY,sname VARCHAR(20),age INT,gender VARCHAR(10));创建表:定义列之后独⽴指定主键:CREATE TABLE stu(sid CHAR(6),sname VARCHAR(20),age INT,gender VARCHAR(10),PRIMARY KEY(sid));修改表时指定主键:ALTER TABLE stu ADD PRIMARY KEY(sid);删除主键(只是删除主键约束,⽽不会删除主键列):ALTER TABLE stu DROP PRIMARY KEY;2、主键⾃增长MySQL提供了主键⾃动增长的功能!这样⽤户就不⽤再为是否有主键是否重复⽽烦恼了。
当主键设置为⾃动增长后,在没有给出主键值时,主键的值会⾃动⽣成,⽽且是最⼤主键值+1,也就不会出现重复主键的可能了。
创建表时设置主键⾃增长(主键必须是整型才可以⾃增长):CREATE TABLE stu(sid INT PRIMARY KEY AUTO_INCREMENT,sname VARCHAR(20),age INT,gender VARCHAR(10));修改表时设置主键⾃增长:ALTER TABLE stu CHANGE sid INT AUTO_INCREMENT;修改表时删除主键⾃增长:ALTER TABLE stu CHANGE sid INT;⼆、域完整性:是指⼀个列的输⼊有效性,是否允许为空值。
数据库设计理论及应用(1)——完整性约束作者:最后一只恐龙发表时间:2007-6-17该系列计划包括5部分:完整性约束理论及应用、范式理论及应用、需求分析、概念结构设计、逻辑结构设计。
本文是第一部分,介绍数据库理论的几个概念,以及数据库完整性约束的相关概念和应用。
1.数据库的几个概念(1) 实体(Entity):指客观存在并可相互区别的事物,一个实体在数据库中表现为表中的一条记录。
(2) 属性(Attribute):指实体所具有的某一特性,实体的属性在数据库中表现为表的字段。
(3) 码(Key):唯一标识实体的属性集。
我们认为实体都是可区别的,即通过码来区分,码包含一个或多个属性。
(4) 域(Domain):指属性的取值范围,如姓名域可以是长度小于20的字符串,性别域为{男,女}。
(5) 实体型(Entity Type):用实体名及其属性名集来抽象和刻画同类实体,称为实体型。
如:学生(学号,姓名,性别,入学时间),下划线表示该属性为码。
(6) 实体集(Entity Set):同型实体的集合,因为一条记录对应一个实体,那么实体集就是记录的集合,也就是表。
(7) 联系(Relationship):实体内部或实体之间的联系。
(这个概念实在不好定义,只好用“联系就是联系”这样的废话来说明了)。
2.关系数据库的定义定义1 关系(Relation):D1×D2×…×Dn的子集叫做在域D1, D2, …, Dn上的关系,表示为R(D1, D2, …, Dn)。
其中D1×D2×…×Dn是笛卡尔积。
用白话说,实体集在关系数据库中就称为关系,注意关系与联系两个概念的区别。
实体在关系数据库中成为元组。
关于关系的几点说明:(1) 若关系中某一属性组的值能唯一的标识一个元组,则称该属性组为候选码。
如学生关系中,学号和身份证号都可以作为候选码。
而选课(学号,课程号,成绩)这个关系中,学号和课程号合起来作为候选码。
第5章数据库完整性与安全性1。
什么是数据库的完整性?什么是数据库的安全性?两者之间有什么区别和联系?解:数据库的完整性是指数据库中数据的正确性、有效性和相容性,其目的是防止不符合语义、不正确的数据进入数据库,从而来保证数据库系统能够真实的反映客观现实世界。
数据库安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。
数据的完整性和安全性是两个不同的概念,但是有一定的联系:前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取.也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
2。
什么是数据库的完整性约束条件?完整性约束条件可以分为哪几类?解:完整性约束条件是指数据库中的数据应该满足的语义约束条件。
一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。
静态列级约束是对一个列的取值域的说明,包括以下几个方面:①数据类型的约束,包括数据的类型、长度、单位、精度等;②对数据格式的约束;③对取值范围或取值集合的约束;④对空值的约束;⑤其他约束。
静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。
静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束.常见的静态关系约束有:①实体完整性约束;②参照完整性约束;③函数依赖约束。
动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:①修改列定义时的约束;②修改列值时的约束。
动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。
动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
3. 试述DBMS如何实现完整性控制。
解:为了维护数据库的完整性,DBMS提供了以下三种机制:①完整性约束条件定义完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语义约束条件.SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。
关系模型的完整性约束⼀,定义定义关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。
完整性通常包括域完整性,实体完整性、参照完整性和⽤户定义完整性,其中域完整性,实体完整性和参照完整性,是关系模型必须满⾜的完整性约束条件。
⼆,域完整性约束域完整性是保证数据库字段取值的合理性。
属性值应是域中的值,这是关系模式规定了的。
除此之外,⼀个属性能否为NULL,这是由语义决定的,也是域完整性约束的主要内容。
域完整性约束 (Integrity constrains)是最简单、最基本的约束。
在当今的关系DBMS中,⼀般都有域完整性约束检查功能。
包括主键(PRIMARY KEY)、检查(CHECK)、默认值(DEFAULT)、唯⼀(UNIQUE)、不为空(NOT NULL)、外键(FOREIGN KEY)等约束。
三,实体完整性约束实体完整性(Entity integrity)是指关系的主关键字不能重复也不能取“空值"。
⼀个关系对应现实世界中⼀个实体集。
现实世界中的实体是可以相互区分、识别的,也即它们应具有某种惟⼀性标识。
在关系模式中,以主关键字作为惟⼀性标识,⽽主关键字中的属性(称为主属性)不能取空值,否则,表明关系模式中存在着不可标识的实体(因空值是“不确定\"的),这与现实世界的实际情况相⽭盾,这样的实体就不是⼀个完整实体。
按实体完整性规则要求,主属性不得取空值,如主关键字是多个属性的组合,则所有主属性均不得取空值。
如表1.1将编号作为主关键字,那么,该列不得有空值,否则⽆法对应某个具体的职⼯,这样的表格不完整,对应关系不符合实体完整性规则的约束条件。
四,参照完整性约束参照完整性(Referential Iintigrity)是定义建⽴关系之间联系的主关键字与外部关键字引⽤的约束条件。
参照完整性主要指主表不能任意删除或修改,从表不能任意添加。
关系数据库中通常都包含多个存在相互联系的关系,关系与关系之间的联系是通过公共属性来实现的。