关系的完整性-参照完整性
(首先理解弄透实体完整性,实体完整性规则是最好理解的,再来理解参照完整性就不难了)
2.参照完整性
现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的,这样就自然存在着关系与关系间的引用。
定义:设F是基本关系的一个或一组属性,但不是关系R的码(如果某张表多个属性作为主码,那么这里的主码不能理解为单个主属性,这也是码和主属性的区别),Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系和R和S不一定是不同的关系。
2.1 一对多关系的理解
学生实体和专业实体用下面关系表示:
学生(学号,姓名,性别,专业号,年龄)
(Sno,Sname,Ssex,Smajor,Sage)
专业 (专业号,专业名)
(Major,Mname)
(黑体加下划线的属性为主码)
- 这两个关系之间存在着属性的引用,及学生关系引用了专业关系的主码“专业号”。显然这个“专业号”必须是确实存在的专业号,打个比方,学校现在只开了计算机,政治,数学,
专业号 | 专业名 |
001 | 计算机 |
002 | 政治 |
003 | 数学 |
我总不可能添加一个学生是小偷专业的吧!!!所以这也是为什么参照完整性规则是对多个关系(关系可以理解为实体或关系,实体或关系可以理解为一张表,也就是多张表,不懂可以翻阅上篇博客)的约束 ,所以现在我每在学生表添加一个学生都要参照专业表。
回到定义,设F是基本关系的一个或一组属性,(这里的F可以指学生表专业号),但不是关系R(这里指学生表)的码,Ks(专业表专业号)是基本关系S(专业表)的主码,如果F(学生表中的专业号)与Ks(专业表专业号)相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系。关系R和S不一定是不同关系(这句话可以忽略,影响现阶段的理解)。
有了上面的定义与对照的关系表示可以弄懂
学生表中红字专业号为外码,基本关系R(学生表)为参照关系,基本关系S为被参照关系。
所以当你设置学生表中的专业号为外码 (前提是已经创建专业表ZMajor,实体完整性不用我多说吧,顺序不能弄反)
CREATE TABLE Student
( Sno CHAR(9),
Sname CHAR(4),
Ssex CHAR(2),
Smajor CHAR(9),
Sage SMALLINT,
PRIMARY KEY(Sno),/*这里定义了实体完整性,Sno不能取空值,参照上一篇博客*/
FOREIGN KEY(Smajor) REFERENCES ZMajor(Major)/*定义了参照完整性,学生表专业号引用专业表专业号*/
ON DELETE CASCADE /*当删除ZMajor表中的某个专业的时候,比如学校取消了某个专业,级联删除这个专业的所有学生
当然,如果你正在学计算机,学校如果取消计算机专业,你的信息(学生表)也会进行级联删除
所以一般学校等你们毕业了,计算机专业不招人了也没有人了,学校再来取消这个专业,所以这个 级联删除不是很常见。毕竟是贴近现实世界,大学取消某个专业*/
ON UPDATE CASCADE /*理解了上面的注释话,这个就好理解了,当更新ZMajor表中某个专业信息,比如你们校长疯了,计算机专 业全部取搬砖专业,所以你们所有计算机专业的学生专业号001-计算机,统一是001-搬砖,其实学生表中001并没有改变,但是当查询到你的时候,比如连接查询,嘿嘿,那你就是搬砖专业*/
)
级联操作只是参照完整性被破坏时采取策略的一种,默认策略为NO ACTION(拒绝执行),有了上面的理解基础,不难理解当INSERT插入学生表中数据,你加了一个不存在的专业号,这就就是为上面数据库就会拒绝执行。查询的话不改变数据库中的原则。参照完整性被规则破坏一般是被参照表中(例子中的专业表)的内容被修改,破坏时的操作均写在参照表的定义中。
以上部分时一对多的关系,如果有需要的话私我,我可以继续更新多对多参照完整性。
关系的完整性-参照完整性相关推荐
- 数据库(笔记)——候选码、主码、外码以及关系的完整性
关系的码与关系的完整性 关系的码 1. 候选码 2. 主码 3. 外码 关系的完整性 总结 关系的码 1. 候选码 候选码是能够唯一标识关系中某一个元组的一个属性或属性集,也叫候选键 如: 学生关系中 ...
- 第二章 关系数据结构及关系的完整性习题解析
1.某关系R的外键是指 A.(正确答案)解析:其它关系的候选键,可以是R中的主属性或非主属性 B.(错误答案)解析:外键是另一个关系的主键 C.(错误答案)解析:其它关系的候选键,可以是R中的主属性或 ...
- 关系的候选码、主码、外码以及关系的完整性
关系的候选码.主码.外码 候选码 定义:能惟一标识关系中元组的一个属性或属性集,称为候选码(Candidate Key) "学生关系"中的学号能惟一标识每一个学生 "选课 ...
- 关系、关系模式、关系数据库的区别和概念以及关系的完整性约束条件
以下内容是本人利用网络资料以及课堂学习总结的学习笔记,如有错误欢迎评论区更正. 前言 这是一组关系实例 域(Domain):一组具有相同数据类型的值的集合(如:整数.实数.具有某一范围的一个整数... ...
- 【梳理】数据库系统概论 第2章 关系数据库 2.1 关系数据结构及其形式化定义 2.2 关系操作 2.3 关系的完整性
教材:王珊 萨师煊 编著 数据库系统概论(第5版) 高等教育出版社 注:文档高清截图在后 第2章 关系数据库 2.1 关系数据结构及其形式化定义 1.关系数据库系统是支持关系模型的数据库系统.关系模型 ...
- 关系的完整性-实体完整性
关系模型的完整性规则是对关系的某种约束条件. 顾名思义,关系的完整性规则是对关系的约束,这些约束条件实际上是现实世界的要求. 关系模型中有三类完整性的约束:实体完整性,参照完整性,用户定义的完整性. ...
- 数据库原理和应用(6)—— 候选码、主码和外码,关系的完整性、关系代数、关系的演算
一.候选码.主码和外码 1. 候选码(Candidate Key) 定义:能唯一标识关系中元组的一个属性或属性集,称为候选码. 性质:具有唯一性和最小性. 2. 关系的主码和外码 主码 定义:从多个候 ...
- 简述关系数据库的数据完整性规则_什么是数据库关系的完整性?
关系模型的完整性规则是对关系的某种约束条件.关系模型中有三类完整性约束:实体完整性规则,用户定义的完整性规则,和参照完整性规则. 1. 实体完整性规则 关系的主键可以表示关系中的每条记录,二关系的实体 ...
- mysql实体完整性实现方法_mysql数据库 --数据完整性---实体完整性-域完整性-参照完整性...
一.数据完整性 数据完整性是为了保证插入到数据库中的数据是正确的,防止用户可能的错误输入. 数据完整性分为实体完整性.域完整性.参照完整性. 2.1实体(行)完整性 (实体完整性中的实体指的是表中的行 ...
最新文章
- 独家 | 2018年Analytics Vidhya上最受欢迎的15篇数据科学和机器学习文章
- SAP WM Storage Type Search配置里的Storage Class WPC标记
- STM32外部中断与各通道对应关系
- MAC Android Studio| Error: The android gradle plugin version 3.0.0-alpha1 is too old
- 牛客网(剑指offer) 第十二题 数值的整数次方
- 一个有趣的关于flash和多种设备交互等技术应用的演示网站
- 【SpringBoot 2】(五)自动配置简析源码 开发中小技巧
- MessagePack Jackson 数据大小
- apt-get install php5-redis,Ubuntu14-04安装redis和php5-redis扩展
- LeetCode 77. Combinations
- EFRCN对应频段号
- Python安装和环境配置
- QT Designer的安装和使用
- android学习笔记-udacity/Sunshine-Version-2出错
- 转行做程序员,月薪过万需要多久?
- 实时数据库历史数据容量的计算方法
- 计算机声声慢音乐,有没有适合声声慢的背景音乐
- leetcode807. 保持城市天际线(java)
- 网络攻防实验:defcon2015 r0pbab
- 网站搜索功能lucene