数据库完整性_第1页
数据库完整性_第2页
数据库完整性_第3页
数据库完整性_第4页
数据库完整性_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章数据库完整性AnIntroductiontoDatabaseSystem复习:完整性约束条件三类完整性:实体完整性参照完整性用户自定义的完整性六种约束条件主键约束外键约束唯一性约束检查约束默认值约束空值约束AnIntroductiontoDatabaseSystem数据完整性

数据的完整性数据库的完整性是指数据的正确性和相容性。完整性VS

安全性(两个不同的概念)数据完整性是为了防止数据库中存在不符合语义的数据,即防止数据库中存在不正确的数据。防范的对象是不合语义的、不正确的数据。数据安全性是保护数据库防止恶意的破坏和非法的存取。防范的对象是非法用户和非法操作。AnIntroductiontoDatabaseSystem数据库完整性

为维护数据库的完整性,DBMS必须:1.提供定义完整性约束条件的机制2.提供完整性检查的方法3.违约处理实体完整性参照完整性用户自定义的完整性拒绝级联设置为空值AnIntroductiontoDatabaseSystem第五章数据库完整性5.1实体完整性5.2参照完整性5.3用户定义的完整性5.4完整性约束命名字句5.5触发器5.6小结第一讲AnIntroductiontoDatabaseSystem5.1实体完整性5.1.1实体完整性定义回忆定义?关系数据库的实体完整性的定义,有两种方式:①创建表时:PrimaryKey【单/多属性构成主键问题】②修改表定义时:添加PrimaryKey约束具体实例参照:P152AnIntroductiontoDatabaseSystem5.1实体完整性5.1.2实体完整性检查和违约处理当对关系定义主码后,每当用户程序对基本表添加记录或更新主码键值时,RDBMS将按照实体完整性规则自动检查记录的完整性:①主码值是否唯一,如果不唯一则拒绝此次操作。②主码的各个属性(主属性)是否为空,如果有一个为空则拒绝此次操作。并且现行的RDBMS会给出相应的错误提示。AnIntroductiontoDatabaseSystem5.1实体完整性5.1.2实体完整性检查和违约处理核查记录主码值是否唯一的方法:全表扫描,即依次判断表中的每一条记录的主码值是否与即将插入的记录主码值重复。(教材P153页)全表扫描一般情况是十分耗时,尤其在数据记录量较多的情况下。为了避免全表扫描,RDBMS核心一般都在主码字段自动建立B+树的聚簇索引,从而提高检索效率!如何保证?回忆:RDBMS默认会为主码上建立一个聚簇索引!AnIntroductiontoDatabaseSystem5.2参照完整性5.2.1参照完整性定义5.2.2参照完整性检查和违约处理关系数据库的参照完整性在创建表或修改表时,使用ForeignKey

短语定义哪些列为外键,用References短语指明这些外码参照哪些表的主码。示例:P154参照完整性定义完毕,该约束就将相关联的两个表中的相应的元组联系起来了,因此为保证数据的有效性,必须对相关的更新操作(增、删、改)进行完整性检查。回忆定义?AnIntroductiontoDatabaseSystem5.2参照完整性5.2.2参照完整性检查和违约处理可能破坏参照完整性的情况及违约处理被参照表(Student表)参照表(SC表)违约处理可能破坏参照完整性插入元组拒绝可能破坏参照完整性修改外码值拒绝删除元组可能破坏参照完整性拒绝/级连删除/设置为空值修改主码值可能破坏参照完整性拒绝/级连修改/设置为空值如果为定义参照完整性违反策略,当违反参照完整性时,系统选择默认策略;如果想让系统采用其他策略则必须显式说明。AnIntroductiontoDatabaseSystem5.2参照完整性5.2.2参照完整性检查和违约处理参照完整性违约处理策略:1拒绝(NoAction)执行该策略一般设置为各个RDBMS的默认策略。2级联(Cascade)操作自动删除或更新参照表的所有相关联的记录。3设置为空值主要涉及参照表中的相应字段是否允许空值的考虑。AnIntroductiontoDatabaseSystem5.2参照完整性举例:定义成绩表,并显式设置其参照完整性违约策略。AnIntroductiontoDatabaseSystem5.3用户定义的完整性用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求。目前的RDBMS都提供了定义和检查用户自定义完整的机制,而不必由应用程序承担。SQLServer中提供完整性机制常用的方法:唯一性约束(Unique)检查(Check)约束:约束字段只涉及一个表时非常有效默认值约束(Default)空值约束(NotNull)存储过程和触发器:涉及多个表多个字段维护时非常有效AnIntroductiontoDatabaseSystem5.3用户定义的完整性用户自定义完整性约束条件的定义用户自定义完整性约束条件检查和违约处理说明:(1)如果约束涉及单个属性列,可以定义在列级,也可定义在表级

(2)如果约束涉及多个属性列,只能定义在表级拒绝执行!AnIntroductiontoDatabaseSystem5.3用户定义的完整性习题:1定义图书信息表:Book

BookID:图书编号、主键、Char(8)

BookName

图书名称、非空、nvarchar(20)

BookISBN

图书ISBN号码、唯一、varchar(18)

Price图书单价、要求在0~200元之间、decimal(5,2)AnIntroductiontoDatabaseSystem5.3用户定义的完整性习题:2定义读者信息表:ReaderRID:读者编号、主键、Char(6)

RName:读者姓名、非空、nvarchar(10)

RSex:性别(只能取‘男’和‘女’)、nchar(1)

RCardNo:身份证编号(唯一且满足公认的条件:性别为男,倒数第2位是单数,否则相反)、char(18)AnIntroductiontoDatabaseSystem5.3用户定义的完整性习题:3定义借阅信息表:BorrowRID参照读者信息表的RID取值

BookID

参照图书信息表的BookID取值

BDate

借阅日期、Datetime

RDate

归还日期:不能在借阅日期之前假设允许续借图书,试分析本表的主键,并完成主键、外键和用户自定义完整性设置。AnIntroductiontoDatabaseSystem5.4完整性约束命名子句SQL在创建和修改表定义的语句中,提供了完整性约束命名子句Constraint,用来对完整性约束命名。修改表中完整性限制第三章数据定义部分:AlterTable

语句的Add/Drop

约束子句个人认为:对于:非空、默认值、唯一约束,这三种约束可直接定义对于:主键、外键、Check约束、为了便于维护,最好在创建约束时采用约束命名机制。AnIntroductiontoDatabaseSystem5.4完整性约束命名子句约束简写_表名_约束的列名约束的命名约定例子:

DF_TableB_age

FK_TableB_pno试说出它们表示的含义?AnIntroductiontoDatabaseSystem5.6触发器转入触发器专题知识章节请首先学习SQL语言程序流程控制结构后AnIntroductiontoDatabaseSystem5.6SQL流程控制语句

IF…ELSE语句

While…Continue…Break

Begin…End--语句块的开始和结束标志用户在程序设计语言时,常常需要利用各种流程控制语句,改变计算机的执行流程,以满足程序设计的需要。AnIntroductiontoDatabaseSystem5.6SQL流程控制语句

IF…ELSE语句

在程序设计中,如果需要对给定的条件进行判断,然后根据条件的真假选择不同的执行路径时采用该语句。语法格式:

IF

条件表达式

{单个SQL语句或者Begin-End语句块}[ELSE{单个SQL语句或者Begin-End语句块}]提示:如果条件表达式中有Select语句,需要用小括号括起来TRUE/FALSEAnIntroductiontoDatabaseSystem5.6SQL流程控制语句

IF…ELSE语句例题:在学生表中查询姓名为“王琳琳”的学生,如果存在,列示该学生的学号、姓名、性别、出生日期、所属院系名称等信息;如果不存在,则打印提示信息:“不存在姓名为王琳琳的学生!”。AnIntroductiontoDatabaseSystem5.6SQL流程控制语句

WHILE…CONTINUE…BREAK语句语法格式:WhileLogical_Expression_1 Begin

语句块;

[IFLogical_Expression_2 Continue;][IFLogical_Expression_3 Break;] End退出循环体退出本次循环学号自动生成循环更新简历数据AnIntroductiontoDatabaseSystem5.6SQL流程控

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论