参照完整性

合集下载

参照完整性的实现方法分析

参照完整性的实现方法分析

在 管理 大量 、 久 、 持 一致 数 据 的数 据 库应 用 系
账相 符 、 一票 相 符等 就 是参 照 完整 性 的表 现 , 账 如
统 中 , 保数 据 有 价 值 而 不 致 成 为 一 堆 毫 无 意 义 确 的数 据垃圾 , 护 存 储 在 数 据 库 中数 据 的逻 辑 一 维 致性 , 就是 数 据完 整 性 . 如果 数 据库 应 用 系统 中没 有确 保数据 完 整 性 的逻 辑 , 可 能 由于 数 据 库 中 则 数据 的可 靠性 降低 而 使用 户 失 去使 用 这些 数据 的 信心 . 数据 完 整性 是数 据 库 的一 个 特征 , 是 保证 也 数据 库 中 的数 据 准确 有 效 、 防止 错 误 、 实现 商 业规 则 的一 种 重要 机 制 . 照 完 整 性 是 企 业 数 据 库 中 参 普遍 存在 的数 据 约 束 关 系 , 财 务 上 要 求 的账 一 如
V0 . 6 N . 1 1 0 3 S o.O 2 e 20
文 章 编 号 :0 6 3 X 2 ))3 0 1 3 10 —77 ((2 0 —0 3 —0 X
参 照 完 整 性 的 实 现 方 法 分析
王 杰文 李赫 男 , , 汪凤麟 陶 滔 ,
(. 1南华 大学 现代教 育技术 中心 , 湖南 衡 阳 4 10 ;. 华大学 计算 机科学与技术学 院 , 20 12南 湖南 衡 阳 4 10 ) 20 1

要 : 照 完整性 的 实施 是 数据 库 应 用 系统设 计 的关键 之 一 . 多数 商 用 关 系数 据 参 大
库都提供 两种实施参照完整性 的方法. 声明外部关键字或定义触发器 . 文章重点分析
两种 方 法的 利弊 .

实验五 实体参照完整性以及索引的建立和使用

实验五 实体参照完整性以及索引的建立和使用

实验五指导5.1 实体完整性1)在数据库School中建立表Stu_Union,进行主键约束,在没有违反实体完整性的前提下插入并更新一条记录use Schoolcreate table Stu_Union(Sno char(8)not null unique,Sname char(8),Ssex char(1),Sage int,constraint PK_Stu_Union primary key(Sno))insert Stu_Union values('456','小二','M','22')update Stu_Union set Sno=''WHERE Sage='22'update Stu_Union set Sno='789'where Sname='小二'select*from Stu_Union2)演示违反实体完整性的插入操作use Schoolinsert Stu_Union values('789','小三','M','23')3)演示违反实体完整性的更新操作use Schoolupdate Stu_Union set Sno=NULL where Sno='789'4)演示事务的处理,包括事务的建立,处理以及出错时的事务回滚,演示事务处理和批处理的区别。

提示:SQL2005相关语句为BEGIN TRANROLLBACK TRANCOMMIT TRAN可以这样演示:新建一个包含两条语句的事务,使第一条成功而第二条失败,然后查看整个事务是否回滚。

重要提示:SQL默认只回滚出错的语句,要回滚整个事务,需要预先执行以下语句:SET XACT_ABORT ON事务的建立use Schoolset xact_abort onbegin transaction t1insert into Stu_Union values('001','张三','M','22')insert into Stu_Union values('002','李四','F','24')insert into Stu_Union values('003','李四','F','24')select*from Stu_Unioncommit transaction t1处理以及出错时的回滚use Schoolset xact_abort onbegin transaction t2insert into Stu_Union values('004','王五','M','23')select*from Stu_Unioninsert into Stu_Union values('789','钱六','F','21')commit transaction t2use Schoolselect*from Stu_Union5)通过建立Scholarship表,插入一些数据。

数据库表间的参照完整性_Visual FoxPro 程序设计_[共2页]

数据库表间的参照完整性_Visual FoxPro 程序设计_[共2页]

52 的“字段”选项卡中包含有字段有效性规则。

可以先选择要定义有效性的字段,然后分别输入规则、信息及默认值。

【例4-9】以“学生管理”数据库的学生表为例,设性别字段有效性规则为只允许输入“男”或“女”字符,当输入的不是要求内容时,提示输入错误,性别字段的默认值为“男”。

在“规则”框中输入:性别="男" OR 性别="女"。

在“信息”框中输入:"性别输入错误!"。

在“默认值”框中输入:"男"。

“规则”是逻辑表达式,“信息”是字符串表达式,“默认值”的类型由字段的类型确定。

4.5.2 数据库表间的永久关系自由表之间可以建立临时关系,数据库表之间可以建立永久关系,永久关系保存在数据库中,不必在每次使用时重新建立。

在Visual FoxPro中,可以使用索引在数据库中建立表间的永久关系。

1.建立数据库表间的永久关系可以在数据库设计器中,选择想要关联的索引名,然后把它拖到相关表的索引名上。

在创建永久关系时,作为主表的索引必须使用主索引或候选索引,否则无法建立永久关系。

2.删除数据库表间的永久关系可以在数据库设计器中,单击两表之间的关系连线,关系连线将变粗,表明已经选择了该关系,然后按Delete键,则可删除关系。

【例4-10】以“学生管理”数据库为例,建立“学生”表与“选课”表一对多的关系;“课程”表与“选课”表一对多的关系。

①为表建立索引。

②建立表间关系。

如图4-19所示。

图4-19 建立【例4-10】表间关系4.5.3 数据库表间的参照完整性所谓参照完整性,就是根据一系列规则来保持数据的一致性,保持已定义的表间关系。

如果。

关系模型的参照完整性规则

关系模型的参照完整性规则

关系模型的参照完整性规则
答: 关系模型的完整性规则是对关系的某种约束条件。

关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。

其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。

1) 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。

2) 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必
须为:
·或者取空值(F的每个属性值均为空值);
·或者等于S中某个元组的主码值。

3) 用户定义的完整性是针对某一具体关系数据库的约束条件。

它反映某一具体应用所涉及的数据必须满足的语义要求。

实验十 建立表之间的关系和实施参照完整性

实验十 建立表之间的关系和实施参照完整性

模块五创建和编辑数据表
实验十建立表之间的关系和实施参照完整性学号:1100110719 姓名:苏以文实验日期:2011.12.29
一、实验目的
1.掌握创建和修改Access2003数据表之间的关系的方法。

2.了解实施参照完整性的含义
二、实验内容及步骤
实验二部分:
一、在表之间如何建立关系,请描述建立关系的关键步骤(可截图说明)
答:关闭要建立表间关系的表,打开“显示表”对话框,选择建立表间关系的数据表,建立表间关系,设置完整性,保存建立的表间关系,编辑关系,显示建立关系后的主表和从表。

二、什么是“实施参照完整性”,如何设置
答:当主表中没有相关记录时,不能将记录添加到相关表中。

在“编辑关系”中选择“实施参照完整性”
三、级联更新和级联删除的作用是什么
答:级联更新使得主关键字段的值和关联表中相关字段的值保持同步更新。

级联删除使得主关键字段中相应的记录被删除时,会自动删除相关表中的对应记录。

四、请把你建立的表之间关系图粘贴到下方。

五、实验小结
答:通过这次试验,我学会了如何建立表间关系,而且了解到数据表之间建立关系之后,我们可以同时修改多张表,大大减少了我们的工作量,同时也可以让我们清晰的看到表与表之
间的关系。

数据完整性

数据完整性

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

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

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

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

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

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

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

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

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

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

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

关系模型的概念定义是什么

关系模型的概念定义是什么

关系模型的概念定义是什么关系模型是数据库管理系统中最经典、最常用的数据模型之一,它是基于数学集合论的一种数据组织和操作方式。

关系模型用于描述数据之间的关系,将数据组织成由二维表格(即关系)组成的数据库。

关系模型的概念定义包括以下几个方面:1. 数据表:关系模型中的基本单位是数据表,也称为关系。

一个数据表由若干行和若干列组成,每行代表一个实体,每列代表一个属性。

数据表中的每个元素称为一个数据项。

2. 元组和属性:数据表中的每一行称为一个元组,每一列称为一个属性。

元组是实体的具体实例,属性定义了实体的特征。

3. 主键:每个数据表都必须有一个主键,用来唯一标识每个元组。

主键可以是一个或多个属性的组合,用来确保每个元组在数据表中的唯一性。

4. 外键:外键用于建立表与表之间的关系,它是一个表的一个属性,引用了另一个表的主键。

外键建立了表与表之间的联系,可以用来进行数据的关联查询。

5. 实体完整性:关系模型要求每个实体在关系中都具有唯一的标识,这称为实体完整性约束。

实体的标识由主键来确定,主键的值不能为NULL,而且不能重复。

6. 参照完整性:参照完整性是关系模型中的一个重要约束条件,用来保证数据的完整性和一致性。

参照完整性要求每个外键的值必须等于另一个表的主键值,或者为NULL。

参照完整性可以防止数据的孤立和冗余。

7. 数据操作:关系模型提供了一组基本的操作来对数据进行增、删、改、查。

包括插入新的元组、删除已有的元组、修改元组的属性值以及查询元组的操作。

这些操作可以通过结构化查询语言(SQL)来实现。

8. 数据完整性:关系模型还要求数据必须满足事先定义的一些完整性约束。

例如,数据表中的某个属性要求非空、取值范围在一定范围内等。

这些完整性约束可以保证数据的一致性和正确性。

总之,关系模型是一种以二维表格的形式组织和操作数据的模型,通过定义实体和属性之间的关系,提供了一种结构化的方法来存储和处理数据。

关系模型的概念定义包括数据表、元组和属性、主键和外键、实体完整性、参照完整性、数据操作和数据完整性等内容。

数据库的完整性实验报告

数据库的完整性实验报告

数据库的完整性实验报告数据库的完整性实验报告引言:数据库的完整性是指数据库中存储的数据必须满足预定的一致性要求,包括实体完整性、域完整性、参照完整性和用户定义的完整性。

本实验旨在通过设计一个简单的数据库,并通过实际操作验证其完整性。

一、实验目的本实验的目的是通过设计和操作数据库,了解数据库的完整性概念,并掌握如何保证数据的完整性。

二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统上进行实验。

三、实验步骤1. 创建数据库首先,我们需要创建一个数据库来存储我们的数据。

在MySQL中,可以使用以下命令创建一个新的数据库:```CREATE DATABASE integrity;```2. 创建数据表接下来,我们需要创建一个数据表来存储我们的数据。

假设我们要创建一个学生信息表,包括学生的学号、姓名和年龄。

可以使用以下命令创建该表:```USE integrity;CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```3. 插入数据现在,我们可以向刚刚创建的数据表中插入一些数据。

例如,我们可以插入几个学生的信息:```INSERT INTO students (id, name, age) VALUES (1, '张三', 20);INSERT INTO students (id, name, age) VALUES (2, '李四', 22);INSERT INTO students (id, name, age) VALUES (3, '王五', 21);```4. 实体完整性实体完整性是指每个实体都必须具有一个唯一的标识符。

在我们的学生信息表中,学生的学号是唯一的标识符。

为了保证实体完整性,我们可以在创建表时使用PRIMARY KEY约束来定义学号为主键:```CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。

VF知识点总结-参照完整性

VF知识点总结-参照完整性

VF知识点总结--必备(2010-05-20 23:17:40)一、有效性规则和参照完整性1.有效性规则先选中要求设置的字段,(1)“规则”:逻辑型表达式即SQL格式表达式。

例:年龄是15-20:年龄>=15 and 年龄<=20(2)“信息”:字符型表达式,直接摘抄加“”(英文状态)(3)“默认值”:看选中的字段是什么类型2.参照完整性(1)判断一方(没有重复字段的表)和多方(有重复字段的表)(2)一方建主索引,多方建普通索引(3)由一方向多方扯一条线(4)清理数据库(数据库—清理数据库,如果遇到“文件正在使用暂不能发布pack命令,” 此时close all,再重新以独占方式打开数据库再进行一次清理)(5)右键编辑参照完整性(两个永久性联系须一一设置其参照完整性)二、SQL语句1.格式:格式一:Select [top]字段1/字段2…… from表1,表2…. where连接条件and(or)筛选条件{group by某一字段[haing count(字段)] } order by字段1 asc/desc,字段2 asc/desc…… into table表格式二:Select [top]字段1/字段2…… from表1 join表2 join表3…. on连接条件(返回来写) where筛选条件{group by某一字段[haing count(字段)] } order by字段1 asc/desc,字段2 asc/desc…… into table表⑴.“字段1/字段2……”,根据题目要求,搜索什么字段写什么字段,若其中某一字段在表中没有则认定为是起的新名字,在该字段前加as,之后向函数avg(),sum(),max(),min(),count()。

⑵.“group by某一字段[haing count(字段”为难点。

考虑用不用group by,首先在草稿纸上或脑海生成题目要求的表,选取一个个例填写分析是否用得到group by,按什么分组。

参照完整性

参照完整性

参照完整性
引用完整性指的是关系中数据的准确性和一致性。

在关系中,数据在两个或多个表之间链接。

这是通过让外键(在关联表中)引用主键值(在主表或父表中)来实现的。

因此,我们需要确保关系双方的数据保持完整。

因此,参照完整性要求每当使用外键值时,它必须引用父表中有效的现有主键。

例子
例如,如果我们删除主表中的第15行,我们需要确保任何相关表中没有值为15的外键。

如果没有关联的行,我们应该只删除主键。

否则,我们将以孤立的记录告终。

这里,相关表包含一个主表的主键字段(即
“CompanyId”字段)中不存在的外键值。

这导致了
“孤立记录”。

因此参照完整性将阻止用户:
•如果主表中没有关联的行,则将该行添加到相关表中。

•更改主表中的值将导致相关表中的孤立记录。

•如果有匹配的相关行,则从主表中删除这些行。

缺乏参照完整性的后果
数据库中缺乏参照完整性可能导致返回的数据不完整,通常没有错误指示。

这可能会导致记录在数据库中“丢失”,因为它们永远不会在查询或报告中返回。

还可能导致报告出现奇怪的结果(比如没有关联公司的产品)。

或者更糟的是,这可能会导致客户收不到他们购买的产品。

更糟糕的是,它可能会影响到生死攸关的情况,例如,医院的病人没有得到正确的治疗,或者救灾小组没有收到正确的材料或信息。

数据的完整性
引用完整性是数据完整性的一个子集,它与所有数据(关系数据或其他数据)的准确性和一致性有关。

维护数据完整性是使用数据库的一个关键部分。

参照完整性规则

参照完整性规则

参照完整性规则今天,我来谈一谈关于心理学方面的知识。

所谓的参照完整性规则,是指人的情绪、动机、欲望等都会受到外界因素和内部因素的影响。

而参照完整性规则的三要素是:强度,稳定性,力比多。

人之所以为人,就是他有灵魂,有自己的思想,有自己的主观意识。

同样,作为人的属性,也不可避免地会受到外界因素和内部因素的影响。

如果想控制自己的思想,首先必须考虑到这些因素对自己的影响。

例如,当我的成绩优秀时,我希望别人能够称赞我,如果我没有做出什么成绩,我就会担心别人怎么看待我。

这种担心和怀疑正是由于内部因素和外部因素的影响,这时候就需要用到参照完整性规则。

其实说白了,参照完整性规则就是人们在生活中处理问题或困难时的心理机制。

人们都是活在一个完整的世界中,但各个部分相互作用的过程使得每个部分不断扩张,最终形成一个整体,从而使得社会结构更加复杂。

参照完整性规则在现代社会,已经被广泛运用到社会活动中,人们在面对紧急事件或重大决策时,都习惯性地运用参照完整性规则。

它有助于我们解释行为,并根据某些特殊因素预测行为的发展趋势。

这也是为什么很多专家认为,一个人的发展变化并不是由基因决定的,更多是由外界因素和内部因素共同影响而造成的。

这也与小孩子学走路的原理差不多。

婴儿在一岁半之前,不会走路也不会爬,但他们却是靠内部因素的支撑站立起来的,所以在这个阶段只有适应环境,才能获得更好的发展。

因此,在我们人生的道路上,不管遇到什么样的困难,都需要用积极乐观的态度去解决,而不是悲观厌世,人生不如意十之八九,有时候觉得活得太累,是因为想得太多,身上背负了太多的压力,其实换个角度想想,很多事情根本就不值得我们浪费时间和精力去担忧,真的有那时间还不如多放松自己呢!随着时间的流逝,阅历的增长,参照完整性规则将会对我们的影响越来越大,因为我们正逐步接近成年,并逐渐摆脱父母的束缚,拥有自己独立的思想和意志。

因此,我们必须学会控制自己的思想,积极客观地看待自己和周围的世界,并用参照完整性规则来帮助我们在面对挫折和失败时做出理性的选择。

SQL Server 2000数据库中实现数据参照完整性的方法分析

SQL Server 2000数据库中实现数据参照完整性的方法分析

外键约束 、 触发器来保证数据的参照完整性。 关键词 S L evr00 数据完整性 参照完整性 外键约束 触发器 Q re 0 S 2
中图 分 类号 T 3 1 3 P 1. 2 1 文献 标 识 码 A 文章编号 1 13— 6 4 0 1 0 5 1
Th t f r nilne ryo ay i e Daa Re e e t t g i f aI t An lssi SQLSev r 0 0 Daa a e n re 0 t b s s 2
gvsa xm l t a a z o h Q e e 0 0 e srsrf e t neryo a ho g efri e i nea pe o n yehw teS L sr r2 0 nue e rn a itgi f t tru ht o g ky e l v e i l t da h en
一 首先创建用户数据库
商品销售
g o
dle货品表 et e we hr 品名称 = 蒙牛小利乐枕高钙牛奶 ’ e货 ’ 由于对货 品表进行修 改或删除记录的货品 “ 蒙牛小利乐枕 高钙牛奶” 已经被提货表所引用 , 即提货表 中存在“ 蒙牛小利乐
枕高钙牛奶” 的货 品记 录 , 外键 定义中的关键词 0 e t n - 1dle o c q e a tno p ae o c o 决 定对于货品表 中这样 的记 录是不允许 i nu dt n t ne ea

故上述两种操作不 能执行。 如果外键定 货品名称 vrhr4 )N TNU LP I R E 一 设置 进行修 改或删除操作的。 aca(0 O L R MA YK Y, 义中的关键词变成 o e t csae nu dtcsa e上述两个 ndl e acd p a cd , e o ea 主键 字 段 操作能够执行 , 只是提货表 中相关联的记 录将跟着一起 变化 , 即 库存量 i , n t 包含“ 牛小 利乐枕高钙牛奶 ” 蒙 的记录 的货 品名称都将变成 “ 蒙 单价 r l e , a

数据库完整性实验报告

数据库完整性实验报告

数据库完整性实验报告引言数据库完整性是数据库管理系统中的一个重要概念,用于确保数据库中数据的准确性、有效性和一致性。

本实验旨在通过设计和实现一系列完整性约束,来验证数据库完整性的实际应用。

实验目标本实验的目标是设计并实现以下几种完整性约束:1.实体完整性约束2.参照完整性约束3.用户自定义完整性约束实验环境本实验使用了以下工具和环境:•数据库管理系统:MySQL•编程语言:Python•集成开发环境:Jupyter Notebook实验步骤步骤一:数据库设计首先,我们需要设计一个符合实验需求的数据库。

我们选择一个简单的学生管理系统作为示例,包含以下两个实体:1.学生(Student):包含学生的学号、姓名和年龄。

2.课程(Course):包含课程的课程号、课程名和学分。

步骤二:实体完整性约束实体完整性约束用于保证每个实体在数据库中都有唯一的标识。

在本实验中,我们将为学生实体添加一个主键约束,保证每个学生的学号是唯一的。

CREATE TABLE Student (id INT PRIMARY KEY,name VARCHAR(50),age INT);步骤三:参照完整性约束参照完整性约束用于保证关系数据库中的引用一致性。

在本实验中,我们将为课程实体添加一个外键约束,引用学生实体的主键。

CREATE TABLE Course (id INT PRIMARY KEY,name VARCHAR(50),credits INT,student_id INT,FOREIGN KEY (student_id) REFERENCES Student(id));步骤四:用户自定义完整性约束用户自定义完整性约束是根据具体业务需求自定义的约束条件。

在本实验中,我们将为课程实体添加一个自定义约束,保证学分必须大于等于0。

ALTER TABLE CourseADD CONSTRAINT chk_credits CHECK (credits >=0);实验结果通过以上步骤,我们已经成功设计并实现了实体完整性约束、参照完整性约束和用户自定义完整性约束。

实验2.2 参照完整性

实验2.2 参照完整性
-6-
软件 C122 彭静 126226
系的两张表,规定一个教师可以授多门课,但是每个课程只能指定一个教师去 听课,所以要为两张表建立相互之间的参照关系。 实验代码
实验截图 实验代码
实验截图 实验代码
实验截图
-7-
软件 C122 彭静 126226
4.实验步骤: 实现参见数据库实验习题 2.2.sql 文 心得体会: 1、学习了参照完整性的相关内容,加深了对于这部分知识点的认识 5.习题 (1)使用 alter table 语句将 SC 表中的 on delete cascade 改为 on delete restrict,重新插入 SC 的数据,重复操作 实验步骤中的(4)和(5),观察结果, 分析原因。 数据库不允许删除 STUDENTS 表及 COURSE 表中对应元组 原因:由于 on delete restrict 的约束,数据库不允许引用任何关系存在对应 元组时进行删除操作 (2)使用 alter table 语句将 SC 表中的 on delete cascade 改为 on delete set NULL,重新插入 SC 的数据。 重复操作 2.2.3 实验步骤中的(4)和(5), 观察结果,分析原因。 数据库不允许删除 STUDENTS 表及 COURSE 表中对应元组 原因:约束 on delete set NULL 是将要删除的元组的外键置空值,如果 cno 及 sno 不是 SC 表的主键,删除操作可以完成,但由于主键不能取空值,所以删除 操作是不可以的 (3)创建一个班里的学生互助表,规定:包括学生编号、学生姓名、学生的帮助 对象,每个学生有且只有一个帮助对象,帮助对象也必须是班里的学生。6
实验截图
(5)在 Course 中删除数据,演示级联删除。 实验代码

第五章 数据完整性

第五章 数据完整性

RDBMS在实现参照完整性时: 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) –一般地,当对参照表和被参照表的操作违反 ON DELETE CASCADE 了参照完整性,系统选用默认策略,即拒绝执 ON UPDATE CASCADE, FOREIGN KEY (Cno) REFERENCES Course(Cno) 行。如果想让系统采用其它的策略则必须在创 ON DELETE ON ACTION 建表的时候显式说明。 ON UPDATE CASCADE,
–完ቤተ መጻሕፍቲ ባይዱ性:真实地反映现实世界
An Introduction to Database System
二、DBMS的完整性控制机制
1. 定义功能 一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。 2. 检查功能

检查用户发出的操作请求是否违背了完整性约束条件
例:银行数据库 中“借贷总金额应平 衡”的约束就应该是 延迟执行的约束
An Introduction to Database System
[例6] 建立部门表DEPT,要求部门名称Dname列取值唯一, 部门编号Deptno列为主码。
CREATE TABLE DEPT (Deptno NUMERIC(2) NOT NULL, Dname CHAR(9) UNIQUE, Location char(10), PRIMARY key (Deptno) );

简述参照完整性规则

简述参照完整性规则

简述参照完整性规则
参照完整性则是相关联的两个表之间的约束,具体的说,就是从表中每条记录外键的
值必须是主表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的
操作要影响到另一个表中的记录。

参照的完整性要求关系中不允许引用不存在的实体。

与实体完整性是关系模型必须满
足的完整性约束条件,目的是保证数据的一致性。

参照完整性又称引用完整性。

比如,如果在学生表和课外之间用学号创建关联,学生集是主表,课外从表中,那么,在向从表输出一条崭新记录时,系统必须检查崭新记录的学号与否在主表中已存有,如果
存有,则容许继续执行输出操作方式,否则婉拒输出,这就是参考完整性。

参照完整性还体现在对主表中的删除和修改操作,例如,如果删除主表中的一条记录,则从表中凡是外键的值与主表的主键值相同的记录也会被同时删除,将此称为级联删除;
如果修改主表中主关键字的值,则从表中相应记录的外键值也随之被修改,将此称为级联
删除。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
型”表 中的“读者类型ID” :
CREATE TABLE 读者
(读者号 char(6) PRIMARY KEY, 姓名 varchar(20), 性别 c har(2),
读者类型ID char(6), 类型名称varchar(16), FOREIGN KEY(读者类型ID) REFERENCES读者类型(读者类型ID) )
数据库
王伟 清华大学出版社
9781765982 数据库应用 郑智浩 电子工业出版社
9781766770 数据库原理 王丽娟 清华大学出版社
•借阅表中插入一条新记录 •借阅表中修改一^ ISBN号 •图书表中删除一条记录 •图书表中修改—ISBN号
外码
、 Borrow关系
Reader BorrowDate
ALTER TABLE 借阅 ADD CONSTRAINT FK_图书号 FOREIGN KEY(图书 号) REFERENCES图书(图书号)
4.2.3参照完整性检查和违约处理
食可能破坏参照完整性的情况及违约处理
主码4
(TSBN)
9781267845
Book关系
BookName Editor
Press
整性规则自动进行检查并进行违约处理。
可能破坏参照完整性乍■ 插入元组
违约处理 ,
拒绝 /
可能破坏参照完整性 ■■ 修改外码值 删除元组 ■降可能破坏参照完整性
拒绝 拒绝/级联删除/设置空值
修改主码值 ■降可能破坏参照完整性
拒绝/级联修改/设置空值
默认策略
4.2.3参照完整性检查和违约处理
Pl创建参照表时显式定义违约处理策略-示例
CREATE TABLE 借阅 (读者号char(6), 图书号 varchar(15), 借阅日期datetime, 还书日期datetime,
Database System
数据库系统概论
Introduction to Database Systems
主讲人:吴岩 河南理工大学
知 识
第四U!章数据库的完整性

实体完整性规则
2)参照完整性规则
(3 )用户定义的完整性规则
4.2参照完整性规则
参照完整性的含义
定义参照完整性
参照完整性检查和违约处理
4.2.2定义参照完整性 口
创建表时定义-语法格式
CREATE TABLE < 表名〉 (〈列名> < 数据类型〉,
•••
FOREIGN KEY(< 列名〉)REFERENCES 被参照表名 (< 列名〉)
4.2.2定义参照完整性
Pl创建表时定义-示例
读者(读者号,姓名,性别,读者类型ID,类型名称)
Primary Key(读者号,图书号),/*在表级定义实体完整性 Foreign key (读者号)References读者(读者号)/*在表级定义参照完整性
ON DELETE CASCADE /*当删除读者表中元组时,级联删除借阅表中相应元组
ON UPDATE CASCADE, /*当更新读者表中读者号时,级联更新借阅表中相应元组 Foreign key (图书号)References图书(图书号)
ON DELETE NO AC^ON /*当删除图书表中元组造成与借阅表不一致时,拒绝删除 ON UPDATE CASCADE /*当更新图书表中图书号时,级联更新借阅表中相应元组
•参照完整性规则要求外键属性取值为被参照 表中
某主码的取值,或者为空值。
•参照完整性规则可用Foreign Key定义。 •当执行增' 删、改等操作时,DBMS根据参照 完
9781267845 张晨
2018-3-2
9781267845 王明明 2018-3-3
9781765980 程丽
2018-4-12
9781766771 程丽
2018-4-12
9781766772 程丽
2018-4-13
4.2.3参照完整性检查和违约处理
口可能破坏参照完整性的情况及违约处理
被参照表(例如图书表) 参照表(例如借阅表)
4.2.2定义参照完整性
食 向表中添加约束-语法格式
ALTER TABLE < 表名〉 ADD CONSTRAINT< 约束名〉FOREIGN KEY(< 列 名〉) REFERENCES被参照表名(< 列名〉)
4.2.2定义参照完整性
四向表中添加约束-示例
图书(图书号,书名,主编,出版社,单价) 借阅(读者号,图书号,借阅日期,还书日期) 在已经创建的“借阅”表中添加名称为FK_图书号的参照完整性 约束:
4.2.1参照完整性的含义
食参照完整性规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主 码Ks相对应(R和S不一定是不同的关系),则对于R中每个元组在F上 的值必须:
•或者等于空值(F的每个属性值均为空值); •或者等于S中某个元组的主码值。
4.2.2定义参照完整性
1用FOREIGN KEY短语定义哪些列为外码 ___ 2用REFERENCES短语指明外码参照哪些表的主码 3可在创建表时定义约束或向表中添加约束
相关文档
最新文档