数据库理论 01 关系模型介绍——基于《数据库系统概念》第七版

本文介绍了关系模型的基本概念,包括关系模式、实例、键、外码及关系查询语言等内容,并详细解释了关系代数中的各种运算。

关系模式

关系的例子

  1. 关系模型是目前广泛应用的数据模型
  2. 由表的集合构成

例如

IDnamedpt_namesalary
11111JAMCS12345
  1. 元组 tuple:表中的一行,元素无所谓
  2. 属性 attribute : 原子的,不可再分的,要有属性域,如上表的name,dept_name,salary
    1. 空值表示特殊值,表示这个属性未知or不存在

另外的例子

关系模式可以表示成
R(A1,A2,…,An)R(A_1,A_2,…,A_n)R(A1,A2,An)

  1. A1,A2,…AnA_1,A_2,…A_nA1,A2,An表示属性
  2. 如 instructor(ID, name, dept_name, salary)
  3. 如 department(dept_name, building, budget)
  4. 关系模式中,相同属性可以把不同关系的元组联系起来

关系模式与实例

  1. 关系模式:关系的逻辑设计
  2. 关系实例:给定时刻关系中数据的快照
  3. 数据库模式versus 数据库实例 ——类比——> 类型与变量

关系模式不常变化,关系实例常变化。(可以参考第7版教科书32页的图2-9)


Keys(键与码)
KKK唯一识别关系r(R)r(R)r(R)中的一个元组,称KKK是关系r(R)r(R)r(R)超码(Superkey)

  1. KKK是一个或多个属性的集合,K⊆RK\sube RKR
    (RRR是关系模式rrr的属性集合 )
  2. 超码可能包含无关紧要的属性
  3. K的任意超集也是超码

如 {ID}和{ID, name}是instructor的超码

候选码与主码

任意真子集不能称为超码的最小超码候选码

如{ID}是instructor的候选码
若{name, dept_name}可以唯一确定instructor的各成员,那他也是候选码

于是需要选择其中一个候选码作为主码(primary key)

外码

一个关系模式(r1)(r_1)(r1)在其属性上包含另一个关系模式(r2)(r_2)(r2)的主码,此属性在rir_iri上称为参照r2r_2r2的外码(foreign key), r1r_1r1称为外码依赖的参照关系

如 dept_name是instructor的外码

参照完整性约束

参照关系中任意元组在 特定属性(如外码) 的取值,必须等于被参照关系中某个元组在 此特定元素 上的取值

例外:外码约束

模式图

一个含主码与外码依赖的数据库可用模式图表示

  1. 一个关系模式用一个矩形表示
  2. 主码用下划线标注
  3. 外码约束(依赖)用 从参照关系的外码到被参照关系的主码之间的 箭头表示

在这里插入图片描述

关系查询语言

分过程化语言与非过程化语言

纯查询语言

  1. 关系代数 – 过程化
  2. 元组关系演算 – 非过程化
  3. 域关系演算 – 非过程化

所有过程化查询语言(如关系代数)都提供一组关系运算,施加于单个关系上或一对关系上,结果为单个关系

关系代数

基本关系运算

选择σ\sigmaσ一元
投影Π\PiΠ一元
∪\cup二元
−-二元
笛卡尔积×\times×二元
更名ρ\rhoρ一元

交连接赋值都可由上述内容引申

选择

选择满足给定为此的元组
σp(r)\sigma_p(r)σp(r)
其中ppp是选择谓词

在这里插入图片描述
σp(r)={t∣t∈r∧p(t)}\sigma_p(r) = \{t|t\in r\land p(t) \}σp(r)={ttrp(t)}

  1. p是一个or多个元组选择条件组成的为此,由∧∨¬\land\quad\lor\quad\lnot¬连接
  2. p可包含两个属性的比较,如a=b
  3. 条件可以表示为<属性>/<常量>"opreation"<属性>/<常量><属性>/<常量> "opreation" <属性>/<常量><属性>/<常量>"opreation"<属性>/<常量>, operation表示比较运算符的一种

总的来说,就是在最后显示的时候只显示其中某些行。

投影

过滤掉特定元素

ΠA1,A2,…,Am(r)\Pi_{A_1,A_2,…,A_m}(r)ΠA1,A2,,Am(r)
AiA_iAi属性名,rrr是关系名

通过去除未列出的列,获得的一个m 列的关系
在这里插入图片描述

对比
σ去除的是行,Π去除列\sigma去除的是行,\Pi去除列σ去除的是行,Π去除列

笛卡尔积

结合来自任意两个关系的信息
表示r×sr\times sr×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>trqs}

r有n列m行数据,k有i列j行数据
r×k有n+i列,m×k行r\times k 有n+i列,m\times k 行r×kn+i列,m×k

连接运算

r⋈θs=σθ(r×s)r\Join_\theta s = \sigma_\theta(r\times s)rθs=σθ(r×s)

θ\thetaθR∪SR\cup SRS模式属性上的一个选择谓词

在这里插入图片描述

并运算

符号表示r∪s={t∣t∈r∨t∈s}r\cup s = \{t|t\in r\lor t\in s\}rs={ttrts}

如果要让r∪sr\cup srs有意义,要求两个条件成立

  1. rrrsss必须同元——属性数目相同
  2. 属性域相同

本质上是加行

r−s={t∣t∈r∧t∉s}r-s = \{t|t\in r\land t\notin s\}rs={ttrt/s}
要求同并运算

本质上就是减行

更名运算

px(E)p_x(E)px(E)
返回表达式E的结果并把名字x赋予给他

若表达式E是多元的,可以设置
px(A1,A2,...,An)(E)p_{x(A_1,A_2,...,A_n)}(E)px(A1,A2,...,An)(E)
返回E的结果,赋予名字x,各属性更名为AiA_iAi

在这里插入图片描述

总结与其他关系运算

基本表达式是如下二者之一:

  1. 数据库的一个关系
  2. 一个常数关系

其他附加关系运算

不增强关系代数表达能力,但可简化查询

  1. r∩s={t∣t∈r∧t∈s}=r−(r−s)r\cap s = \{t|t\in r \land t \in s\} = r-(r-s)rs={ttrts}=r(rs),使用要求同并
  2. 赋值 r←sr\leftarrow srs
    将查询表达为一个顺序程序,包括
    ✓一系列的赋值
    ✓一个值被做为查询结果显示的表达式
    ➢ 赋值赋给一个临时关系变量,并不修改数据库关系实例
    ➢ 赋值赋给一个数据库关系,修改数据库关系实例
  3. 连接
    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))rs=Πr.A,r.B,r.C,r.D,s.E(σr.B=s.Br.D=s.D(r×s))
  4. ÷\div÷
  5. 外连接

r∩s={t∣t∈r∧t∈s}r\cap s = \{t| t\in r\land t\in s\}rs={ttrts}
等价于
r∩s=r−(r−s)r\cap s = r-(r-s) rs=r(rs)

自然连接(不是连接

如果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))rs=Πr.A,r.B,r.C,r.D,s.E(σr.B=s.B,r.D=s.B(r×s))
在这里插入图片描述

赋值

赋值操作(←\leftarrow)可以使复杂查询的表达变得简单,即将查询表达为
一个顺序程序,包括
✓一系列的赋值
✓一个值被做为查询结果显示的表达式
➢ 赋值赋给一个临时关系变量,并不修改数据库关系实例
➢ 赋值赋给一个数据库关系,修改数据库关系实例

参考乘的逆运算即可
在这里插入图片描述

Conclusion

在这里插入图片描述

目 录 译者序 第7版序言 第一部分 基础知识 第1章 数据库管理概述 1 1.1 引言 1 1.2 什么是数据库系统 3 1.3 什么是数据库 6 1.4 为什么用数据库 10 1.5 数据独立性 12 1.6 关系系统及其他 15 1.7 小结 17 练习 17 参考文献和简介 19 部分练习答案 19 第2章 数据库系统体系结构 22 2.1 引言 22 2.2 三级体系结构 22 2.3 外模式 24 2.4 概念模式 26 2.5 内模式 26 2.6 映象 27 2.7 数据库管理员 27 2.8 数据库管理系统 28 2.9 数据通信管理器 31 2.10 客户/服务器体系结构 31 2.11 工具 33 2.12 分布式处理 33 2.13 小结 35 练习 35 参考文献和简介 36 第3章 关系数据库介绍 38 3.1 引言 38 3.2 关系模型概述 38 3.3 关系关系变量 41 3.4 关系的含义 42 3.5 优化 44 3.6 数据字典 45 3.7 基本关系变量和视图 46 3.8 事务 49 3.9 供应商和零件数据库 49 3.10 小结 51 练习 52 参考文献和简介 53 部分练习答案 54 第4章 SQL概述 55 4.1 引言 55 4.2 综述 56 4.3 目录 58 4.4 视图 59 4.5 事务 59 4.6 嵌入式SQL 59 4.7 SQL是不完美的 66 4.8 小结 66 练习 67 参考文献和简介 68 部分练习答案 73 第二部分 关系数据模型 第5章 域、关系和基本关系变量 77 5.1 引言 77 5.2 域 79 5.3 关系值 86 5.4 关系变量 90 5.5 SQL的支持 93 5.6 小结 96 练习 97 参考文献和简介 98 部分练习答案 101 第6章 关系代数 106 6.1 引言 106 6.2 关系封闭性 107 6.3 语法 109 6.4 语义 110 6.5 举例 117 6.6 关系代数的作用 119 6.7 附加的操作符 120 6.8 分组与分组还原 125 6.9 关系比较 127 6.10 小结 128 练习 129 参考文献和简介 131 部分练习答案 133 第7章 关系演算 140 7.1 引言 140 7.2 元组演算 141 7.3 举例 147 7.4 关系演算与关系代数的比较 149 7.5 计算能力 152 7.6 域演算 153 7.7 SQL语言 155 7.8 小结 162 练习 163 参考文献和简介 165 部分练习答案 167 第8章 完整性 179 8.1 引言 179 8.2 类型约束 180 8.3 属性约束 181 8.4 关系变量约束 182 8.5 数据库约束 182 8.6 黄金法则 183 8.7 静态约束和动态约束 184 8.8 码 185 8.9 SQL对完整性的支持 191 8.10 小结 194 练习 194 参考文献和简介 196 部分练习答案 201 第9章 视图 209 9.1 引言 209 9.2 视图的用途 211 9.3 视图检索 213 9.4 视图更新 214 9.5 快照 225 9.6 SQL对视图的支持 226 9.7 小结 227 练习 228 参考文献和简介 229 部分练习答案 232 第三部分 数据库设计 第10章 函数依赖 238 10.1 引言 238 10.2 基本概念 239 10.3 平凡的函数依赖和非平凡的函数 依赖 241 10.4 依赖集的闭包 241 10.5 属性集的闭包 242 10.6 最小函数依赖集 244 10.7 小结 245 练习 246 参考文献和简介 247 部分练习答案 249 第11章 进一步规范化Ⅰ:1NF、2NF、 3NF和BCNF 252 11.1 引言 252 11.2 无损分解和函数依赖 254 11.3 第一、第二和第三范式 257 11.4 保持函数依赖 262 11.5 BOYCE/CODD范式 264 11.6 具有关系值属性的关系变量 268 11.7 小结 270 练习 270 参考文献和简介 272 部分练习答案 274 第12章 进一步规范化Ⅱ:高级范式 282 12.1 引言 282 12.2 多值依赖与第四范式 282 12.3 连接依赖与第五范式 285 12.4 规范化过程小结 289 12.5 逆规范化 291 12.6 正交设计 292 12.7 其他的规范化形式 295 12.8 小结 296 练习 296 参考文献和简介 297 部分练习答案 302 第13章 语义建模 306 13.1 引言 306 13.2 总体方法 307 13.3 E/R模型 309 13.4 E/R图 312 13.5 基于E/R模型数据库设计 313 13.6 简单分析 317 13.7 小结 319 练习 320 参考文献和简介 321 第四部分 事务管理 第14章 恢复 333 14.1 引言 333 14.2 事务 334 14.3 事务恢复 335 14.4 系统恢复 337 14.5 介质恢复 338 14.6 两阶段提交 338 14.7 SQL对事务的支持 339 14.8 小结 340 练习 341 参考文献和简介 341 部分练习答案 345 第15章 并发 347 15.1 引言 347 15.2 三个并发问题 347 15.3 锁 349 15.4 重提三个并发问题 350 15.5 死锁 352 15.6 可串行性 353 15.7 隔离级别 354 15.8 意向锁 355 15.9 SQL的支持 357 15.10 小结 358 练习 359 参考文献和简介 360 部分练习答案 365 第五部分 高级专题 第16章 安全性 369 16.1 引言 369 16.2 自主存取控制 371 16.3 强制存取控制 375 16.4 统计数据库 377 16.5 数据加密 381 16.6 SQL的支持 384 16.7 小结 386 练习 387 参考文献和简介 388 部分练习答案 390 第17章 优化 394 17.1 引言 394 17.2 一个启发性的例子 395 17.3 查询处理概述 396 17.4 表达式变换 399 17.5 数据库统计信息 403 17.6 分而治之的策略 404 17.7 关系操作的实现算法 406 17.8 小结 410 练习 411 参考文献和简介 413 部分练习答案 430 第18章 信息空缺 432 18.1 引言 432 18.2 3VL方法概述 433 18.3 上述方案所造成的某些结果 437 18.4 空值和码 440 18.5 外连接 442 18.6 特殊值 444 18.7 SQL的支持 444 18.8 小结 447 练习 448 参考文献和简介 449 部分练习答案 452 第19章 类型继承 454 19.1 引言 454 19.2 类型的层次结构 457 19.3 多态性和可置换性 459 19.4 变量与赋值 462 19.5 约束特化 465 19.6 比较 467 19.7 操作、版本和签名 470 19.8 一个圆是一个椭圆吗 473 19.9 约束特化—再次讨论 476 19.10 小结 478 练习 479 参考文献和简介 480 部分练习答案 481 第20章 分布式数据库 484 20.1 引言 484 20.2 一些预备知识 484 20.3 十二个目标 487 20.4 分布式系统面对的问题 493 20.5 客户/服务器系统 502 20.6 DBMS独立性 504 20.7 SQL的支持 508 20.8 小结 509 练习 509 参考文献和简介 510 第21章 决策支持 518 21.1 引言 518 21.2 决策支持的特征 519 21.3 决策支持的数据库设计 520 21.4 数据准备 525 21.5 数据仓库和数据集市 527 21.6 联机分析处理 530 21.7 数据挖掘 535 21.8 小结 536 练习 537 参考文献和简介 538 部分练习答案 540 第22章 时态数据库 541 22.1 引言 541 22.2 时态数据 542 22.3 问题是什么 544 22.4 时间间隔 548 22.5 间隔类型 549 22.6 间隔上的标量操作符 551 22.7 间隔上的聚集操作符 551 22.8 与间隔有关的关系操作符 552 22.9 间隔上的约束 557 22.10 间隔上的更新操作符 559 22.11 关于数据库设计 560 22.12 小结 562 练习 563 参考文献和简介 563 部分练习答案 565 第23章 基于逻辑的数据库 567 23.1 引言 567 23.2 综述 567 23.3 命题演算 569 23.4 谓词演算 572 23.5 数据库的证明理论观点 577 23.6 演绎数据库系统 580 23.7 递归查询过程 583 23.8 小结 588 练习 589 参考文献和简介 590 部分练习答案 596 第六部分 对象和对象/关系数据库 第24章 对象数据库 599 24.1 引言 599 24.2 对象、类、方法和消息 602 24.3 进一步的分析 605 24.4 一个详实的例子 611 24.5 混合性问题 618 24.6 小结 624 练习 626 参考文献和简介 627 部分练习答案 634 第25章 对象/关系数据库 637 25.1 引言 637 25.2 第一个根本性错误 639 25.3 第二个根本性错误 644 25.4 实现上的问题 645 25.5 真正融合的好处 647 25.6 小结 648 参考文献和简介 649 附 录 附录A SQL表达式 657 附录B SQL3概览 666 附录C 缩略语和符号 678
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值