数据管理基础-ch08-10
ch 08 关系、关系模式和关系数据库
域(Domain)
笛卡尔积
笛卡尔积 1
笛卡尔积 2
笛卡尔积 3
笛卡尔积 4
例如,给出3个域:
- D1=导师集合SUPERVISOR={张清玫,刘逸}
- D2=专业集合SPECIALITY={计算机专业,信息专业}
- D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
D1,D2,D3的笛卡尔积(其基数为2×2×3=12)为
- D1×D2×D3={ (张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨), (张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨), (刘逸,计算机专业,王敏),(刘逸,信息专业,李勇), (刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }
笛卡尔积 5
关系
关系 1
关系 2
- 关系的表示
- 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域
- 属性
- 关系中不同列可以对应相同的域
- 为了加以区分,必须对每列起一个名字,称为属性(Attribute)
- n目关系必有n个属性
关系 3
- 码
- 候选码(Candidate key)
- 若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码
- 简单的情况:候选码只包含一个属性
- 最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)
- 主码
- 若一个关系有多个候选码,则选定其中一个为主码(Primary key)
- 主属性
- 候选码的诸属性称为主属性(Prime attribute)
- 不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)
- 候选码(Candidate key)
关系 4
关系的类别
- 基本关系(基本表或基表)
- 实际存在的表,是实际存储数据的逻辑表示
- 查询表
- 查询结果对应的表
- 视图表
- 由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
基本关系的性质
- 列是同质的(Homogeneous)
- 每一列中的分量是同一类型的数据,来自同一个域
- 不同的列可出自同一个域
- 其中的每一列称为一个属性
- 不同的属性要给予不同的属性名
- 列的顺序无所谓
- 列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的顺序无所谓
- 行的次序可以任意交换
- 分量必须取原子值
关系模式
关系模式 1
- 关系模式(Relation Schema)是型,关系是值
- 关系模式是对关系的描述
- 元组集合的结构
- 属性构成
- 属性来自的域
- 属性与域之间的映象关系
- 完整性约束条件
- 元组集合的结构
关系模式 2
关系模式与关系
- 关系模式
- 对关系的描述
- 静态的、稳定的
- 关系
- 关系模式在某一时刻的状态或内容
- 动态的、随时间不断变化的
- 关系模式和关系往往笼统称为关系
- 通过上下文加以区别
关系数据库
- 关系数据库
- 在一个给定的应用领域中,所有关系的集合构成一个关系数据库
- 关系数据库的型与值
- 关系数据库的型: 关系数据库模式,是对关系数据库的描述
- 关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库
ch 09 关系的完整性
关系的三类完整性约束
- 实体完整性和参照完整性
- 关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
- 用户定义的完整性
- 应用领域需要遵循的约束条件,体现了具体领域中的语义约束
实体完整性
实体完整性 1
- 实体完整性规则(Entity Integrity)
- 若属性A是基本关系R的主属性,则属性A不能取空值
- 空值就是“不知道”或“不存在”或“无意义”的值
- 例:
- 选修(学号,课程号,成绩)
- “学号、课程号”为主码
- “学号”和“课程号”两个属性都不能取空值
实体完整性 2
- 实体完整性规则的说明
- 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
- 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
- 关系模型中以主码作为唯一性标识。
- 主码中的属性即主属性不能取空值。
- 主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第2点相矛盾,因此这个规则称为实体完整性
关系间的引用
关系间的引用 1
关系间的引用 2
外码
外码 1
外码 2
- 例1中,学生关系的“专业号”与专业关系的主码“专业号”相对应
- “专业号”属性是学生关系的外码
- 专业关系是被参照关系,学生关系为参照关系
外码 3
- 例2中,选修关系的“学号” 与学生关系的主码“学号”相对应,选修关系的“课程号”与课程关系的主码“课程号”相对应
- “学号”和“课程号”是选修关系的外码
- 学生关系和课程关系均为被参照关系
- 选修关系为参照关系
外码 4
- 例3中,“班长”与本身的主码“学号”相对应
- “班长”是外码
- 学生关系既是参照关系也是被参照关系
参照完整性规则
参照完整性规则 1
参照完整性规则 2
- 例1中,学生关系中每个元组的“专业号”属性只取两类值:
- 空值,表示尚未给该学生分配专业
- 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业
参照完整性规则 3
- 例2中,选修(学号,课程号,成绩)
- “学号”和“课程号”可能的取值 :
- 选修关系中的主属性,不能取空值
- 只能取相应被参照关系中已经存在的主码值
参照完整性规则 4
- 例3中,学生(学号,姓名,性别,专业号,年龄,班长)
- “班长”属性值可以取两类值:
- 空值,表示该学生所在班级尚未选出班长
- 非空值,该值必须是本关系中某个元组的学号值
- “班长”属性值可以取两类值:
用户定义的完整性
- 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
- 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
- 例:课程(课程号,课程名,学分)
- “课程号”属性必须取唯一值
- 非主属性“课程名”也不能取空值
- “学分”属性只能取值{1,2,3,4}
ch 10 关系操作和关系代数
基本的关系操作
- 常用的关系操作
- 查询操作:选择,投影,连接,除,并,差,交,笛卡尔积
- 选择,投影,并,差,笛卡尔积是5种基本操作
- 数据更新:插入,删除,修改
- 查询操作:选择,投影,连接,除,并,差,交,笛卡尔积
- 关系操作的特点
- 集合操作方式:操作的对象和结果都是集合,一次一集合的方式
关系代数
- 关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
- 运算对象是关系
- 运算结果亦为关系
- 关系代数的运算符有两类:集合运算符和专门的关系运算符
- 传统的集合运算是从关系的“水平”方向,即行的角度进行
- 专门的关系运算不仅涉及行而且涉及列
运算符 含义 集合运算符 ⋃\bigcup⋃ 并 - 差 ⋂\bigcap⋂ 交 ×\times× 笛卡尔积 专门的关系运算符 σ\sigmaσ 选择 Π\PiΠ 投影 ⋈\Join⋈ 连接 ÷\div÷ 除 使用的记号 1
设关系模式为R(A1,A2,...,An)R(A_1,A_2,...,A_n)R(A1,A2,...,An)
他的一个关系设为R
t∈Rt\in Rt∈R
t[Ai]t[A_i]t[Ai]表示元组t种相应于属性AiA_iAi的一个分量
若A={Ai1,Ai2,...,Aik}A=\{A_{i1},A_{i2},...,A_{ik}\}A={Ai1,Ai2,...,Aik},其中Ai1,Ai2,...,AikA_{i1},A_{i2},...,A_{ik}Ai1,Ai2,...,Aik是{A1,A2,...An}\{A_1,A_2,...A_n\}{A1,A2,...An}种的一部分,则称A为属性列或属性组
t[A]=(t[Ai1,t[Ai2],...,t[Aik])t[A]=(t[A_{i1},t[A_{i2}],...,t[A_{ik}])t[A]=(t[Ai1,t[Ai2],...,t[Aik])表示元组t在属性列A上诸分量的集合
Aˉ\bar{A}Aˉ则表示{A1,A2,...,An}\{A_1,A_2,...,A_n\}{A1,A2,...,An}种去掉{Ai1,Ai2,...,Aik}\{A_{i1},A_{i2},...,A_{ik}\}{Ai1,Ai2,...,Aik}后剩余的属性组
使用的记号2
R为n目关系,S为m目关系。
tr∈Rt_r\in Rtr∈R,ts∈St_s\in Sts∈S, tr⌢ts{t_r}^{\frown}{t_s}tr⌢ts称为元组的连接。
tr⌢ts{t_r}^{\frown}{t_s}tr⌢ts是一个n + m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
给定一个关系R(X,Z),X和Z为属性组。
- 当t[X]=xt[X]=xt[X]=x时,xxx在R中的象集(Images Set)为:Zx={t[Z]∣t∈R,t[X]∈x}Z_x=\{t[Z]|t\in R,t[X]\in x\}Zx={t[Z]∣t∈R,t[X]∈x}
- 它表示R中属性组X上值为x的诸元组在Z上分量的集合
并 Union
R 和 S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
R ∪\cup∪ S
仍为n目关系,由属于R或属于S的元组组成
R∪S=t∣t∈R∨t∈SR∪S = { t|t \in R∨t \in S }R∪S=t∣t∈R∨t∈S
差 Difference
R 和 S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
R - S
仍为n目关系,由属于R而不属于S的所有元组组成
KaTeX parse error: Undefined control sequence: \and at position 18: …S = { t|t \in R\̲a̲n̲d̲ ̲t \notin S }
交 Intersection
R 和 S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
R ∩\cap∩ S
仍为n目关系,由既属于R又属于S的元组组成
R∩S=R−(R−S)R\cap S = R - (R -S)R∩S=R−(R−S)
笛卡尔积
严格地讲应该是广义的笛卡尔积(Extended Cartesian Product)
R: n目关系,k1个元组
S: m目关系,k2个元组R×S
列:(n+m)列元组的集合
- 元组的前n列是关系R的一个元组
- 后m列是关系S的一个元组
行:k1×k2个元组
R×S={tr⌢ts∣tr∈R∧ts∈S}R×S = \{tr^{\frown} ts |tr \in R ∧ ts\in S \}R×S={tr⌢ts∣tr∈R∧ts∈S}
基础关系
选择(Selection)又称为限制(Restriction)
选择运算符的含义
在关系R中选择满足给定条件的诸元组
KaTeX parse error: Undefined control sequence: \and at position 26: …(R)=\{t|t\in R \̲a̲n̲d̲ ̲F(t)='真'\}
F:选择条件,是一个逻辑表达式,取值为“真”或“假”
- 基本形式为:X1θY1X_{1}\theta Y_{1}X1θY1,θ表示比较运算符,它可以是>,≥,<,≤,=或<>
- 在基本的选择条件上可以进一步进行逻辑运算(与,或,非)
投影 Projection
从R中选择出若干属性列组成新的关系
ΠA(R)={t[A]∣t∈R}\Pi _A (R) = \{t[A] | t\in R\}ΠA(R)={t[A]∣t∈R}
- A : R 中的属性列
投影操作主要是从列的角度进行运算
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
连接 Join
连接(Join)也称为θ连接
连接运算的含义
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
KaTeX parse error: Undefined control sequence: \and at position 42: …s | t_r \in R \̲a̲n̲d̲ ̲t_s \in S \and …
A和B:分别为R和S上度数相等且可比的属性组
θ:比较运算符
连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组
等值连接 (equijoin)
自然连接(Natural join)
一般的连接操作是从行的角度进行运算。
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算
外连接
- 悬浮元组 Dangling tuple
- 两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组
- 外连接 Outer Join
- 如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
- 左外连接
- 右外连接
除运算
给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。
R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影:
元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:
- 常用的关系操作
综合举例
数据管理基础-ch08-10相关推荐
- 数据管理基础-NoSQL
数据管理基础-NoSQL ch 62 关系型数据库的价值 获取持久化数据 持久存储大量数据 在大多数的计算架构中,有两个存储区域: 速度快但是数据易丢失的"主存储器"(main m ...
- 为指定的职工在原工资的基础上长10%的工资,并打印涨工资前和涨工资后的工资
/* 为指定的职工在原工资的基础上长10%的工资,并打印涨工资前和涨工资后的工资 select sal into psal from emp where empno=? update emp set ...
- 电子商务基础课件(10.25更新)
电子商务基础课件(10.25更新) 电子商务基础课件 unit01-01-1.rar unit01-01-2.rar unit03-01.rar unit04-01.rar unit05-01.rar ...
- 1177: 按要求排序(指针专题)_L2算法基础第10课 排序中
L2-算法基础-第10课 排序中 排序 归并排序 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用 ...
- 计算机绘图图层基本线性,计算机绘图基础-第10章 尺寸标注.ppt
计算机绘图基础-第10章 尺寸标注 第10章 尺 寸 标 注 10.1 尺寸标注基础 10.1.1 尺寸标注的规则 10.1.2 尺寸的组成 10.1.3 尺寸标注的基本类型 AutoCAD提供了四种 ...
- ArcGIS二次开发基础教程(10):三维分析
ArcGIS二次开发基础教程(10):三维分析 坡度分析 请务必学会使用帮助文档!!! //DEM数据的坡度分析 将分析结果添加到地图上 //首先获取DEM数据,方法有很多例如从个人地理数据库获取,也 ...
- 两个运放制作加法器_运放基础第10讲,加法器、减法器、积分器、微分器、仪表放大器...
运放基础第10讲,加法器.减法器.积分器.微分器.仪表放大器课程介绍 <运放第2部,运放电路设计实战基础视频> 课程介绍:<运放电路设计基础视频教程>的第一部分内容有三分之一到 ...
- Python语音基础操作--10.2隐马尔科夫模型的孤立字识别
<语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...
- Python语音基础操作--10.1基于动态时间规整(DTW)的孤立字语音识别试验
<语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...
- android 实现 3d 文字,android 3d 游戏 开发 基础 第10课-2D文字显示.ppt
<android 3d 游戏 开发 基础 第10课-2D文字显示.ppt>由会员分享,可在线阅读,更多相关<android 3d 游戏 开发 基础 第10课-2D文字显示.ppt(1 ...
最新文章
- 面试热点|理解TCP/IP传输层拥塞控制算法
- 二叉树的建立与遍历_51、二叉树遍历-重建二叉树JZ4
- Java之jdk与jre的区别
- java中重新加载指定文件_java-更改后重新加载属性文件
- 数据包提取文件_航测怎样高效提取无人机POS航点数据
- 解决:-source 1.6 中不支持 diamond 运算符 [ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符)
- stl中copy()函数_std :: copy()函数以及C ++ STL中的示例
- 华谊兄弟:拟向阿里影业、腾讯等发行不超8.2亿股股票
- VS2013 MFC 中DLL链接库断点不能命中的解决方案总结
- ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例
- win10计算机护眼,win10系统开启电脑护眼的操作方法
- 计算机辅助翻译工具客户端,OmegaT(计算机辅助翻译软件)
- 捷普服务器群组防护系统,捷普入侵防御系统
- 常用软胶材料基本知识
- 深度好文|面试官:进程和线程,我只问这19个问题
- 外部电源和锂电池自动切换电路
- c语言五子棋如何添加计时,五子棋教程:计时
- 从零开始的Android:Android应用程序开发概述
- 高考作文做个标题党,有何不好!
- H5的重要知识技术点
热门文章
- 中M2018春C入门和进阶练习集 7-6 重要的话说三遍(5 point(s))
- Http/2 升级指南
- 数据库、数据库管理系统和数据库系统的区别
- 锐龙r9 6900hx和锐龙r7 6800h差距 r96900hx和r76800h选哪个好
- 创业公司股权分配的七大实操建议
- 在mt6735中添加新的开机logo与开\关机动画
- SDWU 2021 Autumn Training Series C1 1st Round题解
- 人工神经网络算法的应用,神经网络是机器算法吗
- 计算x的n次幂,n的阶乘,计算斐波那契数列的第n位
- android画直角坐标系,用Android画个五角星