【数据库系统概念第七版】学习笔记 第二章 关系模型介绍

前言

1. 关系数据库结构

基本概念

  • 关系:表
  • 元组:行
  • 属性:列
  • 域:属性允许取值的集合
  • 原子的:域中的元素被认为不可再分
  • 空值:未知的值
  • 数据库模式:数据库的逻辑设计
  • 数据库实例:给定时刻数据库中数据的快照
  • 关系模式:关系模式由一个属性列表和对应的域组成

n元关系

一个关系中包含n个属性,则称该关系为n元关系。

2. 码

概念

  • 超码:一个或多个属性的集合,属性组合在一起可以在关系中唯一标识一个元组。
  • 候选码:最小的超码。即在候选码中,任意删掉一个属性都不能唯一标识一个元组
  • 主码:表示在实际的数据库设计中,被数据库设计者选作用于在一个关系中区分不同元组的方式的候选码。习惯上,将主码属性写在其它属性的前面,主码属性还要加下划线。
  • 主码约束:表示在数据库设计中,由主码建模的约束。
  • 外码:关系 r 1 r_1 r1中的属性 A A A也必须是关系 r 2 r_2 r2中某个元组的主码属性B的取值,这时A属性集被称作从 r 1 r_1 r1引用 r 2 r_2 r2的外码。(注意是A属性集,而不是B,因此外码不一定是关系r1的主码)
  • 引用关系:上述例子中 r 1 r_1 r1被称作引用关系
  • 被引用关系:上述例子中 r 2 r_2 r2被称作被引用关系
  • 外码约束:上述例子中的约束被称作外码约束。特点在于,被引用属性必须的被引用关系的主码。
  • 引用完整性约束:放松了主码的外码约束,即不再要求是主码。

概念之间的区别

超码,候选码,主码,外码

问题一:哪些可以唯一标识元组?
答:超码,候选码,主码

问题二:码之间的包含关系?
超码 ⊇ 候选码 ⊇ 主码 超码\supseteq候选码\supseteq主码 超码候选码主码

问题三:外码是什么?
关系 r 1 r_1 r1中的属性 A A A也必须是关系 r 2 r_2 r2中某个元组的主码属性B的取值,这时A属性集被称作从 r 1 r_1 r1引用 r 2 r_2 r2的外码。(注意是A属性集,而不是B,因此外码不一定是关系r1的主码)
外码是引用关系中的属性,其它的并无其它性质。

模式图

在这里插入图片描述
关系名字在最顶上,方框内,先写主码,再写其它属性,外码约束和引用完整性约束用箭头表示。如果全是主码,就不需要划线了(如depositor和brrower)。

关系代数

一元运算

选择运算 σ x ( r ) \sigma_x(r) σx(r)

根据逻辑表达式x,对关系r进行选择

投影运算 Π L ( E ) \Pi_L(E) ΠL(E)

会去重

更名运算 ρ x ( E ) \rho_x(E) ρx(E)

常常用于对同一个表声明两次进行判断,为了避免不重名,需要对一部分进行更名。

广义投影运算 Π F 1 , F 2 , . . . , F n ( E ) \Pi_{F_1, F_2, ..., F_n}(E) ΠF1,F2,...,Fn(E)

实际上就是一次投影多个属性。

二元运算

并运算 ∪ \cup

需要两种关系同构。

笛卡儿积 × \times ×

就相当于暴力链接。

集差 − -

要保证相减两边的关系同构才可以,如果为了构造为相容的关系,可以对目标进行自然连接,然后再减去

交运算 ∩ \cap

链接 ⋈ \bowtie

悬摆元组:自然连接中,实际上对结果毫无贡献的元组。
不考虑悬摆元组的链接,称作内连接。否则称为外连接。
在这里插入图片描述

赋值 ← \leftarrow

效果十分复杂。
在这里插入图片描述

聚集运算

所有的聚集运算,默认不去重,如果需要用去重,需要加关键词distinct。

分组运算G

G 1 , G 2 , . . . , G n G F 1 ( A 1 ) , . . . . , F m ( A m ) ( E ) _{G_1, G_2,..., G_n}G_{F1(A1),...., Fm(Am)}(E) G1,G2,...,GnGF1(A1),....,Fm(Am)(E)
其中 G i G_i Gi是分组属性, F i F_i Fi是聚集函数, A i A_i Ai是属性名
结果模式中,包含分组属性+聚集的结果

最大值max

最小值min

平均值avg

统计计数count

数据库操作

下文中的表达式,r表示关系,E表示关系代数表达式

删除

r ← r − E r\leftarrow r-E rrE

插入

r ← r ∪ E r\leftarrow r\cup E rrE

更新

r ← Π F 1 , F 2 , . . , F n ( r ) r\leftarrow \Pi_{F_1, F_2, .., F_n}(r) rΠF1,F2,..,Fn(r)

空值null

算数运算中,如果有空值,结果规定为空。
聚集运算中,如果有空值,运算时忽略空值。对于去重和分组,空值被认为全部等价。

关系代数表达式的等价规则

选择关系满足交换律
选择关系的级联等价于合取操作进行选择
投影运算的级联等价于最外层的投影
集合运算的交并满足交换律和结合律
集合的差运算不满足交换和结合律

视图View

所有不属于概念模型但为用户所见的虚拟关系,称作视图。只保留视图的定义,不保留视图的结果。

视图的优点

  1. 个性化服务
  2. 安全性:限制用户访问范围
  3. 逻辑独立性

创建视图

create view v as <query expression>

视图在数据库中,只保留视图的定义而不保留元组。

视图作为一种虚拟关系。

视图的插入

问题1:如果插入的信息有缺失
方案1:不允许插入
方案2:用null填充

问题2:如果插入的信息不满足视图的定义
不允许插入

问题3:插入的信息不满足视图的约束,即一些链接信息未提供
不允许插入

视图之间的依赖

直接依赖;间接依赖

视图定义中,不支持递归定义,即不能用自身定义自身

视图的扩展

如果视图的表达式e包含其它视图v,则不断替换e中相关的定义为v的定义,直到不包含任何视图。

因此递归定义是无法终止的,所以不支持递归定义。

物化视图

把视图作为基本关系保存下来,可以看作数据库的cache。从而加快视图的查询
适合基本关系不发生经常变化的视图。否则需要不断修改基本关系。

元组关系演算

定义

{ t ∣ P ( t ) } \{t|P(t)\} {tP(t)}
表示使谓词P为真的元组的集合,t为元组变量,P是公式,P由原子公式构成。

原子公式

s ∈ r s [ x ] Θ u [ y ] s [ x ] Θ c s\in r\\ s[x]\Theta u[y]\\ s[x]\Theta c srs[x]Θu[y]s[x]Θc

公式的定义

实际上就是逻辑运算的公式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值