(数据库系统概论|王珊)第二章关系数据库-第二节、第三节:关系操作和关系完整性
文章目录
- 一:关系操作
- (1)基本的关系操作
- (2)关系数据语言的分类
- 二:关系完整性约束
- (1)实体完整性
- (2)参照完整性
- A:参照关系
- B:外码
- C:参照完整性规则
- (3)用户自定义完整性
一:关系操作
(1)基本的关系操作
关系模型常用关系操作如下。
关系操作的特点是集合操作方式,也即操作的对象和结果都是集合。也称为一次一集合(set-at-a-time)的方式
- 非关系数据模型的数据操作方式称为一次一记录(record-at-a-time)
(2)关系数据语言的分类
关系数据语言可分为三类,如下
下面是SQL的了解性内容,可不看(下一章将会重点介绍)
特别地,SQL语言是一种高度非过程化的语言,用户不必请求数据库管理员为其建立特殊的存取路径,存取路径的选择由关系数据库管理系统的优化机制来完成。例如,在一个存储有几百万条记录的关系中查找符合条件的某一个或某一些记录,从原理上讲可以有多种查找方法。例如,可以顺序扫描这个关系,也可以通过某一一种索引来查找。不同的查找路径(或者称为存取路径)的效率是不同的,有的完成某一个
查询可能很快,有的可能极慢。关系数据库管理系统中研究和开发了查询优化方法,系统可以自动选择较优的存取路径,提高查询效率
二:关系完整性约束
关系完整性规则是对关系的某种约束条件,这些约束条件实际上是现实世界的要求,例如性别只能有男、女两种取值
关系模型中有如下三类完整性约束
- 实体完整性(entity integrity)
- 参照完整性(referential integrity)
- 用户自定义完整性(user-defined integrity)
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性
(1)实体完整性
实体完整性:若属性A是基本关系RRR的主属性,则属性A不能取空值
- 例如“选修(学号,课程号,成绩)”关系中,若(学号,课程号)为主码,则学号和课程号都不能取空值
(2)参照完整性
A:参照关系
(注意在关系表示中,下划线表示主码)
【例1】如下两个关系中,学生关系引用了专业关系的主码“专业号”,也就是说,学生关系中的某个属性的取值需要参照专业关系的属性取值
【例2】如下三个关系中,选修关系引用了学生关系的主码“学号”和课程关系的主码“课程号”,也就是说,选修关系中某些属性的取值需要参照其他关系的属性取值
【例3】还有,同一关系内部也可能存在引用关系。比如在学生(学号,姓名,性别,专业号,年龄,班长)关系中,“学号”属性是主码,“班长”属性表示该学生所在班级的班长的学号,它引用了本关系“学号”属性,即“班长”必须是确实存在的学生的学号
B:外码
外码:设FFF是基本关系RRR的一个或一组属性,但不是关系RRR的码【例如这里FFF是学生关系的专业号】,KsK_{s}Ks是基本关系SSS的主码【例如这里KsK_{s}Ks是专业关系的主码】。若FFF和KsK_{s}Ks相对应,则称FFF是RRR的外码(foreign key)【则称专业号是学生关系的外码】,并称基本关系RRR为参照关系(referencing relation)【这里学生关系就是参照关系】,基本关系S为被参照关系(referenced relation)【这里专业关系就是被参照关系】。关系RRR和SSS不一定是不同的关系
- 注意:外码并不一定要与相应的主码同名,如上面第三个例子中,学生关系的主码为学号,外码为班长。不过,在实际应用中为了便于识别,当外码与相应的主码属于不同关系时,往往给它们取相同的名字。
上面三个例子的参照关系表示如下
C:参照完整性规则
参照完整性:若属性或属性组FFF是基本关系RRR的外码,它与基本SSS的主码相对应(关系RRR和SSS不一定是不同的关系),则对于RRR中每个元组在FFF上的值必须
- 要么取空值(此时FFF的每个属性值均为空值)
- 要么等于SSS中某个元组的主码值
因此对于【例1】,学生关系中每个元组的专业号只能取下面两类值
- 空值:表示该学生尚未分配专业
- 非空值(且该值必须是专业关系中某个元组的专业号值):表示该学生不能分配到一个不存在的专业中
而对于【例2】,按照道理来说“学号”和“课程号”也可以取两类值,但是“学号”和“课程号”它作为的是选修关系的主码,所以如果取空值的话将会违背实体完整性规则
对于【例3】,RRR和SSS是同一个关系,“班长”可以取两类值
- 空值:该班还没有选出班长
- 非空值:班长必须是班里的同学
(3)用户自定义完整性
用户自定义完整性1针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,例如某个属性必须取唯一值,某个非主属性不能取空值等等
(数据库系统概论|王珊)第二章关系数据库-第二节、第三节:关系操作和关系完整性相关推荐
- (数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义
文章目录 一:关系 (1)域 (2)笛卡尔积 (3)关系 A:基本概述 B:码相关概念 C:关系的三种类型 二:关系模式 三:关系数据库 (1)基本概念 (2)关系数据库的型与值 前面说过,数据模型由 ...
- 【梳理】数据库系统概论 第2章 关系数据库 2.1 关系数据结构及其形式化定义 2.2 关系操作 2.3 关系的完整性
教材:王珊 萨师煊 编著 数据库系统概论(第5版) 高等教育出版社 注:文档高清截图在后 第2章 关系数据库 2.1 关系数据结构及其形式化定义 1.关系数据库系统是支持关系模型的数据库系统.关系模型 ...
- 【数据库系统】数据库系统概论====第六章 关系数据库理论
第六章 关系数据库理论 文章目录 第六章 关系数据库理论 6.1问题的提出 6.2规范化 6.2.1函数依赖 6.2.2码 6.2.3范式 6.2.4 2NF 6.2.5 3NF 6.2.6 BCNF ...
- 数据库系统概论-第三章 关系数据库标准语言 SQL
概述 SQL的特点 综合统一 SQL集数据定义语言,数据操纵语言,数据控制语言的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,可以执行以下一系列要求: 定义和修改.删除 关系模式 ...
- (数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论
文章目录 一:概念回顾:关系模式 二:数据依赖 三:一个例子:不遵循关系数据理论导致的问题 一句话,研究关系数据库理论就是为了设计出合适的关系模式,也即合适.高效的表 一:概念回顾:关系模式 相关文章 ...
- 数据库笔记整理--基于《数据库系统概论》第五版王珊一书|第二章--关系数据库知识整理和课后习题答案
该系列的博客都是基于<数据库系统概论>第五版王珊一书 前提: 因为最近要升学的原因,再加上重温数据库部分内容,所以整理一份比较详细且重点的笔记.适合有考研升学需求的人收藏 -------- ...
- (数据库系统概论|王珊)第三章关系数据库标准语言SQL-第四节:数据查询
文章目录 ★★★★★SELECT语句格式★★★★★ 一:单表查询(查询时只涉及一张表) (1)选择表中的若干列 A:查询指定列 B:查询全部列 C:查询经过计算的值 ①:算数表达式 ②:字符串常量及函 ...
- (数据库系统概论|王珊)第三章关系数据库标准语言SQL:习题
文章目录 名词解释 简答题 应用题 名词解释 视图:视图是一个虚表,其本质就是一条SELECT语句,而查询结果被赋予了一个名字,也即视图名字.或者说视图本身不包含任何数据,它只包含映射到基表的一个查询 ...
- (数据库系统概论|王珊)第七章数据库设计-第一节:数据库设计概述
注意:此部分内容和软件工程的知识点重合较多,更多请点击[免费分享]软件工程核心知识点 本章较分散,各节导航如下 (数据库系统概论|王珊)第七章数据库设计-第二节:需求分析 (数据库系统概论|王珊)第七 ...
最新文章
- JavaScript小记
- 《AI系统周刊》第5期:Cerebras发布可运行120万亿参数AI模型的CS-2芯片
- 消除数组中重复元素的方法
- 重庆大学 计算机组成原理,重庆大学计算机组成原理集(含部分)解决方案.doc
- pptx版式验证代码
- Centos 7.x 内核升级
- JSP-BUG-The type java.xx.xx cannot be resolved
- 【Flink】JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy
- SEO如何快速提高网站排名?
- 关于网站购物车的实现的思考
- 互联网高可用架构技术实践
- 无法删除的文件夹怎么办?如何删除删不掉的文件夹
- Python名词解释
- [1125]AES加密报错:Illegal key size or default parameters
- 前端 html自动生成,前端工程化-自动生成页面
- 程序员如何从零开始运营好一个公众号挣点零花钱之公众号定位
- linux系统上安装微信(Ubuntu/Debian 微信安装)
- IDEA导入插件依赖后Maven报错:java.lang.RuntimeException: Cannot reconnect.
- 国内疫情统计及预测分析系统
- python 爬虫下载网易歌单歌曲
热门文章
- 对老赖 绝不要忍 !一位美女程序媛的讨薪经历...
- harmonyos不用jvm,关于harmonyos:DevEco-Studio-20为跨端应用高效开发设计
- mysql sql%rowcount_sql%rowcount 返回影响行数
- 过了这么多年,才发现写的最多的代码竟然是...
- 别再吼孩子骂孩子了,他们的脑子真的会受伤变形
- 学生PHP校园超市网站制作 学生PHP网页毕设源码 学生动态数据库网站作品 PHP电子商务商城购物网站
- 1.4编程基础之逻辑表达式与条件分支 08 判断一个数能否同时被3和5整除
- 如何实现轮播图的内容的多少随div的大小动态变化_小程序学习日志8:swiper滑动轮播组件(轮播图)(上)...
- Qt文档阅读笔记-数据驱动测试
- QML工作笔记-NumberAnimation、RotationAnimation、Timer综合使用