参照完整性
参照完整性

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,
参照完整性的实现方法分析

在 管理 大量 、 久 、 持 一致 数 据 的数 据 库应 用 系
账相 符 、 一票 相 符等 就 是参 照 完整 性 的表 现 , 账 如
统 中 , 保数 据 有 价 值 而 不 致 成 为 一 堆 毫 无 意 义 确 的数 据垃圾 , 护 存 储 在 数 据 库 中数 据 的逻 辑 一 维 致性 , 就是 数 据完 整 性 . 如果 数 据库 应 用 系统 中没 有确 保数据 完 整 性 的逻 辑 , 可 能 由于 数 据 库 中 则 数据 的可 靠性 降低 而 使用 户 失 去使 用 这些 数据 的 信心 . 数据 完 整性 是数 据 库 的一 个 特征 , 是 保证 也 数据 库 中 的数 据 准确 有 效 、 防止 错 误 、 实现 商 业规 则 的一 种 重要 机 制 . 照 完 整 性 是 企 业 数 据 库 中 参 普遍 存在 的数 据 约 束 关 系 , 财 务 上 要 求 的账 一 如
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
摘
要 : 照 完整性 的 实施 是 数据 库 应 用 系统设 计 的关键 之 一 . 多数 商 用 关 系数 据 参 大
库都提供 两种实施参照完整性 的方法. 声明外部关键字或定义触发器 . 文章重点分析
两种 方 法的 利弊 .
数据库表间的参照完整性_Visual FoxPro 程序设计_[共2页]
![数据库表间的参照完整性_Visual FoxPro 程序设计_[共2页]](https://img.taocdn.com/s3/m/9713d39de45c3b3566ec8b56.png)
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) 用户定义的完整性是针对某一具体关系数据库的约束条件。
它反映某一具体应用所涉及的数据必须满足的语义要求。
数据完整性

3.5 数据完整性在数据库中数据完整性是指保证数据正确的特性,一般包括实体完整性、域完整性、参照完整性。
一、实体完整性是保证表中记录唯一的特性。
即在一个表中,不能有重复的纪录。
候选关键字:如果一个字段的值或几个字段的值能够唯一标识表中的一条记录,这样的字段称为侯选关键字。
主关键字:在一个表中可能会有几个具有这种特性的字段或者字段的组合,这时从中选择一个作为主关键字。
在VFP中将主关键字称做主索引,将侯选关键字称为侯选索引。
实现方法:在VFP中利用主关键字(主索引)或候选关键字(候选索引)来保证表中记录的惟一性。
例1. 打开数据库“成绩管理”,为学生表中的“学号”字段建立主索引(升序)。
二、域完整性1.域:列的取值的范围(EG:数学中的定义域)域完整性:列的取值范围合理性我们以前在创建表的时候指定不同的数据类型和宽度来限制字段的取值类型和取值范围,但这些还远远不够。
我们需要进一步对列里能输入什么样的数据严格要求。
2.实现域完整性的方法:设置列的有效性规则,设置列的默认值⑴设置列的有效性规则例2. 设置“成绩管理”数据库中“学生”表中年龄字段的有效性规则:要求学生表中的年龄必须在15-22之间,否则就认为输入无效!并提示“年龄只能在15-22岁之间!”例3. 设置“学生”表中系部字段的有效性规则:要求系部列的取值必须是四个系之一,如果输入其他值就认为输入无效!并提示“该系部名不存在!”例4.设置“成绩”表中成绩的有效性规则为:成绩只能在0-100分之间,如果用户输入错误,则提示“成绩不在范围内!”⑵为列设置默认值例5.对“学籍”表进行修改,设置“入学日期”的默认值为2009-08-26,然后打开表,输入一条新记录,观察现象例6. 对“学生”表进行修改,设置“系部”列的默认值为基础部,然后打开表,使用Append命令输入一条新记录,观察现象三、参照完整性1.思考:⑴如果同学们在填学生表的时候将自己的班级名称写错了, 写成了一个学校中根本不存在的班级, 这样的结果肯定是错误的。
第5章数据库完整性

4. 修改被参照关系中主码的问题
两种策略 不允许修改主码 允许修改主码 违约操作 要修改被参照关系中某些元组的主码值,而 修改被参照关系中某些元组的主码值 中某些元组的主码值, 参照关系中有些元组的外码值正好等于被参 照关系要修改的主码值,如修改Student学号; 照关系要修改的主码值,如修改 学号; 学号
受限插入:系统将拒绝向 关系插入 关系插入( 受限插入:系统将拒绝向SC关系插入(99001, , 1,90)元组. , )元组. 递归插入:系统将首先向 递归插入:系统将首先向Student关系插入 关系插入 Sno=99001的元组,然后向 关系插入 的元组, 的元组 然后向SC关系插入 (99001,1,90)元组. , , )元组.
级联修改 修改被参照关系中主码值同时, 修改被参照关系中主码值同时,用相同的方法修改 参照关系中相应的外码值; 参照关系中相应的外码值; 受限修改 拒绝此修改操作. 拒绝此修改操作.只当参照关系中没有任何元组的 外码值等于被参照关系中某个元组的主码值时, 外码值等于被参照关系中某个元组的主码值时,这 个元组的主码值才能被修改; 个元组的主码值才能被修改; 置空值修改 修改被参照关系中主码值, 修改被参照关系中主码值,同时将参照关系中相应 的外码值置为空值; 的外码值置为空值;
实体完整性
表中的Sno, Cno定义为码 例:将SC表中的 表中的 定义为码
CREATE TABLE SC ( Sno CHAR(7) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), );
实体完整性
实体完整性检查和违约处理
3.在参照关系中插入元组时的问题 在参照关系中插入元组时的问题
数据完整性培训资料

17
❖ 对字段的输入输出格式、默认数值、显示标题、 字段注释以及表文件长名、数据表的注释进行 设置
❖ 设置单字段的数据输入规则,控制和检查输入 到该字段中的数据是否满足指定的要求;称为 “字段级”有效性规则
❖ 设置“记录级”规则,控制和检验所输入的整 条记录是否符合要求;一般包含和涉及两个或 两个以上字段;又称为多字段有效性规则
❖ 来自保留行表的未匹配行会被保留,而那些 来自替换 NULL 的表中的行会由 NULL 替换。
10
❖ 在DEPTNO列上,Project 右连接 Department (Right join)
11
❖ 全外连接返回那些存在于右表但不存在于左 表的行,加上那些存在于左表但不存在于右 表的行,还有内连接的行。
❖ 在VFP中,参照完整性可以保证:
当父表中没有关联记录时,记录不得添加到子表 中
当改变父表的值而导致子表中出现孤立记录时, 父表的值不能被改变
当父表记录在子表中有匹配记录时,该父表记录 不能被删除
27
❖ 在VFP中,建立参照完整性必须先建立表之间的联系 ❖ 永久关系是在数据库中建立并保存在数据库中的数据表之
间的永久关系;不经删除,将永远存在 ❖ 永久关系只能通过“数据库设计器”进行设置、编辑和删
除 ❖ 建立永久关系的数据表之间有父表和子表的区别 ❖ 关联其它表的称为“父表”;被关联的表称为“子表”
❖ 建立永久关系前提条件:
数据表必须有意义相同的“公共字段” 事先均以该“公共字段”作为索引关键字分别建立索 28
在项目管理器中打开表,选中某一字段后就可以 在窗口底部的“说明”栏中显示注释信息。
23
❖ 设置“约束”性规则的目的是保证数据输入的有 效性和正确性;减少数据输入错误
VFP知识点总结(考试必备)

一、有效性规则和参照完整性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, 字段2asc/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,按什么分组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
B、R(A,B,C,D) 、 D、R(A,B) 、
关系的完整性
实体完整性
关系的主码中的属性值不能为空值 空值:不知道或无意义 空值: 意义:关系对应到现实世界中的实体集, 意义:关系对应到现实世界中的实体集,元组 对应到实体,实体是相互可区分的, 对应到实体,实体是相互可区分的,通过主码 来唯一标识,若主码为空, 来唯一标识,若主码为空,则出现不可标识的 实体, 实体,这是不容许的 – 如学生表中学号取空值则意味着该学生不存在 – – –1Biblioteka 参照完整性参照完整性
– 如果关系 2的外部码 k,与关系 1的主码 k相 如果关系R 的外部码F ,与关系R 的主码P 对应, 中的每一个元组的F 值或者等于 对应,则R2中的每一个元组的 k值或者等于R1 中某个元组的P 中某个元组的 k 值,或者为空值 – R2为参照关系, R1为被参照关系或目标关系 为参照关系, – 意义:如果关系R2的某个元组t2参照了关系R1 意义:如果关系 的某个元组 参照了关系 的某个元组t 的某个元组 1,则t1必须存在 – 例关系“学生”在“专业号”上的取值有两种 例关系“学生” 专业号” 可能
系统支持
– 实体完整性和参照完整性由系统自动支持 – 系统应提供定义和检验用户定义的完整性机制
3
完整性示例
供应商关系S(主码是“供应商号” 供应商关系S(主码是“供应商号”) S(主码是
供应商号 B01 S10 T20 Z01
供应商名 红星 宇宙 黎明 立新
所在城市 北京 上海 天津 重庆
4
零件关系P(主码是“零件号” 外码是“ 零件关系P(主码是“零件号”,外码是“供应商号 P(主码是 今要向关系 P 中插入新 ”) 行 , 新行的值分别列出如 零件号 颜色 供应商号 哪些行能够插入? 下。哪些行能够插入? 010 B01 红 037’ A . (‘037 , ‘ 绿 ’ , 037 null) 312 S10 白 B.(null,‘黄’, (null, 201 T20 蓝 T20’) ‘T20 ) C.(‘201 ,‘红’, 201’, 201 T20’) ‘T20 )
本章习题
关系模型中,一个关键字是 关系模型中,一个关键字是________
要 点
– A、可由多个任意属性组成 、 – B、至多由一个属性组成 、 – C、可由一个或多个其值能唯一标识该关系模 、 式中任何元组的属性组成 – D、以上都不是 、
设有属性A, , , , 设有属性 ,B,C,D,以下表示中不是关 系的是________ 系的是
• 空值,表示该学生尚未分到任何专业中 空值, • 若非空值,则必须是“专业”关系中某个元组的专 若非空值,则必须是“专业” 业号值, 业号值,表示该学生不可能分到一个不存在的专业 中
R1 Pk
R2
Fk
2
用户自定义完整性
用户定义的完整性
– 用户针对具体的应用环境定义的完整性约束条 这些约束都由关系模型处理, 件,这些约束都由关系模型处理,与应用程序 无关 – 如“学号”属性要求是8位数字的字符串, 位数字的字符串, 学号”属性要求是 位数字的字符串 性别”属性要求取值为“ “性别”属性要求取值为“男”或“女”