第12章数据库完整性控制PPT讲稿.ppt

上传人:石*** 文档编号:43302638 上传时间:2022-09-17 格式:PPT 页数:37 大小:1.95MB
返回 下载 相关 举报
第12章数据库完整性控制PPT讲稿.ppt_第1页
第1页 / 共37页
第12章数据库完整性控制PPT讲稿.ppt_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《第12章数据库完整性控制PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第12章数据库完整性控制PPT讲稿.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第12章数据库完整性控制章数据库完整性控制第1页,共37页,编辑于2022年,星期日本章内容本章内容12.1 12.1 约束约束12.2 12.2 默认值默认值12.3 12.3 规则规则12.4 12.4 事务处理事务处理12.5 12.5 数据的锁定数据的锁定第2页,共37页,编辑于2022年,星期日数据完整性数据完整性l数据完整性问题的提出数据完整性问题的提出数据库中的数据是从外界输入的,由于种种原因,数据库中的数据是从外界输入的,由于种种原因,会发生输入数据无效或错误。为了保证输入的会发生输入数据无效或错误。为了保证输入的数据正确、符合规定,提出数据完整性问题。数据正确、符合规定,提

2、出数据完整性问题。l数据完整性问题的解决数据完整性问题的解决SQL Server2000中可以通过各种中可以通过各种约束约束、默认值默认值、规则规则等数据库对象来保证数据的完整性。等数据库对象来保证数据的完整性。l数据完整性包括数据完整性包括实体完整性实体完整性、域完整性域完整性、参照完整性参照完整性和和用户自定义完整性用户自定义完整性。第3页,共37页,编辑于2022年,星期日12.1 12.1 约束约束l约束约束约束约束(Constraint)是是SQL Server提供的自动保持提供的自动保持数据库完整性的一种机制,它定义了可输入表数据库完整性的一种机制,它定义了可输入表或表的单个列中的

3、数据的限制条件。或表的单个列中的数据的限制条件。使用约束使用约束优先于使用触发器、规则和默认值优先于使用触发器、规则和默认值。l约束独立于表结构约束独立于表结构,可以在不改变表结构的基,可以在不改变表结构的基础上,添加或删除约束。当表被删除时,表所带础上,添加或删除约束。当表被删除时,表所带的所有约束定义也随之被删除。的所有约束定义也随之被删除。第4页,共37页,编辑于2022年,星期日12.1 12.1 约束约束(1)主键约束主键约束主键约束主键约束(Primary Key,PK)l表的一列或几列的组合的值在表中唯一地指定一行记录,表的一列或几列的组合的值在表中唯一地指定一行记录,这样的一列

4、或多列称为表的主键,通过它可这样的一列或多列称为表的主键,通过它可强制表的实体强制表的实体完整性完整性。l l主键不能为空,且不同两行的键值不能相同。主键不能为空,且不同两行的键值不能相同。主键不能为空,且不同两行的键值不能相同。主键不能为空,且不同两行的键值不能相同。l表本身并不要求一定要有主键,但最好给表定义主键。表本身并不要求一定要有主键,但最好给表定义主键。l在规范化的表中,每行中的所有数据值都完全依赖于主键。在规范化的表中,每行中的所有数据值都完全依赖于主键。例如:例如:例如:例如:学生表中的学号。学生表中的学号。第5页,共37页,编辑于2022年,星期日12.1 12.1 约束约束

5、l创建主键约束的方法创建主键约束的方法l在企业管理器中,打开表设计器。在企业管理器中,打开表设计器。l选择创建主键的列。选择创建主键的列。l单击工具栏设置主键按钮单击工具栏设置主键按钮 。第6页,共37页,编辑于2022年,星期日12.1 12.1 约束约束(2)外键约束外键约束(Foreign Key,FK)l外键约束定义了表与表之间的关系。外键约束定义了表与表之间的关系。l通过将一个表中一列或多列添加到另一个表中,通过将一个表中一列或多列添加到另一个表中,创建两个表之间的连接,这个列就成为第二个创建两个表之间的连接,这个列就成为第二个表的外键,即外键是用于建立和加强两个表数表的外键,即外键

6、是用于建立和加强两个表数据之间的连接的一列或多列,通过它可以据之间的连接的一列或多列,通过它可以强制强制参照完整性参照完整性。l外键约束的主要目的是控制存储在外键表中的外键约束的主要目的是控制存储在外键表中的数据。数据。第7页,共37页,编辑于2022年,星期日12.1 12.1 约束约束l创建外键约束的方法创建外键约束的方法l打开企业管理器,展开数据库,右键单击关系图,选择打开企业管理器,展开数据库,右键单击关系图,选择【新建数据库关系图新建数据库关系图】菜单项。菜单项。l根据向导提示,选择欲创建外键约束的表。根据向导提示,选择欲创建外键约束的表。l出现如下界面,拖动关联列。出现如下界面,拖

7、动关联列。第8页,共37页,编辑于2022年,星期日12.1 12.1 约束约束l级联操作级联操作l根据主键表中数据的修改而对外键表中数据相应地做相根据主键表中数据的修改而对外键表中数据相应地做相同的修改。同的修改。lSQL Server提供了两种级联操作:级联删除和级联修改提供了两种级联操作:级联删除和级联修改l l级联删除级联删除级联删除级联删除:当主键表中某行被删除时,外键表中所有相关行将被删:当主键表中某行被删除时,外键表中所有相关行将被删除。除。例如:例如:例如:例如:课程表中的课程表中的c01课程被删除,选课表选了课程被删除,选课表选了c01课程的记录都课程的记录都被删除。被删除。

8、l l级联修改级联修改级联修改级联修改:当主键表中某行的键值被修改时,外键表中所有相:当主键表中某行的键值被修改时,外键表中所有相关行的该外键值也将被自动修改为新值。关行的该外键值也将被自动修改为新值。例如:例如:例如:例如:将课程表中将课程表中c02改为改为c30,选课表中,选课表中c02的值也被自动更改的值也被自动更改为为c30。第9页,共37页,编辑于2022年,星期日12.1 12.1 约束约束(3)唯一性约束唯一性约束(Unique)l唯一性约束指定一个或多个列的组合的值具有唯一性约束指定一个或多个列的组合的值具有唯一性,以防止在列中输入重复的值,为表中唯一性,以防止在列中输入重复的

9、值,为表中的一列或者多列提供实体完整性。的一列或者多列提供实体完整性。例如:例如:例如:例如:身份证号码通常被设定唯一性约束。身份证号码通常被设定唯一性约束。l唯一性约束指定的列可以有唯一性约束指定的列可以有NULL属性。主键属性。主键也强制执行唯一性,但主键不允许空值,故主也强制执行唯一性,但主键不允许空值,故主键约束强度大于唯一约束。因此主键列不能再键约束强度大于唯一约束。因此主键列不能再设定唯一性约束。设定唯一性约束。l一个表可以定义多个唯一性约束。一个表可以定义多个唯一性约束。第10页,共37页,编辑于2022年,星期日12.1 12.1 约束约束l创建唯一性约束创建唯一性约束l在企业

10、管理器中,打开表设计器。在企业管理器中,打开表设计器。l单击工具栏管理索引单击工具栏管理索引/键按钮键按钮 。第11页,共37页,编辑于2022年,星期日12.1 12.1 约束约束(4)检查约束检查约束检查约束检查约束(Check)l检查约束对输入列或整个表中的值设置检查条件,以限检查约束对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性。制输入值,保证数据库的数据完整性。l当对具有检查约束列进行插入或修改时,当对具有检查约束列进行插入或修改时,SQL Server将用该检查约束的逻辑表达式对新值进行检查,将用该检查约束的逻辑表达式对新值进行检查,只有满足条件只有满足条

11、件(逻辑表达式返回逻辑表达式返回TRUE)的值才能填入的值才能填入该列,否则报错。该列,否则报错。l可以为每列指定多个可以为每列指定多个CHECK约束。约束。例如:例如:例如:例如:为学生表的性别列定义检查约束:为学生表的性别列定义检查约束:性别性别 in(男男,女女)或者或者 性别性别=男男 or 性别性别=女女第12页,共37页,编辑于2022年,星期日12.1 12.1 约束约束l创建检查约束创建检查约束l在企业管理器中,打开表设计器。在企业管理器中,打开表设计器。l单击工具栏管理索引单击工具栏管理索引/键按钮键按钮 ,选择,选择【CHECK约束约束】。输入约束输入约束表达式表达式第13

12、页,共37页,编辑于2022年,星期日12.2 12.2 默认值默认值l默认值默认值(Default)l通过定义列的默认值或使用数据库的默认值对象通过定义列的默认值或使用数据库的默认值对象绑定表的列,以确保在没有为某列指定数据时,绑定表的列,以确保在没有为某列指定数据时,来指定列的值。来指定列的值。l默认值可以是常量,也可以是表达式,还可以为默认值可以是常量,也可以是表达式,还可以为NULL值。值。例如:例如:将学生表的性别列设置默认值将学生表的性别列设置默认值女女。第14页,共37页,编辑于2022年,星期日12.2 12.2 默认值默认值l创建默认约束创建默认约束l在企业管理器中,打开表设

13、计器。在企业管理器中,打开表设计器。l选择设定默认值的列,输入默认值。选择设定默认值的列,输入默认值。第15页,共37页,编辑于2022年,星期日12.2 12.2 默认值默认值l使用默认对象使用默认对象l默认对象是默认对象是单独存储单独存储的,可以绑定到某列。删的,可以绑定到某列。删除表时,默认值会自动删除,但默认对象不会除表时,默认值会自动删除,但默认对象不会被删除。被删除。l默认对象的操作默认对象的操作(1)创建默认对象创建默认对象注意定界注意定界符符第16页,共37页,编辑于2022年,星期日12.2 12.2 默认值默认值(2)绑定默认对象绑定默认对象将左侧列添加将左侧列添加至右侧,

14、即绑至右侧,即绑定定将右侧绑定列将右侧绑定列删除至左侧,删除至左侧,解除绑定解除绑定修改默修改默认对象认对象第17页,共37页,编辑于2022年,星期日12.2 12.2 默认值默认值(3)重命名默认对象重命名默认对象(4)删除默认对象删除默认对象第18页,共37页,编辑于2022年,星期日12.3 12.3 规则规则l l规则规则规则规则是数据库中对存储在表的列或用户定义数据类型是数据库中对存储在表的列或用户定义数据类型中的值的规定和限制。中的值的规定和限制。l规则是规则是单独存储单独存储单独存储单独存储的独立的数据库对象。的独立的数据库对象。l规则与其作用的表或用户定义数据类型是相互独立的

15、。规则与其作用的表或用户定义数据类型是相互独立的。l规则和约束可以同时使用,表的列可以有一个规则及多规则和约束可以同时使用,表的列可以有一个规则及多个约束。个约束。l规则与检查约束在功能上相似,但在使用上有所区别。规则与检查约束在功能上相似,但在使用上有所区别。l规则的操作包括规则的操作包括创建创建、查看查看、绑定绑定、松绑松绑和和删除删除等。等。第19页,共37页,编辑于2022年,星期日12.3 12.3 规则规则l创建规则创建规则l在企业管理器中选择数在企业管理器中选择数据库对象据库对象“规则规则”,单,单击右键从快捷菜单中选击右键从快捷菜单中选择择“新建规则新建规则”选项,选项,即会弹

16、出如图所示的即会弹出如图所示的“规则属性规则属性”对话框。对话框。l输入规则名称和表达输入规则名称和表达式之后,单击式之后,单击“确定确定”按钮,即完成规则按钮,即完成规则的创建。的创建。第20页,共37页,编辑于2022年,星期日12.3 12.3 规则规则l查看规则查看规则l在企业管理器的数据库对象中选择在企业管理器的数据库对象中选择“规则规则”对象,即对象,即可从右边的任务板中看到规则的大部分信息,包括规可从右边的任务板中看到规则的大部分信息,包括规则的名称、所有者、创建时间等。则的名称、所有者、创建时间等。规则列表规则列表第21页,共37页,编辑于2022年,星期日12.3 12.3

17、规则规则l修改规则修改规则l在企业管理器中,选中欲修改的规则,右键单击,选择在企业管理器中,选中欲修改的规则,右键单击,选择【属属性性】菜单项。菜单项。l打开打开【规则属性规则属性】对话框。对话框。第22页,共37页,编辑于2022年,星期日12.3 12.3 规则规则l规则的绑定与松绑规则的绑定与松绑l l绑定绑定绑定绑定:指定规则作用于哪个表的那一列或哪个用户定义数据:指定规则作用于哪个表的那一列或哪个用户定义数据类型。类型。表的一列或一个用户定义数据类型只能与一个规则绑定,表的一列或一个用户定义数据类型只能与一个规则绑定,表的一列或一个用户定义数据类型只能与一个规则绑定,表的一列或一个用

18、户定义数据类型只能与一个规则绑定,而一个规则可以绑定多个对象而一个规则可以绑定多个对象而一个规则可以绑定多个对象而一个规则可以绑定多个对象。l l松绑松绑松绑松绑:解除规则与对象的绑定。:解除规则与对象的绑定。规则绑定规则绑定到列到列规则绑定到规则绑定到用户定义数用户定义数据类型据类型将左侧列添将左侧列添加至右侧,加至右侧,即绑定即绑定将右侧绑定列删将右侧绑定列删除至左侧,即松除至左侧,即松绑绑第23页,共37页,编辑于2022年,星期日12.3 12.3 规则规则l删除规则删除规则l在查看数据库规则窗口,右键单击欲删除的规则,选在查看数据库规则窗口,右键单击欲删除的规则,选择择【删除删除】菜

19、单项。菜单项。第24页,共37页,编辑于2022年,星期日12.4 12.4 事务处理事务处理l事务(事务(Transaction)l是是SQL Server中的中的一个逻辑工作单元一个逻辑工作单元,该单元,该单元将被作为将被作为一个整体一个整体进行处理。进行处理。l要么全部执行,要么都不执行。一个事务中的要么全部执行,要么都不执行。一个事务中的所有操作全部成功,事务才算完成,否则,操所有操作全部成功,事务才算完成,否则,操作全部撤销。作全部撤销。l事务的作用事务的作用l解决数据库中的解决数据库中的数据不一致的问题数据不一致的问题。第25页,共37页,编辑于2022年,星期日12.4 12.4

20、 事务处理事务处理张伟同学退学,需删除其学生表及选课表中的记录:张伟同学退学,需删除其学生表及选课表中的记录:delete from 学生表学生表 where 学号学号=s2008005delete from 选课表选课表 where 学号学号=s2008005学生表学生表选课表选课表学生表的数据删除学生表的数据删除后,掉电,引起数后,掉电,引起数据不一致问题。据不一致问题。第26页,共37页,编辑于2022年,星期日12.4 12.4 事务处理事务处理l事务的属性(事务的属性(ACID)l原子性原子性(atomicity):事务必须是工作的最小):事务必须是工作的最小单元,即原子单元,对于其

21、数据的修改,单元,即原子单元,对于其数据的修改,要么要么全部执行,要么全都不执行全部执行,要么全都不执行。l一致性一致性(consistency):事务在完成后,必):事务在完成后,必须使所有的数据都保持一致性状态。须使所有的数据都保持一致性状态。l隔离性隔离性(isolation):一个事务所作的修改必):一个事务所作的修改必须与任何其他并发事务所作的修改隔离。须与任何其他并发事务所作的修改隔离。l持久性持久性(durability):事务完成后,它对于系):事务完成后,它对于系统的影响是永久性的。统的影响是永久性的。第27页,共37页,编辑于2022年,星期日12.4 12.4 事务处理事

22、务处理l3种事务模式种事务模式l自动提交事务自动提交事务:每条单独的语句都是一个事务,:每条单独的语句都是一个事务,为系统默认的事务管理模式。为系统默认的事务管理模式。l显式事务显式事务:用户定义事务的启动和结束。:用户定义事务的启动和结束。lBEGIN TRANSACTION:事务开始。:事务开始。lCOMMIT:事务完成。:事务完成。lROLLBACK:事务回滚。:事务回滚。l隐性事务隐性事务:在当前事务完成提交或回滚后,新:在当前事务完成提交或回滚后,新事务自动启动。即用户不需要指定事务的开始,事务自动启动。即用户不需要指定事务的开始,但需要指定事务的提交和回滚。但需要指定事务的提交和回

23、滚。第28页,共37页,编辑于2022年,星期日12.4 12.4 事务处理事务处理l事务的事务的启动启动、提交提交和和回滚回滚l在应用程序中,通常用在应用程序中,通常用BEGIN TANSACTION语句来标识一个事务的开始,语句来标识一个事务的开始,用用COMMIT语句标识事务结束,用语句标识事务结束,用ROLLBACK语句标识事务回滚。语句标识事务回滚。第29页,共37页,编辑于2022年,星期日12.4 12.4 事务处理事务处理举例:举例:举例:举例:分析以下分析以下T-SQL语句的执行结果。语句的执行结果。begin transactionbegin transaction ins

24、ert into 课程表课程表(课程号课程号,课程名课程名,学时学时)values(c06,管管理学理学,60)rollbackrollbackselect*from 课程表课程表begin transactionbegin transaction insert into 课程表课程表(课程号课程号,课程名课程名,学时学时)values(c06,管理学管理学,60)commitcommitselect*from 课程表课程表第30页,共37页,编辑于2022年,星期日12.5 12.5 数据的锁定数据的锁定l并发问题并发问题l多个用户同时访问一个数据库,则当他们的事多个用户同时访问一个数据库,

25、则当他们的事务同时使用相同的数据时可能会发生数据不一务同时使用相同的数据时可能会发生数据不一致的问题。致的问题。l并发问题包括:并发问题包括:l丢失或覆盖更新(丢失或覆盖更新(Lost Update)l未确认的相关性(脏读,未确认的相关性(脏读,Dirty Read)l不一致的分析(非重复读,不一致的分析(非重复读,Non-Repeatable Read)l幻想读幻想读第31页,共37页,编辑于2022年,星期日12.5 12.5 数据的锁定数据的锁定lSQL Server的锁模式的锁模式l锁(锁(lock):是一种安全机制,用于控制多个用户的):是一种安全机制,用于控制多个用户的并发操作,以

26、防止用户读取正在由其他用户更改的数并发操作,以防止用户读取正在由其他用户更改的数据或者多个用户同时修改同一数据。据或者多个用户同时修改同一数据。l锁模式:确定并发事务访问资源的方式。锁模式:确定并发事务访问资源的方式。l l共享锁共享锁共享锁共享锁(share lock):锁定的资源可以被其他用):锁定的资源可以被其他用户读取,但其他用户不能修改它(只读操作)。户读取,但其他用户不能修改它(只读操作)。l l排他锁排他锁排他锁排他锁(exclusive lock):锁定的资源只允许进):锁定的资源只允许进行锁定操作的程序使用,其他任何对它的操作均不行锁定操作的程序使用,其他任何对它的操作均不会

27、被接受。会被接受。l l更新锁更新锁更新锁更新锁(update lock):用于可更新的资源中,是):用于可更新的资源中,是为了防止死锁而设立的。为了防止死锁而设立的。第32页,共37页,编辑于2022年,星期日12.5 12.5 数据的锁定数据的锁定l通过企业管理器查看通过企业管理器查看和终止锁和终止锁l在企业管理器中选择在企业管理器中选择目录树窗口中目录树窗口中“管理管理”文件夹下文件夹下“当前活当前活动动”项中的项中的“锁锁/进进程程ID”选项,可以查选项,可以查看当前锁定的进程。看当前锁定的进程。选择同级的选择同级的“锁锁/对对象象”选项下的相应选项下的相应选项,则可以查看选项,则可以

28、查看当前锁定的对象。当前锁定的对象。第33页,共37页,编辑于2022年,星期日12.5 12.5 数据的锁定数据的锁定l右键单击任务板窗口中的对象,从快捷菜单中选择右键单击任务板窗口中的对象,从快捷菜单中选择【属性属性】项,则会出现如下图所示的锁的进程细节项,则会出现如下图所示的锁的进程细节对话框。在此,可以刷新或终止锁的进程。对话框。在此,可以刷新或终止锁的进程。第34页,共37页,编辑于2022年,星期日12.5 12.5 数据的锁定数据的锁定l死锁及其防止死锁及其防止l死锁(死锁(deadlocking)是在多用户或多进程状)是在多用户或多进程状况下,为使用同一资源而产生的无法解决的争

29、况下,为使用同一资源而产生的无法解决的争用状态。用状态。l死锁会造成资源的大量浪费,甚至会使系统崩死锁会造成资源的大量浪费,甚至会使系统崩溃。在溃。在SQL Server2000中,通常由锁监视器中,通常由锁监视器线程自动定期对死锁进行检测。当识别死锁后,线程自动定期对死锁进行检测。当识别死锁后,SQL Server自动设置一个事务结束死锁进程。自动设置一个事务结束死锁进程。第35页,共37页,编辑于2022年,星期日12.5 12.5 数据的锁定数据的锁定l防止死锁应遵循以下原则:防止死锁应遵循以下原则:(1)尽量避免并发地执行涉及到修改数据的语句。尽量避免并发地执行涉及到修改数据的语句。(

30、2)要求每个事务一次就将所有要使用的数据全部加锁,要求每个事务一次就将所有要使用的数据全部加锁,否则就不予执行。否则就不予执行。(3)预先规定一个封锁顺序,所有的事务都必须按这个顺序预先规定一个封锁顺序,所有的事务都必须按这个顺序对数据执行封锁。例如,不同的过程在事务内部对对象对数据执行封锁。例如,不同的过程在事务内部对对象的更新执行顺序应尽量保持一致。的更新执行顺序应尽量保持一致。(4)每个事务的执行时间不可太长,对程序段长的事务每个事务的执行时间不可太长,对程序段长的事务可考虑将其分割为几个事务。可考虑将其分割为几个事务。第36页,共37页,编辑于2022年,星期日小结与提问小结与提问l数据库完整性约束数据库完整性约束l数据完整性问题数据完整性问题l如何保证数据的完整性如何保证数据的完整性l约束约束l默认值默认值l规则规则l事务处理事务处理l数据的锁定数据的锁定第37页,共37页,编辑于2022年,星期日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁