6.2数据库的完整性控制 课件(共27张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源下载
  1. 二一教育资源

6.2数据库的完整性控制 课件(共27张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源简介

(共27张PPT)
数据库的安全性控制和完整性控制
第6章
目录
01
数据库的
安全性控制
02
数据库的
完整性控制
本章主要内容
如今,世界上大量的信息系统均使用了数据库技术,数据在信息系统中的价值变得越来越重要,数据库系统的安全和其对数据的保护成为一个越来越值得关注的方面。数据库系统中的数据由数据库管理系统统一管理与控制,为了保证数据库中数据的安全、完整和正确有效,需要对数据库实施保护,使其免受某些因素对其中数据的破坏。
数据库的数据保护主要是指数据库的安全性控制和完整性控制。数据库的安全性和完整性是两个既有联系又不完全相同的概念。
数据库的完整性控制
第6章
02
6.2 数据库的完整性控制
数据库的完整性是指存放在数据库中的数据的一致性和准确性。事务是SQL Server中的一个逻辑工作单元,该单元将被作为一个整体进行处理。
锁可以防止用户读取正在由其他用户更改的数据并防止多个用户同时更改相同的数据。事物和锁都是用来保证数据完整性和一致性的机制。
6.2.1数据库的完整性含义
数据库的完整性是为了防止数据库中存在不符合语义规定的数据和防止因错误信息的输入/输出造成无效操作或错误信息而提出的。
数据库的完整性有3种类型:实体完整性、参照完整性、用户自定义完整性。
在SQL Server中可以通过各种规则、默认值和约束等数据库对象来保证数据库的完整性。
6.2.2 规则
规则(Rule)就是数据库中对存储在表中的列或用户定义数据类型中的值的规定和限制。规则是单独存储的独立的数据库对象。
规则与其作用的表或用户定义数据类型是相互独立的,即表或用户定义数据类型的删除、修改不会对与之相连的规则产生影响。
6.2.2 规则
1.完整性规则主要由以下三部分构成。
(1)触发条件:规定系统什么时候使用规则来检查数据。
(2)约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件。
(3)违约响应:规定系统如果发现用户发出的操作请求违背了完整性约束条件,应该采取哪些措施来保证数据库的完整性。
6.2.2 规则
一条完整性规则可以用一个五元组(D, O, A, C, P)形式化地表示。
D(Data)代表约束作用的数据对象,可以是关系、元组和列三种对象。
O(Operation)代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,是立即执行还是延迟执行。
A(Assertion)代表数据对象必须满足的语义约束,这是规则的主体。
C(Condition)代表选择作用的数据对象值的谓词。
P(Procedure)代表违反完整性规则时触发执行的操作过程。
6.2.2 规则
2.创建规则
CREATE RULE语句用于在当前数据库中创建规则,其语法格式如下。
CREATE RULE rule_name AS condition_expression
[例6.1] 创建性别规则。
CREATE RULE sex_rule AS @sex in (`男`,`女`);
6.2.2 规则
3.规则的绑定与松绑
创建规则后,规则只是一个存在于数据库中的对象,并未发生作用。需要将规则与数据库表或用户定义数据类型联系起来,才能达到创建规则的目的。
联系的方法称为绑定,所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户定义数据类型。表的一列或一个用户定义数据类型只能与一个规则绑定,而一个规则可以绑定多个对象。解除规则与对象的绑定称为松绑。
6.2.2 规则
(1)用存储过程sp_bindrule绑定规则
系统存储过程sp_bindrule可以将一个规则绑定到表的一个列或一个用户定义数据类型上,其语法格式如下。
sp_bindrule [@rulename =] 'rule’,
[@objname =] 'object_name’
[, [@futureonly=]'futureonly’];
【例6.3】绑定sex_rule到S表的Sex。
EXEC sp_bindrule 'sex_rule', 'S.Sex';
6.2.2 规则
(2)用存储过程sp_unbindrule解除规则的绑定
存储过程sp_unbindrule可解除规则与列或用户定义数据类型的绑定,其语法格式如下。
sp_unbindrule [@objname =] 'object_name’
[,[@ futureonly = ] 'futureonly’ ];
【例6.4】解除已绑定到S表的字段Sex的规则。
EXEC sp_unbindrule 'S.Sex';
6.2.2 规则
4.删除规则
使用DROP RULE命令可以删除当前数据库中的一个或多个规则,其语法格式如下。
DROP RULE {rule_name} [,...n]
在删除一个规则前,必须先将与其绑定的对象解除绑定。
【例6.5】删除sex_rule规则。
DROP RULE sex_rule;
6.2.3 默认值
默认值(Default)是用户输入记录时向没有指定具体数据的列中自动插入的数据。
默认值对象与CREATE TABLE或ALTER TABLE语句操作表时用默认约束指定的默认值功能相似,两者的区别类似于规则与检查约束在使用上的区别。
默认值对象可以用于多个列或用户定义数据类型。表的一列或一个用户定义数据类型只能与一个默认值绑定。
6.2.3 默认值
1. 创建默认值
CREATE DEFAULT语句用于在当前数据库中创建默认值对象,其语法格式如下。
CREATE DEFAULT default_name AS constant_expression;
【例6.6】创建性别默认值sex_defa。
CREATE DEFAULT sex_defa AS '男';
6.2.3 默认值
2.默认值的绑定
创建默认值之后,默认值只是一个存在于数据库中的对象,并未发生作用。同规则一样,需要将默认值与数据库表的列或用户定义数据类型绑定。
系统存储过程sp_bindefault可以将一个默认值绑定到表的一个列或一个用户定义数据类型上。其语法格式如下。
sp_bindefault [@deftiame =] 'default’,
[@objname =] 'object_name', [,'futureonly']
6.2.3 默认值
3.用系统存储过程sp_unbindefault解除默认值的绑定
系统存储过程sp_unbindefault可以解除默认值与表的列或用户定义数据类型的绑定,其语法格式如下。
【例6.8】解除默认值sex_defa与表S的sex列的绑定。
EXEC sp_unbindefault 'S.sex ';
6.2.3 默认值
4.使用DROP DEFAULT命令删除默认值
使用DROP DEFAULT命令可以删除数据库中的一个或多个默认值,其语法格式如下。
DROP DEFAULT {default_name} [,…n];
【例6.9】删除性别默认值sex_defa。
DROP DEFAULT sex_defa;
6.2.4 约束
约束(Constraint)是SQL Server 2019提供的自动保持数据库的完整性的一种机制,它定义了可输入表或表的单个列中的数据的限制条件。使用约束优先于使用触发器、规则和默认值。
约束独立于表结构,作为数据库定义部分在CREATE TABLE语句中声明约束,可以在不改变表结构的基础上,通过ALTER TABLE语句添加或删除约束。当表被删除时,表所带的所有约束定义也随之被删除。
● 按约束的作用不同,约束可分为主键约束(PRIMARY KEY)、外键约束(FOREIGN KEY)、唯一性约束(UNIQUE)、检查约束(CHECK)、默认值约束(DEFAULT)、非空值约束(NOT NULL)。
6.2.4 约束
1.主键约束
表的一列或几列的组合的值在表中唯一地指定一条记录,这样的一列或多列称为表的主键,表的实体完整性可以通过主键约束强制实现。
主键不允许为空值,且不同的两行的键值不能相同。
表中可以有多个可以唯一地标识一条记录的键,每个键都称为候选键,只可以选择一个候选键作为表的主键,其他候选键称作备用键。
6.2.4 约束
2.外键约束
外键约束定义了表与表之间的关系。通过将一个表中一列或多列添加到另一个表中,创建两个表之间的连接,这个列就成为第二个表的外键,即外键是用于建立和加强两个表数据之间的连接的一列或多列。
表的参照完整性可以通过外键约束强制实现。
6.2.4 约束
3.唯一性约束
唯一性(Unique)约束指定一个或多个列的组合的值具有唯一性,以防止在列中输入重复的值,为表中的一列或者多列提供实体完整性。
唯一性约束指定的列可以有NULL属性。主键也强制执行,但主键不允许为空值,故主键约束的强度大于唯一性约束。因此,主键列不能再设定唯一性约束。
6.2.4 约束
4.检查约束
检查(Check)约束对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
当对具有检查约束列进行插入或修改时,SQL Server将用该检查约束的逻辑表达式对新值进行检查,只有满足条件(逻辑表达式返回TRUE)的值才能填入该列,否则报错。可以为每列指定多个检查约束。
6.2.4 约束
5.默认约束
默认约束通过定义列的默认值或使用数据库的默认值对象绑定表的列,以确保在没有为某列指定数据时来指定列的值。
默认值可以是常量,也可以是表达式,还可以为NULL值。
SQL Server推荐使用默认约束而不是默认值对象的方式来指定列的默认值。
6.2.4 约束
6.非空值约束
非空值(Not Null)约束指字段的值不能为空。
对于使用了非空值约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过CREATE TABLE或ALTER TABLE语句实现非空值约束。在表中某个列的定义后加上关键字NOT NULL作为限定词,可以约束该列的取值不能为空。
本章小结
数据库的重要特征是它能为多个用户提供数据共享。在多个用户使用同一数据库系统时,要保证整个系统的正常运转, DBMS 必须具备一整套完整而有效的安全保护措施。
本章从安全性控制、完整性控制讨论了数据库的安全保护功能。

展开更多......

收起↑

资源预览