- 1、本文档共61页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 关系数据模型 2.1 关系定义 2.2 关系运算和关系演算 2.3 函数依赖 2. 4 关系规范化 关系演算 前面,我们说关系模型的操作部分是基于关系代数 的,同样我们也可以说它是基于关系演算的。 换句话说, 关系代数和关系演算是可以相互替代的。 它们之间的基本区别是: 关系代数提供了像连接、并和投影等明确的集合操作 符,并且这些集合操作符告诉系统如何从给定关系构 造所要求的关系;而关系演算仅提供了一种描述 (notation)来说明所要求的关系(这一关系是根据 给定关系导出的)的定义。 例如第13页图1-9所示的关系 SP 和 S。 查询提供零件P2的供应厂的厂名和厂址。 此查询的一个代数操作形式可以描述如下: 首先,根据供应厂号连接供货厂表(关系 S)和供货表(关系 SP)中的元组; 其次,在上述连接结果中选择零件号为P2的元组; 最后,将上述选择结果在供应厂号和厂址列上投影。 相比而言,一个演算形式可以简单地描述为: 查取供应厂号和厂址当且仅当在关系 SP 中存在这样 的一个元组:它具有同样的供应厂号,且它的零件号 取值 P2。 在后一种形式中,用户仅仅描述了所要求结果的定义 而把具体的连接、选择等操作留给了系统。 提示: 关系演算是描述性(descriptive)形式的,而关系代 数是说明性(prescriptive)形式的。 关系演算描述了问题是什么,而关系代数说明了解决 问题的过程。 或者,可以说, 关系代数是过程化的(诚然,是高级的,但仍然是过 程化的);而关系演算是非过程化的。 然而,我们强调的上述区别仅仅是表面上的。实际 上,关系代数和关系演算在逻辑上是等价的。即每一 个代数表达式都有一个等价的演算表达式,每一个演 算表达式都有一个等价的代数表达式。 关系演算举例: 下面给出一些范围变量的例子(用供应商表和零件表为例): RANGEVAR SX RANGES OVER S; RANGEVAR SPX RANGES OVER SP; 1. 找出提供零件 P2 的所有的供应商的信息 SX WHERE EXISTS SPX ( SPX.S# = SX.S# AND SPX.P# = P# ( P2 ) ) 注意此原型元组中范围变量名的使用。这个例子可以写成以下 形式: ( SX.S#, SX.SNAME, SX.STATUS, SX.CITY ) WHERE EXISTS SPX ( SPX.S# = SX.S# AND SPX.P# = P# ( P2 ) ) 关系演算举例: 2. 找出至少供应一个红色零件的供应商名 SX.SNAME WHERE EXISTS SPX ( SX.S# = SPX.S# AND EXISTS PX ( PX.P# = SPX.P# AND EXISTS PX ( PX.P# = SPX.P# AND PX.COLOR = COLOR ( Red ) ) ) 其中, SNAME 厂名 S# 供应厂号 P# 零件号 COLOR 颜色 域演算 域演算不同于元组演算,它是定义在域上而不是定义 在元组上。 下面只给出“找出至少供应一个红色零件的供应商名” 这个例子的域演算的表示: NAMEX WHERE EXISTS SX EXXISTS PX ( S ( S# : SX, SNAME : NAMEX ) AND SP ( S# : SX, P# : PX ) AND P ( P# : PX, COLOR : COLOR ( Red ))) SQL语言 一种给定的关系语言要么基于关系代数,要么基于关 系演算。那么 SQL 语言是基于哪一个呢?很遗憾, SQL 只有部分基于这两者,还有一部分并不基于它们。 下面只给出“找出供应零件 P2 的供应商的名字” 的 SQL 语言表示: SELECT DI
文档评论(0)