二、Relational Model 相关模型的运算

本文围绕关系数据库展开,介绍了其结构,包括行、列、表,以及null值、unknown值、键和完整性约束。还阐述了相关关系的代数指令,涵盖查询(如select、project等)、增加、删除和修改操作,并给出了各指令的格式、含义及示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、相关数据库(Relational Database)的结构

1.行、列、表

这本的数据库研究的都是相关关系数据库,后面讲的全是这个相关关系。

  • 一行(tuple)是一个实体,行的排列是无序的。

  • 列名(colunm_name)叫做属性(attribute)

  • 一个表(table)是一个实体的集合,就是一个相关关系(relation)

2.null值

(1)定义

null代表不知道的值(an unknown value)或者不存在(a value does not exist),用于行中。

(2)谓词

两个null值认为是一样的。

(3)运算

  • 数学运算符对null进行操作后结果仍然为null。如:5+null 返回null。
  • project Π \Pi Π、union ∪ \cup 、set-intersection ∩ \cap 、set-difference − - 、generalized projection:像对待其他数值一样
  • aggregate functions :
    在分组属性(grouping attributes)中:就像在project Π \Pi Π中一样。如果两个元组在所有分组属性上都相同,则操作会将它们放在同一组中,即使它们的某些属性为空。
    在聚合属性(aggregated attributes)中:在应用聚合之前,从一开始就删除空值。如果结果多重集为空,则聚合结果为空。

3.unknown值

(1)逻辑与、或、非

OR

(unknown or true) = true,
(unknown or false) = unknown
(unknown or unknown) = unknown

AND

(true and unknown) = unknown,
(false and unknown) = false,
(unknown and unknown) = unknown

NOT

(not unknown) = unknown

(2)谓词

P is unknown
如果P是unknown,那么P is unknown的判断结果是true

(3)select

如果值是unknown的话,那么值被认为不符合判断条件。

4.键

在这里插入图片描述

  • 超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键。
    理解:超键是属性集,意味着一个列名可以是超键,几个列名也可以是超键
    如:{customer_id, customer_name} and {customer_id} are both superkeys of Customer.

  • 候选键(candidate key):不含有多余属性的超键称为候选键
    理解:就是只有一个元素的超键。
    如:{customer_id}或{customer_name}都是候选键

  • 主码(primary key):用户选作元组标识的一个候选键程序主键
    替换码(alternate Keys):那么其他的候选键就是替换码。
    如:我们选择{customer_id}作为主码,那么{customer_name}就是候选码。反之一样

  • 外码(foreign Key):一个关系r1中的一个属性或一组属性,与关系r2(可能相同)的候选键相匹配。
    如:r1的外码是r2中主码。

5.完整性约束

  • Entity integrity(实体完整性约束):In a base relation, 主码的值不能为空.
  • Referential integrity(参照完整性约束):外键参照的那个表中主键必须存在。

二、相关关系的代数指令(查)

0.总结

只使用这些指令,那么意味着查询特定数据。
相应习题:https://blog.youkuaiyun.com/sandalphon4869/article/details/90516749#_225

基本代数名称代数符号作用
select σ \sigma σ(sigma小写)选择行
project: Π \Pi Π(pi大写)选择列
union: ∪ \cup 行的并集,列相同
set difference:行的差集,列相同
cartesian product: × \times ×行的笛卡尔积,列=R和S的和(不是并集)
rename: ρ \rho ρ另命名
附加代数名称代数符号作用
set-intersection ∩ \cap 行的交集,列相同
natural-join ⋈ \bowtie 自然连接:两表中相同属性中各个对应属性相同的去重属性笛卡尔积。
division ÷ \div ÷除:表示结果是相关关系r的R-S的列,行是对于相同的r中的R-S列中的实体,
其相关关系r中的S列在相关关系s的S列都有的行。
assignment赋值
扩展代数名称代数符号作用
generalized project Π \Pi Π含有代算术运算的选择列
聚合函数
avgaverage value
minminimum value
maxmaximum value
sumsum of values
countnumber of values
四大连接
自然连接(内连接)
natural join(inner join)
⋈ \bowtie 只保留两者都共有的
左连接left outer join ⊐ ⋈ \sqsupset \bowtie 保证左边关系的完整性
右连接right outer join ⋈ ⊏ \bowtie \sqsubset 保证右边关系的完整性
全连接full outer join ⊐ ⋈ ⊏ \sqsupset \bowtie \sqsubset 保证两边关系的完整性

1.Fundamental

(1)select:σ

格式:σp( r )

根据谓词p的选择条件,从相关关系r中挑选出符合条件的行。

谓词p

一个谓词条目(term):[列column/属性attribute] [操作符op(=, ≠, >, <, ≥, ≤)] [某个值]
多个谓词的链接: ∧(and), ∨ (or), ¬ (not)

例子

选择出A=B并且D的值大于5的行构成新的相关关系
在这里插入图片描述

(2)project: Π \Pi Π

格式: Π A 1 , A 2 , . . . , A 3 ( r ) \Pi_{A1,A2,...,A3}( r ) ΠA1,A2,...,A3(r)

从r中选择出特定的列(A1,A2,…,A3)构成新的相关关系
PS:自动去除重复的行,去重叫做(remove duplicate rows)

例子

在这里插入图片描述

(3)union: ∪

格式:r ∪ s

求两个相关关系的并集:行的并集,列相同(行去重)
PS:这两个相关关系必须有一样的属性/列

例子

在这里插入图片描述

(4)set difference: −

格式:r−s

求两个相关关系的差集:行的差集,列相同
PS:这两个相关关系必须有一样的属性/列

例子:

在这里插入图片描述

(5)cartesian product: X

格式:r X s

求两个相关关系的笛卡尔集

属性:

新生成的行数 = r的行数 * s的行数
新生成的列数 = r的列数 + s的列数

关系属性重名

要么

  • 如果r ∩ s = 空集,那么可以直接r X s
  • 如果两个关系属性重名(r X r),则必须采用重命名机制(rename操作)加以区分,pd( r ),然后才能
    r X d

例子:

在这里插入图片描述

(6)rename: ρ \rho ρ

格式: ρ d ( r ) \rho_{d}( r ) ρd(r)

将相关关系r起名为d

格式: ρ d ( A 1 , A 2 , . . . , A n ) ( r ) \rho_{d(A1,A2,...,An)}( r ) ρd(A1,A2,...,An)(r)

将相关关系r起名为d,并将其内列名起名为A1,A2,…An。

(7)组合操作的例子

在这里插入图片描述

2.Additional

(1)set-intersection:∩

行的交集,列相同

格式:r ∩ s

r1和r2有一样的列/属性

等价: r ∩ s = r – (r – s)

等价于set difference

r – s:(在r中)去掉s中特有的元素、保存r中特有的元素(去掉r、s中共有的元素)
r –(r – s): (在r中)去掉r中特有的元素(保存r、s中共有的元素)

例子

在这里插入图片描述

(2)natural join(inner join):⋈

格式:r ⋈ s

r和s的自然连接:两表中相同属性中各个对应属性相同的去重属性笛卡尔积。

等价: r ⋈ s = Π r . A , r . B , r . C , r . D , s . E ( σ r . B = s . B ⋁ r . D = s . D ( r × s ) ) r \bowtie s = \Pi_{r.A,r.B,r.C,r.D,s.E} (\sigma_{r.B=s.B \bigvee 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))

等价于project, select, cartesian product

  • σ r . B = s . B ⋀ r . D = s . D ( r × s ) \sigma_{r.B=s.B \bigwedge r.D=s.D} (r \times s) σr.B=s.Br.D=s.D(r×s):r和s的笛卡尔积,选择B、D分别同值的行
r.Ar.Br.Cr.Ds.Bs.Ds.E
α1αa1aα
α1αa1aγ
α1γa1aα
α1γa1aγ
δ2βb2bδ
  • Π r . A , r . B , r . C , r . D , s . E ( σ r . B = s . B ⋀ r . D = s . D ( r × s ) ) \Pi_{r.A,r.B,r.C,r.D,s.E} (\sigma_{r.B=s.B \bigwedge r.D=s.D}(r \times s)) Πr.A,r.B,r.C,r.D,s.E(σr.B=s.Br.D=s.D(r×s)):去掉一个B、D列
r.Ar.Br.Cr.Ds.E
α1αaα
α1αaγ
α1γaα
α1γaγ
δ2βbδ

例子

在这里插入图片描述

(3)division:÷

格式:r ÷ s

等价:

设R = (A1, …, Am , B1, …, Bn ),S = (B1, …, Bn)
r ÷ s = Π R − S ( r ) – Π R − S ( ( Π R − S ( r ) ) × s – Π R ( r ) ) r \div s = \Pi_{R-S}(r) – \Pi_{R-S}((\Pi_{R-S}(r)) \times s – \Pi_{R}(r)) r÷s=ΠRS(r)ΠRS((ΠRS(r))×sΠR(r))

等价于project, set difference, cartesian product

表示结果是相关关系r的R-S的列,行是对于相同的r中的R-S列中的实体,其相关关系r中的S列在相关关系s的S列都有的行。

比如:
相关关系r的R-S的列就是α、β、γ、δ、ε,
行就是α在r中有1、2,3,都有s中的1、2;β在r中有1、2,都有s中的1、2;γ在r中有1,缺少s中的2;δ在r中有1、3,4,缺少s中的2;ε在r中有1、6,缺少s中的2。
所以只有α、β符合。

  • Π R − S ( r ) \Pi_{R-S}( r ) ΠRS(r)
A
α
β
γ
δ
ε
  • ( Π R − S ( r ) ) × s (\Pi_{R-S}(r)) \times s (ΠRS(r))×s
AB
α1
α2
β1
β2
γ1
γ2
δ1
δ2
ε1
ε2
  • ( Π R − S ( r ) ) × s – Π R ( r ) (\Pi_{R-S}(r)) \times s – \Pi_{R}(r) (ΠRS(r))×sΠR(r)
AB
γ2
δ2
ε1
  • Π R − S ( ( Π R − S ( r ) ) × s – Π R ( r ) ) \Pi_{R-S}((\Pi_{R-S}(r)) \times s – \Pi_{R}(r)) ΠRS((ΠRS(r))×sΠR(r))
A
γ
δ
ε
  • r ÷ s = Π R − S ( r ) – Π R − S ( ( Π R − S ( r ) ) × s – Π R ( r ) ) r \div s = \Pi_{R-S}(r) – \Pi_{R-S}((\Pi_{R-S}(r)) \times s – \Pi_{R}(r)) r÷s=ΠRS(r)ΠRS((ΠRS(r))×sΠR(r))
A
α
β

例子

在这里插入图片描述

(4)assignment:←

t e m p 1 ← Π R − S ( r ) temp1←\Pi_{R-S}(r) temp1ΠRS(r)

3.Extended

(1)generalized projection

格式: Π F 1 , F 2 , . . . , F n ( r ) \Pi_{F1,F2,...,Fn}( r ) ΠF1,F2,...,Fn(r)

一般化投影generalized projection是投影projection的扩展,是带上了算术运算的。
F表示A之间的算术运算,比如F = A1+A2

格式: Π F 1   a s   X , F 2 , . . . , F n ( r ) \Pi_{F1 \ as \ X,F2,...,Fn}( r ) ΠF1 as X,F2,...,Fn(r)

还可以把F1的列起名为X。

例子:

Π c u s t o m e r _ n a m e , ( l i m i t − c r e d i t _ b a l a n c e )   a s   c r e d i t _ a v a i l a b l e ( c r e d i t _ i n f o ) \Pi_{customer\_name, (limit-credit\_balance) \ as \ credit\_available}(credit\_info) Πcustomer_name,(limitcredit_balance) as credit_available(credit_info)
在这里插入图片描述

(2)aggregate functions

格式:

在这里插入图片描述

参数含义理解
EE is any relational-algebra expression相关关系
GG1, G2 …, Gn is a list of attributes on which to group (can be empty)列/属性(分组依据)
FEach Fi is an aggregate function聚合函数
AEach Ai is an attribute name列/属性

aggregate functions

聚合函数含义
avgaverage value
minminimum value
maxmaximum value
sumsum of values
countnumber of values

例子

在这里插入图片描述

在这里插入图片描述

(3)outer join: ⊐ ⋈ \sqsupset \bowtie ⋈ ⊏ \bowtie \sqsubset ⊐ ⋈ ⊏ \sqsupset \bowtie \sqsubset

四大连接格式markdown法则
自然连接(内连接)
natural join(inner join)
⋈ \bowtie $\bowtie$只保留两者都共有的
左连接left outer join ⊐ ⋈ \sqsupset \bowtie $\sqsupset \bowtie$保证左边关系的完整性
右连接right outer join ⋈ ⊏ \bowtie \sqsubset $\bowtie \sqsubset$保证右边关系的完整性
全连接full outer join ⊐ ⋈ ⊏ \sqsupset \bowtie \sqsubset $\sqsupset \bowtie \sqsubset$保证两边关系的完整性

左连接、右连接、全连接都是在自然连接的基础上发展的,对于没有的值,用null值代替。
保证表示左边的相关关系里的共有列里的行都在结果中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、数据库的代数指令(增、删、改)

习题:https://blog.youkuaiyun.com/sandalphon4869/article/details/90516749#_311

1.增insertion

格式: r ← r ∪ E r←r \cup E rrE

2.删deletion

格式: r ← r − E r←r - E rrE

只能删除整个元组(整行);不能只删除特定属性上的值(一行中的某个值)

3.改updating

格式: r ← Π F 1 , F 2 , . . . , F n ( r ) r←\Pi_{F1,F2,...,Fn} (r) rΠF1,F2,...,Fn(r)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值