第7章数据库完整性

合集下载

第7章 数据库的安全与保护

第7章 数据库的安全与保护

7.1.3 SQL Server的安全性控制
7.1.3.2设置身份验证模式 具体的过程如下:
在SQL Server Management Studio的【对象资源管 理器】中,右键单击服务器,在弹出的快捷菜单中 单击【属性】。 在“安全性“页上的“服务器身份验证”下,选择 新的服务器身份验证模式,再单击【确定】。 重新启动 SQL Server,使设置生效。
7.2.4 SQL Server的完整性控制
SQL Server 2008中数据完整性可分为四 种类型:
实体完整性 域完整性 引用完整性 用户定义完整性
1.实体完整性 实体完整性相关的约束如下:
PRIMARY KEY约束 UNIQUE 约束 IDENTITY属性
2.域完整性
域完整性是指给定列的输入正确性与有效性。SQL Server 2008中强制域有效性的方法有:
7.4.2 数据库恢复的基本原理 及其实现技术
3.登记日志文件(Logging) (1)以记录为单位的日志文件 (2)以数据块为单位的日志文件
7.4.2 数据库恢复的基本原理 及其实现技术
4.日志文件的作用
(1)事务故障恢复和系统故障恢复必须用日志文 件。 (2)在动态转储方式中必须建立日志文件,后备 副本和日志文件综合起来才能有效地恢复数据库。 (3)在静态转储方式中,也可以建立日志文件。 当数据库毁坏后可重新装入后援副本把数据库恢复 到转储结束时刻的正确状态,然后利用日志文件, 把已完成的事务进行重做处理,对故障发生时尚未 完成的事务进行撤销处理。
7.2.2 完整性约束条件
六类完整型约束条件分别为:
静态列级约束。 静态元组约束。 静态关系约束。 动态列级约束。 动态元组约束。 动态关系约束。

数据库原理--数据库完整性

数据库原理--数据库完整性

数据库原理--数据库完整性数据库原理数据库完整性在当今数字化的时代,数据库成为了各类信息系统的核心组成部分。

无论是企业管理、电子商务,还是社交媒体等领域,都依赖于数据库来存储和管理海量的数据。

而在数据库的众多重要特性中,数据库完整性是确保数据质量、准确性和一致性的关键要素。

那什么是数据库完整性呢?简单来说,数据库完整性就是指数据库中的数据要符合预期的规则和约束条件,确保数据的准确性、完整性和一致性。

想象一下,如果一个数据库中的数据混乱无序、错误百出,那基于这些数据做出的决策岂不是要出大问题?数据库完整性可以分为实体完整性、参照完整性和用户定义的完整性这三大类。

实体完整性主要是确保表中的每一行数据都能够被唯一标识。

这就好比每个人都有一个独一无二的身份证号码,通过这个号码可以准确无误地识别出一个特定的人。

在数据库中,通常会为主键设置不为空且唯一的约束,来保证实体完整性。

比如在一个学生信息表中,学号就是主键,它不能为空白,也不能有重复的值,这样才能准确地标识每一个学生。

参照完整性则用于维护不同表之间数据的一致性。

就像一个班级的座位表和学生名单表,座位表中的学生名字必须在学生名单表中能找到对应的记录,不然就会出现“座位上坐着一个不存在的学生”这样的荒谬情况。

在数据库中,通过定义外键和相关的约束规则来实现参照完整性。

比如在订单表和商品表中,如果订单表中有商品的相关信息,那么这些商品在商品表中一定是存在的。

用户定义的完整性则更加灵活多样,它允许用户根据具体的业务需求来定义一些特殊的规则。

比如规定某个字段的值必须在特定的范围内,或者某些字段的组合必须满足特定的条件等。

假设在一个员工工资表中,可以规定工资值不能为负数,或者在一个成绩表中,规定成绩的取值范围在 0 到 100 之间。

为了确保数据库完整性,数据库管理系统提供了多种约束机制。

其中常见的有主键约束、外键约束、唯一约束、检查约束和默认值约束等。

主键约束就像前面提到的,确保主键列的值唯一且不为空。

国开电大 数据库应用技术 形考任务1+3答案

国开电大 数据库应用技术 形考任务1+3答案

形考任务1答案第1 章数据库系统概述(本章共20分)一.单项选择题(每题1分,共10分)1.数据库应用程序可以不经过数据库管理系统而直接读取数据库文件2.将相关的数据存储在一个文件中,有利于用户对数据进行分类,因此也可以加快用户操作数据的效率3.不会因为数据逻辑结构的变化而影响应用程序4.操作系统5.数据的独立性6.模式7.能够描述并发数据8.数据结构、数据操作和数据完整性约束9.一个联系可以不与任何实体有关10.外模式到模式的映像以及模式到内模式的映像都是由DBMS实现的二.判断题(每题1分,共5分)11-15 对错对错对三.简答题(本题共5分)16.答:(1)相互关联的数据集合;(2)较少的数据冗;(4)保证数据的安全可靠;(5)最大限度地保证数据的正确性;(6)数据可以共享并能保证数据的一致性。

17.答:数据独立性包括逻辑独立性和物理独立性两部分。

物理独立性是指当数据的存储结构发生变化时,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内容发生变化时,不影响应用程序的特性。

这两个独立性使用户只需关心逻辑层即可,同时增强了应用程序的可维护性。

18.答:实体是具有公共性质的并可相互区分的现实世界对象的集合。

属性是实体所具有的特征或性质。

联系是实体之间的关联关系。

第2章关系数据库理论(本章共20分)一.单项选择题(每题1分,共10分)19.数据库管理系统20.有m目x行数据的关系R和有n目y行数据的关系S进行笛卡尔积运算,其结果是有(m+n)目和(x+y)行数据的关系21.进行自然连接的两个关系可以没有列名相同的列22.进行并运算的两个关系的列个数必须相同,对应列的语义相同23.维护数据的一致性24.Y部分函数依赖于X25.第三范式的关系模式一定不包含传递函数依赖,但可以包含部分函数依赖26.第二范式27.并运算28.∏二.判断题(每题1分,共5分)29-33 错错对错错三.简答题(本题共5分)34.答:实体完整性、参照完整性和用户定义的完整性。

数据完整性

数据完整性

3.5 数据完整性在数据库中数据完整性是指保证数据正确的特性,一般包括实体完整性、域完整性、参照完整性。

一、实体完整性是保证表中记录唯一的特性。

即在一个表中,不能有重复的纪录。

候选关键字:如果一个字段的值或几个字段的值能够唯一标识表中的一条记录,这样的字段称为侯选关键字。

主关键字:在一个表中可能会有几个具有这种特性的字段或者字段的组合,这时从中选择一个作为主关键字。

在VFP中将主关键字称做主索引,将侯选关键字称为侯选索引。

实现方法:在VFP中利用主关键字(主索引)或候选关键字(候选索引)来保证表中记录的惟一性。

例1. 打开数据库“成绩管理”,为学生表中的“学号”字段建立主索引(升序)。

二、域完整性1.域:列的取值的范围(EG:数学中的定义域)域完整性:列的取值范围合理性我们以前在创建表的时候指定不同的数据类型和宽度来限制字段的取值类型和取值范围,但这些还远远不够。

我们需要进一步对列里能输入什么样的数据严格要求。

2.实现域完整性的方法:设置列的有效性规则,设置列的默认值⑴设置列的有效性规则例2. 设置“成绩管理”数据库中“学生”表中年龄字段的有效性规则:要求学生表中的年龄必须在15-22之间,否则就认为输入无效!并提示“年龄只能在15-22岁之间!”例3. 设置“学生”表中系部字段的有效性规则:要求系部列的取值必须是四个系之一,如果输入其他值就认为输入无效!并提示“该系部名不存在!”例4.设置“成绩”表中成绩的有效性规则为:成绩只能在0-100分之间,如果用户输入错误,则提示“成绩不在范围内!”⑵为列设置默认值例5.对“学籍”表进行修改,设置“入学日期”的默认值为2009-08-26,然后打开表,输入一条新记录,观察现象例6. 对“学生”表进行修改,设置“系部”列的默认值为基础部,然后打开表,使用Append命令输入一条新记录,观察现象三、参照完整性1.思考:⑴如果同学们在填学生表的时候将自己的班级名称写错了, 写成了一个学校中根本不存在的班级, 这样的结果肯定是错误的。

07-第7章-数据库完整性

07-第7章-数据库完整性
[,...] )
修改表:添加约束
返回
PRIMARY KEY约束
Байду номын сангаас
约 束
定义
若是单列作为主键,可以在列级定义或表级定义 若是列集合作为主键,必须在表级定义 一个表只能有一个PRIMARY KEY约束,受约束的列或列
集合的值不能为空和重复,必须能唯一标识表中的行。 定义了PRIMARY KEY 约束的列的列宽不能更改。
[,...] )
PRIMARY
约 束
ALTER TABLE BorrowReturn
示例
ADD CONSTRAINT PK_ BorrowReturn PRIMARY KEY(s_ID,r_ID)
返回
约 束
UNIQUE约束
定义
也称唯一值约束,确保在非主键列中不输入重复值。 一个表可以定义多个UNIQUE 约束。 在允许空值的列上保证唯一性时,应使用UNIQUE约束。 当往表中插入记录或修改相应列的值时,系统检查是否
[,...]
)
约 束
• NO ACITON:默认选项。将引发错误,撤销对父表的删除(更新)操作 • CASCADE:当在主表删除(更新)一行,则自动将子表中的对应行删除(更新) • SET NULL:删除(更新)父表的一行,子表相应行的外键值被置为NULL • SET DEFAULT:删除(更新)父表的一行,子表相应行的外键值被置为
Step4
约 束
返回
FOREIGN KEY
使用T-SQL定义(一)
CREATE TABEL 数据表名
列级约束
( 列名 数据类型 [CONSTRAIN 约束名] [FOREIGN KEY] REFERENCES 参照主键表[ (参照列) ]

数据库的完整性课件

数据库的完整性课件

06
案例分析与实践
案例一:电商数据库完整性设计
需求分析
实体关系设计
针对电商业务特点,分析数据完整性需求, 如商品信息、订单信息、用户信息等数据 的准确性和一致性。
设计合理的实体关系,确保数据表之间的 关联性和引用完整性。
约束条件设置
设置主键、外键、唯一性约束等,保证数 据的唯一性和准确性。
触发器应用
监控与日志管理
实践数据库监控和日志管理策 略,确保数据的可追溯性和可
审计性。
THANKS
感谢观看
触发器
使用触发器在插入、更新和删除操作时对实体完整性进行检查和维 护。
应用程序逻辑
在应用程序中编写逻辑代码,对实体数据进行验证和维护实体完整 性。
03
参照完整性
参照完整性定 义
参照完整性概念
指数据库中的数据在引用其他数据时,必须保持数据之间的一致性和准确性, 以确保数据在传递和使用过程中不会发生错误。
01
实体完整性规则
主键的值不能为空或部分为空,也不能有重复值。
02
参照完整性规则
外键的值或者为空,或者在其参照的关系中存在对应的主键值,并且外
键和主键的值应对应相等。
03
用户定义的完整性规则
针对某一具体应用的数据必须满足的语义要求,由用户自己来定义并实
施的数据完整性规则,如数据的取值范围、数据间的联系等。
用户自定义完整性实现方法
触发器
通过定义触发器,在插入、更新或删除操作前后对数据进行检查,确保数据满足用户自定义的完整性规则。
存储过程
通过编写存储过程,对数据进行复杂的完整性检查和处理,确保数据满足用户自定义的完整性规则。
约束 通过在表定义中添加约束条件,限制数据的取值范围或数据间的联系,确保数据满足用户自定义的完整 性规则。常见的约束包括主键约束、外键约束、唯一约束、检查约束等。

数据库中数据完整性的保证与维护

数据库中数据完整性的保证与维护

数据库中数据完整性的保证与维护数据完整性是指数据库中的数据符合事先定义的一系列约束和规则,能够满足应用程序或用户的需求,并且在数据的创建、更新和删除过程中能够保持数据的正确性和一致性。

为了保证数据的完整性,数据库中需要采取一系列措施来进行数据的验证、限制和修复。

首先,数据库必须定义一组严格的约束规则,包括实体完整性、域完整性、参照完整性和用户自定义完整性。

实体完整性定义了每一行数据都必须有主键,保证了每一行数据的唯一性。

域完整性规定了每个字段的数据类型、长度和取值范围,确保了数据的有效性。

参照完整性要求任何外键值必须是源表中的主键值,保证了数据之间的一致性。

用户自定义完整性允许用户根据具体需求定义自己的约束规则。

这些约束规则可以通过数据库管理系统来创建和维护,以保证数据的完整性。

其次,数据库应用程序需要实施一系列的数据验证机制,如输入数据合法性验证和业务逻辑验证。

输入数据合法性验证要求用户输入数据符合字段的数据类型和格式要求,防止非法数据进入数据库。

业务逻辑验证是根据具体业务规则对数据进行验证,确保数据的正确性和一致性。

此外,数据验证还可以利用触发器、约束和存储过程等数据库功能来完成,这样可以确保在数据操作过程中对数据进行预定义的检查和约束,提高数据完整性的保证。

另外,数据库还需要采取一些措施来防止数据的非法修改或删除,以保持数据的完整性。

首先,可以采用权限管理和访问控制来限制用户对数据的操作权限,只有经过授权的用户才能对数据进行修改和删除。

其次,数据库可以记录数据的修改日志,以便在需要时进行审计和验证数据的完整性。

此外,还可以定期备份和恢复数据库,以防止数据的不可逆性损坏和丢失。

维护数据完整性还包括数据的清洗和修复。

数据清洗是针对已存在的数据进行的操作,用于修复或删除数据库中的脏数据、重复数据和无效数据等。

数据清洗可通过数据清理工具、脚本和人工干预来完成。

修复数据的有效性可以借助数据库的批处理操作、触发器和存储过程等功能来实现。

数据库完整性PPT课件

数据库完整性PPT课件
误,提高数据管理的效率和准确性。
04
数据库完整性将更加注重数据质量和数据治理,通过 更加全面的数据质量监控和治理机制来提高数据的准 确性和一致性。
THANKS
数据库完整性的重要性
01
02
03
保证数据质量
数据库完整性是确保数据 准确性和一致性的基础, 有助于提高数据的质量和 可靠性。
维护数据安全
通过确保数据的完整性和 准确性,可以降低因错误 数据导致的风险,从而保 护数据的安全。
提高系统性能
数据库完整性的维护有助 于提高系统的性能和效率, 减少因数据不一致或错误 而导致的系统故障。
数据库完整性的分类
01
02
03
04
实体完整性
确保表中每行数据的唯一性, 通过主键约束实现。
域完整性
限制数据列的取值范围,通过 数据类型、约束和函数实现。
参照完整性
维护表之间数据的一致性,通 过外键约束实现。
用户自定义完整性
根据业务规则和需求定义数据 的约束条件,通过触发器、存
储过程等实现。
02
数据完整性约束
方面具有重要意义。
数据库完整性未来发展
随着技术的发展和业务需求的不断变化,数据库完整 性将面临更多的挑战和机遇。
输标02入题
未来,数据库完整性将更加注重数据安全和隐私保护, 采用更加先进的数据加密技术和访问控制机制来确保 数据的安全性和机密性。
01
03
数据库完整性将更加注重自动化和智能化,利用机器 学习和人工智能技术来自动检测和修复数据异常和错
数据验证策略
对输入数据进行有效性验证,确保数据的正 确性和完整性。
审计策略
对数据库操作进行记录和监控,以便及时发 现和解决数据完整性问题。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018/12/5
10
第7章 数据库的完整性

7.1 数据库的完整性概述
7.2 实体完整性
7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结
11
2018/12/5
7.2 实体完整性
实体完整性规则规定: – 主键的值不能取空值 – 主键的值唯一 实现方法:通过对主键值的约束实现实体完整性。 7.2.1 实体完整性的定义 – 关系模型的实体完整性 CREATE TABLE中用PRIMARY KEY定义 – 单属性构成的主键有两种说明方法 定义为列级约束条件、定义为表级约束条件 – 对多个属性构成的主键只有一种说明方法 定义为表级约束条件
2018/12/5
13
7.2.1 实体完整性的定义

[例]将SC表中的Sno,Cno属性组定义为码
CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) /*只能在表级定义主键*/ );

2018/12/5
9
7.1 数据库的完整性概述

声明式数据完整性
通过声明保证数据完整性
–作为对象定义的一部分来定义数据必须达到的标准 –DBMS 自动强制完整性 –通过使用约束、默认和规则来实现 通过代码保证数据完整性 过程式数据完整性 –在脚本中定义数据必须达到的标准 –在脚本中强制完整性 –通过使用触发器和存储过程来实现 –可在客户端或服务器用其他编程语言和工具来实现
2018/12/5
18
主表与从表
• 主表:指外键在另一张表中作主/候选键的表。(例中 的班级表) • 从表:指含有外键的表,(例中的学生表)
学生表 (从表) 姓名 学号 D.O.B 班号
Peter 1120122129
班级表(主表) 班号 08111201 08111202
2018/12/5
5-10- 08111202 1996
参照表
被参照表
2018/12/5
26
7.3.2 参照完整性检查和违约处理

3. 在被参照关系中删除元组的问题 – 级联删除(CASCADES) 将参照关系中所有外键值与被参照关系中要删除 元组之间值相同的元组一起删除。 如果参照关系同时又是另一个关系的被参照关系, 这种删除操作会继续级联下去。

2018/12/5
12
7.2.1 实体完整性的定义

PRIMARY KEY 约束可以作为表定义的一部分在创建 表时定义,也可以在表创建之后再添加。
CREATE TABLE Student CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, (Sno CHAR(9), Sname CHAR(20) NOT NULL, Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Ssex CHAR(2) , Sage SMALLINT, Sage SMALLINT, Sdept CHAR(20), Sdept CHAR(20)); PRIMARY KEY (Sno) );
2
第7章 数据库的完整性

7.1 数据库的完整性概述
7.2 实体完整性
7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结
3
2018/12/5
7.1 数据库的完整性概述

数据库的完整性是一种语义概念, – 防止数据库中存在 不符合语义的数据, 不正确的数据
– 保证数据库中数据的质量。 为维护数据库的完整性,DBMS必须: – 提供定义完整性约束条件的机制 – 提供完整性检查的方法 – 违约处理
2018/12/5
4
7.1 数据库的完整性概述

7.1.1 完整性约束条件 – 在关系数据库中,对数据的各种限制是以完整性约 束条件的形式在关系数据库模式中指定的。 加在数据上的语义约束条件称为数据库完整性约 束条件 它一般是对数据库中数据本身的某种语义限制、 数据间的逻辑约束和数据变化时所遵循的规则等
2018/12/5
23
可能破坏参照完整性的情况及违约处理
参照表
被参照表
被参照表publishers
参照表titles
违约处理
可能破坏参照完整性 插入不存在外 拒绝 键值的元组 可能破坏参照完整性 修改外键值 拒绝 删除元组
修改主键值
2018/12/5
可能破坏参照 完整性 可能破坏参照 完整性
拒绝/级连删 除/设置为空 拒绝/级连修 改/设置为空
– 关系约束是指一个关系的各个元组之间、或者多个 关系之间存在的各种联系或约束。常见的关系约束 有实体完整性约束、参照完整性约束、函数依赖约 束、统计约束等。
2018/12/5
7
7.1.2 实现数据完整性的方法

在关系数据库系统中,数据完整性控制策略包括规则、 默认值、约束、触发器和存储过程等。
– (1)默认值
08111202
主键/候选键
班级表(主表)
修改
班号
08111202
班名
软件工 程2班
人数
45


删除
2018/12/5
22
分析外键约束(从表主表)

对从表中的外键操作 – 插入:要求插入的外键值应“参照”(Reference) 主表中的主键值。 – 修改:要求修改的外键值“参照”主表中的主键值 – 删除:不需要参照主表中的主键值。
– 受限删除(RESTRICTED) – 置空值删除 这三种方法都保证了参照完整性约束,但具体哪种 方法正确,取决于应用环境的语义,需要根据实际 应用的业务规则决定具体的违约处理措施

如果想让系统采用其他的策略则必须在创建表时显式 地加以说明
30
2018/12/5
7.3.2 参照完整性检查和违约处理
如果在插入行中没有指定列的值,那么默认值指定 列中所使用的值,例如:自动增长值,内置函数、 数学表达式等
2018/12/5
8
7.1.2 实现数据完整性的方法
(2) 约束 – 约束是自动强制数据完整性的方法。 – 约束定义关系列中允许值的规则,是通用的强制完 整性的标准机制。 – 使用约束优于使用触发器、规则和默认值。 (3) 规则 – 规则是大多数数据库系统中一个向后兼容的功能, 用于执行一些与CHECK约束相同的功能。规则以单 独的对象创建,然后绑定到列上。 (4) 触发器 – 触发器是数据库系统中强制业务规则和数据完整性 的主要机制
删除:可能会影响与该主键相关的从表的外键值。若 相应的外键值存在时,策略有二:一是不允许删除主 表的主键值;二是级联删除从表中相应外键值所在的 行。
2018/12/5
21
外键约束的例子(从表主表)
主键 学生表(从表) 插入 外键
姓名
Peter
学号
1120122129
D.O. B
5-101996
班号

DBMS在执行删除语句时 – 检查所删元组是否破坏表上已定义的完整性规则( 参照完整性 ) – 不允许删除
– 级联删除
2018/12/5
31
SQL Server的级联删除或更新

CREATE TABLE 和 ALTER TABLE 语句的 REFERENCES 子 句支持 ON DELETE 和 ON UPDATE 子句: [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ]
2018/12/5
5
7.1.1 完整性约束条件

(1) 列级约束 – 主要是对属性的数据类型、数据格式和取值范围、 精度等的约束。具体包括: 对数据类型的约束,包括数据类型、长度、精度 等的约束。例如学生姓名的数据类型是字符型, 长度是8。 对数据格式的约束,例如规定日期的格式为 YYYY/MM/DD
人数 50 45 … … …
19
班名 软件工程1班 软件工程2班
外键约束的例子(主表从表)
学生表 (从表) 姓名 Peter 学号 1120122129 D.O.B 5-10-1996 班号 08111202 班级表(主表) 班号 班名 人数
50 45
… …
外键
主键
修改
删除
2018/12/5
8111201 软件工 程1 班 08111202 软件工 程2 班
【例 7-6】定义SC中的参照完整性 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 Course(Cno) );
24
7.3.2 参照完整性检查和违约处理

1. 参照关系中外键空值的问题 – 需要定义外键是否允许为空值 – 如果外键是其主键的组成部分,外键值不允许为空 – 否则可以根据具体的语义确定外键值是否允许空值
参照表 被参照表
2018/12/5
25
7.3.2 参照完整性检查和违约处理

2. 在参照关系中插入元组的问题(修改操作与之类似) – 受限插入 向titles中插入新的元组,但该元组的pub_id属性 值在表publishers中不存在,则系统拒绝 – 级联(CASCADE)插入 首先向被参照关系插入相应的元组,其主键值等 于参照关系插入元组的外键值,然后再向参照关 系插入该元组
相关文档
最新文档