关系模型中的运算
πproducerC#(Movie) πcert#(MovieExec) πproducerC#(Movie) -πcert#(MovieExec)=0
参照完整性约束——例
影星只能于存在的Movie中出演角色
Movie(title,year,length,incolor,studioName,producerC#) starsIn(movieTitle,movieYear,starName)
关系代数
关系代数的运算
普通的集合运算
并、交、差 选择、投影 连接、积
删除部分关系的运算
合并两个关系元组的运算
改名运算
关系代数 — 并Union (∪)
R和S的并,R∪S,是在R或S或两者中 的元素的集合 一个元素在并集中只出现一次 R和S必须同类型(属性集相同、次序相 同,但属性名可以不同)
π
(
σ
stu.sno=‘95001’
ρ (student) (ρ (student))))
s stu
s.sage > stu.sage
关系代数—查询中的复合运算
例:找出比‘95001’年龄大的学生的学 号和姓名、年龄(与前例的结果有何差异?)
π
σ (ρ (student))×(ρ
s.sno,s.sname,s.sage( s
关系代数—投影Projection(π)
从关系R中选择若干属性组成新的关系 πA1,A2,…,An(R),表示从R中选择属性集 A1,A2,…,An组成新的关系 列的运算 投影运算的结果中,也要去除可能的重复 元组 例: πssex,sage(student) ?
关系代数—选择Selection(σ)
用关系代数作为约束语言
用关系代数可以表达约束 R = 0; R 0 R S;R-S = 0
参照完整性约束
如果对象(实体)A与对象(实体)B相关, 那么B必须存在 如果一个关系R的一个元组有个分量值为v, 那么期望v将出现在另一个关系S的某个元 组的特定分量中
πv(R) πv(S)
关系代数 — 交Intersect (∩)
R和S的交,R∩S,是在R和S中都存在 的元素的集合 一个元素在交集中只出现一次 R和S必须同类型(属性集相同、次序相 同,但属性名可以不同)
关系代数 — 差Minus (-)
R和S的差,R-S,是在R中而不在S中的 元素的集合 R和S必须同类型(属性集相同、次序相 同,但属性名可以不同)
关系代数—右外连接
与左外连接对称 例:列出行政长官的从影情况(是长官,可 能不是影星) MovieStar MovieExec
关系代数—全外连接
左外连接与右外连接的合成 例:列出所有行政长官和所有影星的关系 MovieStar MovieExec
§4.5 对关系的约束
关系数据模型 数据结构 关系操作 关系的完整性约束 实体完整性 参照完整性 用户定义的完整性
参照完整性约束——例
Movie关系中,每部电影的制片人必须出现在 MovieExec关系中
Movie(title,year,length,incolor,studioName,producerC#) MoiveExec(name,address,cert#,networth) 每个Movie元组的producerC#分量必须出现在 MovieExec元组的cert#分量中
关系代数—改名(ρ)
对关系R实施改名运算,可显式地改变关 系名及属性名
将关系R改名为S:ρs(R) 将关系R(B1,B2,…,Bn)改名 S(A1,A2,…,An):ρ
S(A1,A2,…,An)(R)
关系代数—查询中的复合运算
例:找出比‘95001’年龄大的学生的 学号和姓名、年龄
s.sno,s.sname,s.sage(
从关系R中选择符合条件的元组构成新的 关系 σC(R),表示从R中选择满足条件(使逻辑 表达式C为真)的元组 行的运算 例: σsage >= 23 AND sdep = ‘CS’(student) ? 例:列出CS系的学号及姓名
πsno,sname(σsdep = ‘CS’(student) )
)
从R×S的结果集中,选取在某些公共属 性上具有相同值的元组,组成新的关系 R、S的公共属性 属性集的交集(名称及类型相同) 公共属性在结果中只出现一次 等值连接 例: student sc (注意sno的命名)
关系代数—条件连接(θ)
从R×S的结果集中,选取在指定的属性 集上满足θ条件的元组,组成新的关系 θ是一个关于属性集的逻辑表达式 R CS
stu.sno=‘95001’ and s.sage > stu.sage stu(student)))
关系代数—外连接
是连接运算的扩展,可以处理缺失信息 保留非匹配元组 外连接
左外连接 右外连接 全外连接
关系代数—左外连接
取出左侧关系中所有与右侧关系的任一元组 都不匹配的元组,用空值填充所有来自右侧 关系的属性,再把产生的元组加到自然连接 的结果上 例:列出影星的当官情况(是影星,可能不 是官) MovieStar MovieExec
关系代数—笛卡பைடு நூலகம்积(×)
关系R、S的笛卡儿积是两个关系的元组 对的集合所组成的新关系 R× S : 属性是R和S的组合(有重复) 元组是R和S所有元组的可能组合 是R、S的无条件连接,使任意两个关 系的信息能组合在一起 例: student ×sc (注意sno的命名)
关系代数—自然连接(
第四章 关系模型中的运算
Operations In The Relational Model
概述
数据库的核心应用是数据库的查询 查询语言
用户用来从数据库中请求获取信息的语言 关系代数是过程化的查询语言 关系代数是一种抽象的查询语言
§4.1 关系代数
运算对象:关系 运算结果:关系
πmovieTitle,movieYear(starsIn) πtitle,year(Movie)