数据库2, 6 关系模型

1.primary key:要求元组中不能出现相同的主键

2.foreign key:当r的主键是s的属性B,则B是s的外键。

外键是别人的主键。

B中的值必须从s的主键中选取。

relation algebra

1.select: σ 条件 ( 表 ) \sigma_{条件}(表) σ条件(),从表中选取符合条件的元组

使用 ∧ \wedge ∨ \vee 增加条件

2.projection : Π 属性 1 , 属性 2... ( 表 ) \Pi_{属性1,属性2...}(表) Π属性1,属性2...(),输出不相同的元组。(注意不是多个属性值),

出现all of 的时候用

3.Union A ∪ B A\cup B AB,将表连接起来扩展行,A,B必须有相同的属性。

4.difference: A − B A-B AB,在A中不在B中的元组

5.Cartensian-product: A × B A\times B A×B,输出A和B的笛卡尔积,扩展后名称相同的元素被重命名为s.A,t.A,注意每一行都会被匹配一次,一共m*n行

一般外面套一个select做两张表的列扩展

6.rename: ρ x ( E ) \rho_x(E) ρx(E),将表E重命名为x,另外E的属性也可以重命名。

7.natural join: A ⋈ B A\Join B AB,将A和B做笛卡尔积,将相同属性属性值相同的元组连接在一起列扩展,注意结果中只有一个相同属性名

如果A和B没有共同属性名,则做笛卡尔积

自然连接是对称的,因此从左到右算也行,从右往左也行。

使用 r ⋈ θ s r\Join_\theta s rθs表示仅按照 θ \theta θ条件进行连接,和 σ θ ( r × s ) \sigma_\theta(r\times s) σθ(r×s)相同

8.赋值: t e m p ← s × r temp\leftarrow s\times r temps×r,将这个表赋值给temps

9.outer left/right join,将左侧或者右侧的表在natural join中未出现的添加入结果,只在两张表元组个数不一样时有用,针对元组个数多的那张表有用。

10.聚集函数, G s u m ( A ) ( r ) G_{sum(A)}(r) Gsum(A)(r),返回r表中A属性值的和,还有avg,max,min,count,count-distinct

在前面加入属性值,比如 B G s u m ( A ) r BG_{sum(A)}r BGsum(A)r表示按照B分组,返回A属性的和。

常见操作:

1.连接:比如按照A属性相同的s和r连接起来。
σ s . A = r . A ( s × B ) \sigma_{s.A=r.A}(s\times B) σs.A=r.A(s×B)

2.对自身的两个属性进行判断,需要用的笛卡尔积和重命名。

3.选s中属性A属性值最大的元组(或是该元组的其他的属性值):

1.首先找到其补集,如果不满足就挑选入补集。

Π s . A ( σ s . A < r . A ( s × ρ r ( s ) ) ) \Pi_{s.A}(\sigma_{s.A<r.A}(s\times\rho_r(s))) Πs.A(σs.A<r.A(s×ρr(s)))

2.将原来的表的集合该属性值的集合减去其补集:

Π A ( s ) − Π s . A ( σ s . A < r . A ( s × ρ r ( s ) ) ) \Pi_A(s)-\Pi_{s.A}(\sigma_{s.A<r.A}(s\times\rho_r(s))) ΠA(s)Πs.A(σs.A<r.A(s×ρr(s)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值