二、Relational Model 相关模型的运算

    xiaoxiao2022-07-03  114

    文章目录

    一、相关数据库(Relational Database)的结构1.行、列、表2.null值(1)定义(2)谓词(3)运算 3.unknown值(1)逻辑与、或、非(2)谓词(3)select 4.键5.完整性约束 二、相关关系的代数指令(查)0.总结1.Fundamental(1)select:σ(2)project: $\Pi$(3)union: ∪(4)set difference: −(5)cartesian product: X(6)rename: $\rho$(7)组合操作的例子 2.Additional(1)set-intersection:∩(2)natural join(inner join):⋈(3)division:÷(4)assignment:← 3.Extended(1)generalized projection(2)aggregate functions(3)outer join:$\sqsupset \bowtie$、$\bowtie \sqsubset$、$\sqsupset \bowtie \sqsubset$ 三、数据库的代数指令(增、删、改)1.增insertion2.删deletion3.改updating


    一、相关数据库(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.csdn.net/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 valueminminimum valuemaxmaximum valuesumsum of valuescountnumber 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 valueminminimum valuemaxmaximum valuesumsum of valuescountnumber 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.csdn.net/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)

    最新回复(0)