数据库理论 01 关系模型介绍——基于《数据库系统概念》第七版
关系模式
关系的例子
- 关系模型是目前广泛应用的数据模型
- 由表的集合构成
例如
ID | name | dpt_name | salary |
---|---|---|---|
11111 | JAM | CS | 12345 |
- 元组 tuple:表中的一行,元素无所谓
- 属性 attribute : 原子的,不可再分的,要有属性域,如上表的name,dept_name,salary
1. 空值表示特殊值,表示这个属性未知or不存在
另外的例子
关系模式可以表示成
R ( A 1 , A 2 , … , A n ) R(A_1,A_2,…,A_n) R(A1,A2,…,An)
- A 1 , A 2 , … A n A_1,A_2,…A_n A1,A2,…An表示属性
- 如 instructor(ID, name, dept_name, salary)
- 如 department(dept_name, building, budget)
- 关系模式中,相同属性可以把不同关系的元组联系起来
关系模式与实例
- 关系模式:关系的逻辑设计
- 关系实例:给定时刻关系中数据的快照
- 数据库模式versus 数据库实例 ——类比——> 类型与变量
关系模式不常变化,关系实例常变化。(可以参考第7版教科书32页的图2-9)
Keys(键与码)
K K K是唯一识别关系 r ( R ) r(R) r(R)中的一个元组,称 K K K是关系 r ( R ) r(R) r(R)的超码(Superkey)
- K K K是一个或多个属性的集合, K ⊆ R K\sube R K⊆R
( R R R是关系模式 r r r的属性集合 ) - 超码可能包含无关紧要的属性
- K的任意超集也是超码
如 {ID}和{ID, name}是instructor的超码
候选码与主码
任意真子集不能称为超码的最小超码为候选码
如{ID}是instructor的候选码
若{name, dept_name}可以唯一确定instructor的各成员,那他也是候选码
于是需要选择其中一个候选码作为主码(primary key)
外码
一个关系模式 ( r 1 ) (r_1) (r1)在其属性上包含另一个关系模式 ( r 2 ) (r_2) (r2)的主码,此属性在 r i r_i ri上称为参照 r 2 r_2 r2的外码(foreign key), r 1 r_1 r1称为外码依赖的参照关系
如 dept_name是instructor的外码
参照完整性约束
参照关系中任意元组在 特定属性(如外码) 的取值,必须等于被参照关系中某个元组在 此特定元素 上的取值
例外:外码约束
模式图
一个含主码与外码依赖的数据库可用模式图表示
- 一个关系模式用一个矩形表示
- 主码用下划线标注
- 外码约束(依赖)用 从参照关系的外码到被参照关系的主码之间的 箭头表示
关系查询语言
分过程化语言与非过程化语言
纯查询语言
- 关系代数 – 过程化
- 元组关系演算 – 非过程化
- 域关系演算 – 非过程化
所有过程化查询语言(如关系代数)都提供一组关系运算,施加于单个关系上或一对关系上,结果为单个关系
关系代数
基本关系运算
选择 | σ \sigma σ | 一元 |
投影 | Π \Pi Π | 一元 |
并 | ∪ \cup ∪ | 二元 |
差 | − - − | 二元 |
笛卡尔积 | × \times × | 二元 |
更名 | ρ \rho ρ | 一元 |
交连接赋值都可由上述内容引申
选择
选择满足给定为此的元组
σ p ( r ) \sigma_p(r) σp(r)
其中 p p p是选择谓词
σ p ( r ) = { t ∣ t ∈ r ∧ p ( t ) } \sigma_p(r) = \{t|t\in r\land p(t) \} σp(r)={t∣t∈r∧p(t)}
- p是一个or多个元组选择条件组成的为此,由 ∧ ∨ ¬ \land\quad\lor\quad\lnot ∧∨¬连接
- p可包含两个属性的比较,如a=b
- 条件可以表示为 < 属性 > / < 常量 > " o p r e a t i o n " < 属性 > / < 常量 > <属性>/<常量> "opreation" <属性>/<常量> <属性>/<常量>"opreation"<属性>/<常量>, operation表示比较运算符的一种
总的来说,就是在最后显示的时候只显示其中某些行。
投影
过滤掉特定元素
Π A 1 , A 2 , … , A m ( r ) \Pi_{A_1,A_2,…,A_m}(r) ΠA1,A2,…,Am(r)
A i A_i Ai属性名, r r r是关系名
通过去除未列出的列,获得的一个m 列的关系
对比
σ 去除的是行, Π 去除列 \sigma去除的是行,\Pi去除列 σ去除的是行,Π去除列
笛卡尔积
结合来自任意两个关系的信息
表示 r × s r\times s r×s
由于相同属性名可能同时出现在 r ( R ) r(R) r(R), s ( S ) s(S) s(S),所以在这个过程中需要rename以区别这些属性
r × s = { < t , q > ∣ t ∈ r ∧ q ∈ s } r\times s = \{<t,q>|t\in r\land q\in s\} r×s={<t,q>∣t∈r∧q∈s}
r有n列m行数据,k有i列j行数据
r × k 有 n + i 列, m × k 行 r\times k 有n+i列,m\times k 行 r×k有n+i列,m×k行
连接运算
r ⋈ θ s = σ θ ( r × s ) r\Join_\theta s = \sigma_\theta(r\times s) r⋈θs=σθ(r×s)
θ \theta θ是 R ∪ S R\cup S R∪S模式属性上的一个选择谓词
并运算
符号表示 r ∪ s = { t ∣ t ∈ r ∨ t ∈ s } r\cup s = \{t|t\in r\lor t\in s\} r∪s={t∣t∈r∨t∈s}
如果要让 r ∪ s r\cup s r∪s有意义,要求两个条件成立
- r r r和 s s s必须同元——属性数目相同
- 属性域相同
本质上是加行
差
r − s = { t ∣ t ∈ r ∧ t ∉ s } r-s = \{t|t\in r\land t\notin s\} r−s={t∣t∈r∧t∈/s}
要求同并运算
本质上就是减行
更名运算
p x ( E ) p_x(E) px(E)
返回表达式E的结果并把名字x赋予给他
若表达式E是多元的,可以设置
p x ( A 1 , A 2 , . . . , A n ) ( E ) p_{x(A_1,A_2,...,A_n)}(E) px(A1,A2,...,An)(E)
返回E的结果,赋予名字x,各属性更名为 A i A_i Ai
总结与其他关系运算
基本表达式是如下二者之一:
- 数据库的一个关系
- 一个常数关系
其他附加关系运算
不增强关系代数表达能力,但可简化查询
- 交 r ∩ s = { t ∣ t ∈ r ∧ t ∈ s } = r − ( r − s ) r\cap s = \{t|t\in r \land t \in s\} = r-(r-s) r∩s={t∣t∈r∧t∈s}=r−(r−s),使用要求同并
- 赋值 r ← s r\leftarrow s r←s
将查询表达为一个顺序程序,包括
✓一系列的赋值
✓一个值被做为查询结果显示的表达式
➢ 赋值赋给一个临时关系变量,并不修改数据库关系实例
➢ 赋值赋给一个数据库关系,修改数据库关系实例 - 连接
如 R = ( A , B , C , D ) S = ( E , B , D ) R = (A,B,C,D)\quad S=(E,B,D) R=(A,B,C,D)S=(E,B,D)
r ⋈ s = Π r . A , r . B , r . C , r . D , s . E ( σ r . B = s . B ∧ r . D = s . D ( r × s ) ) r\Join s = \Pi_{r.A,r.B,r.C,r.D,s.E}(\sigma_{r.B=s.B\land r.D = s.D}(r\times s)) r⋈s=Πr.A,r.B,r.C,r.D,s.E(σr.B=s.B∧r.D=s.D(r×s)) - 除 ÷ \div ÷
- 外连接
交
r ∩ s = { t ∣ t ∈ r ∧ t ∈ s } r\cap s = \{t| t\in r\land t\in s\} r∩s={t∣t∈r∧t∈s}
等价于
r ∩ s = r − ( r − s ) r\cap s = r-(r-s) r∩s=r−(r−s)
自然连接(不是连接
如果r和s中有名字相同的列,那么需要先检验这些列内的数据是否一致,将一致的数据额外加上两个集合中都没有的列
R = (A, B, C, D)
✓ S = (E, B, D)
✓ 自然连接结果的关系模式为(A, B, C, D, E)
(如果是连接时 A,B,C,D,E,B,D)
r ⋈ s = Π r . A , r . B , r . C , r . D , s . E ( σ r . B = s . B , r . D = s . B ( r × s ) ) r\Join s = \Pi_{r.A, r.B, r.C, r.D, s.E}(\sigma_{r.B= s.B, r.D=s.B}(r\times s)) r⋈s=Πr.A,r.B,r.C,r.D,s.E(σr.B=s.B,r.D=s.B(r×s))
赋值
赋值操作( ← \leftarrow ←)可以使复杂查询的表达变得简单,即将查询表达为
一个顺序程序,包括
✓一系列的赋值
✓一个值被做为查询结果显示的表达式
➢ 赋值赋给一个临时关系变量,并不修改数据库关系实例
➢ 赋值赋给一个数据库关系,修改数据库关系实例
除
参考乘的逆运算即可
Conclusion
数据库理论 01 关系模型介绍——基于《数据库系统概念》第七版相关推荐
- 【数据库系统概念第七版(Database System Concepts 7th)配套SQL文件如何获取】
数据库系统概念第七版(Database System Concepts 7th)配套SQL文件如何获取 数据库大黑书获取配套SQL文件 最后在数据库运行SQL文件即可 数据库大黑书获取配套SQL文件 ...
- 数据库系统概念笔记-关系模型介绍
转载自 数据库系统概念笔记-关系模型介绍 作者 CyninMa 数据库系统概念笔记-关系模型介绍 2.1 关系数据库的结构 关系数据库由表(table)的集合构成,每个表有唯一的名字.例如,inst ...
- 数据库系统概念总结:第二章 关系模型介绍
周末无事水文章,期末备考的总结资料 第二章 关系模型介绍 2.1 关系数据的结构 关系数据库由表(table)组成,每个表有唯一的名字.一般来说,表中一行代表了一组值之间的一种联系 表中一行代表了一组 ...
- 数据库系统概念-第六版 - charter 1 - 笔记
<1>数据库系统(Database System,DBS) 由一个相互关联的数据的集合和一组用以访问这些数据的程序组成:这个数据集合通常被称作数据库(Database): DBS的主要目标 ...
- 数据库系统概念第六版 第四章练习题 12 14 18
数据库系统概念第六版 第四章练习题 12 14 18 4.12 对于图中的数据库,写出一个查询来找到那些没有经理的雇员.注意一个雇员可能只是没有列出其经理或者可能有null经理.使用外连接书写查询,然 ...
- 数据库系统概念第六版 第五章练习题 2 4
数据库系统概念第六版 第五章练习题 2 4 5.2 写一个使用JDBC元数据特性的JAVA函数,该函数用ResultSet作为输入参数,并把结果输出为用合适的名字作为列名的表格形式. (对JAVA不太 ...
- 数据库之关系模型介绍
本篇文章是数据库系列的第一篇文章,本系列文章是笔者在学习<数据库系统概念>这本书总结的内容,使用的数据库是MySQL. 关系数据库的结构 关系数据库由表(table)的集合构成,每个表由唯 ...
- 数据库理论:ER模型,关系转换,并发控制与冲突可串行化调度
目录 前言 ER模型 实体 属性 关系 参与 关系的度(degree) 一对一与一对多 ER 图符 关系转化(重要) 并发控制 概述 并发控制中的不一致性 修改丢失 不可重复读 脏读 封锁技术 封锁三 ...
- er图转为数据流程图_「数据架构」实体关系模型介绍
实体-关系模型(或ER模型)描述特定知识领域中相关的事物.基本的ER模型由实体类型(对感兴趣的事物进行分类)和指定实体之间可能存在的关系(那些实体类型的实例)组成. 在软件工程中,为了执行业务流程,E ...
最新文章
- 绝对布局优势_遇上狭长型卫生间基本没救?2种布局教会你,什么叫美观实用兼具...
- 由DWR1.0到DWR2.0常出现的问题
- shell脚本1——变量 $、read、``
- 数据库提示:正在还原中,无法访问 应该怎么办?
- h.264视频文件封装
- atheros有线网卡LINUX驱动,请问有知道atheros无线网卡Linux驱动官方下载地址是什么吗?...
- 高三了,一模距本科线还差22,英语才28,怎么办啊
- Vue-cli 4.x 中的全局样式配置
- apache 建立用户认证
- 关于soul的使用感受
- node启动服务报错Error: listen EADDRNOTAVAIL 192.168.1.137:8023
- 虚拟机镜像的创建方法
- int类型变量的取值范围?
- iOS开发 图片选择器、图片多选功能的实现
- 高校BBS最HOT的100个笑话(不看保证后悔终身)
- 千里眼-智行千里,眼见为实 源码分享
- 文件夹的隐藏选项为灰色勾选,无法更改或删除
- 网络流量监控软件怎样实现
- Geoserver+Geomesa+HBase时空大数据环境搭建
- Vue已知文件地址完成图片视频单个下载及批量下载