- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
元组关系演算的语义研究
元组关系演算的语义研究
王小兵
西安电子科技大学计算机学院,陕西西安 (710071)
E-mail :xbwang@
摘 要:针对一些文献存在的问题,规范了特性谓词在元组关系演算中的表达形式,研究了
完整性约束及空值对元组关系演算语义的影响,并通过实例加以说明。
关键词: 元组关系演算,特性谓词,完整性约束,空值
中图分类号: TP311 文献标识码: A
1. 引言
20 世纪60 年代诞生的数据库技术,经过近半个世纪的发展,形成了坚实的理论基础、
成熟的商业产品和广泛的应用领域。E.F Codd 提出的关系数据模型为当今主流的数据库管
理系统提供了坚实的数学基础。关系数据模型有三种等价的操作语言:关系代数、SQL、
关系演算,它们的非过程化程度依次递增,主要应用领域也不同。对于用户提出的查询要
求,需要由专业人员书写 SQL 语句并执行得到结果。有一些复杂的查询,不易直接写出
SQL 语句,此时可求助于元组关系演算,大致过程为:先写出查询的元组关系演算表达式;
再根据等价转化规则得到不含全称量词∀的元组关系演算表达式;最后将元组关系演算表
达式转化为 SQL 语句。不过,元组关系演算的抽象性和非过程性,产生了一些问题[1] [2]
[3] 。对于这些问题,笔者进行了深入细致的分析,希望有助于人们对元组关系演算的学习
和使用。
2. 元组关系演算
元组关系演算是关系演算的一种,是以数理逻辑中的谓词演算为基础的。文献[2] 分
析元组关系演算的运行机制,介绍了一种易于正确理解和设计元组关系演算表达式的方法,
并通过实例揭示了它与SQL 之间的密切联系。经过仔细分析,笔者发现有一些问题值得商
榷。
下面以[2] 中“学生选修课程”这一数据库模式为例。该数据库模式包含三个基本表:
S 表示学生基本情况,结构为S(s# , sn , age, sex),各属性分别表示学号、学生姓名、年龄、
性别;C 表示课程基本情况,结构为C(c#, cn, tn),各属性分别表示课程编号、课程名称、
任课教师姓名;SC 表示学生选课情况,结构为SC(s#, c#, g),各属性分别表示学号、课程
编号和成绩。
[2] 提出查询,要求检索Wang 同学不学的课程的编号。在分析该查询的语义后,给
出了三种不同的方案,分别用元组关系演算表达式(1)、(2)、(3)来表示。由于SQL 只有与
存在量词∃对应的EXISTS 谓词,因而使用谓词逻辑中全称量词∀和存在量词∃之间的等
价转化公式,分别得到不包含∀的元组演算表达式(4)、(5)、(6),最后以此为依据写出三种
不同形式的SQL 语句。
{t[c#]|C(t)∧w(SC(w)∧t[c#]≠w[c#] ∨v(S(v)∧w[s#]=v[s#] ∧v[sn]≠Wang))} (1)
{t[c#]|C(t)∧w(SC(w)∧t[c#]≠w[c#] ∨v(S(v)∧(v[sn]≠Wang∨w[s#]≠v[s#])))} (2)
{t[c#]|C(t)∧v(S(v)∧(v[sn]≠Wang∨w(SC(w)∧(w[s#]≠v[s#] ∨t[c#]≠w[c#]))))} (3)
{t[c#]|C(t)∧¬w(SC(w)∧t[c#]=w[c#] ∧¬v(S(v)∧w[s#]=v[s#] ∧v[sn]≠Wang))} (4)
-1-
{t[c#]|C(t)∧¬w(SC(w)∧t[c#]=w[c#] ∧v(S(v)∧(v[sn]=Wang ∧[s#]=v[s#])))} (5)
{t[c#]|C(t)∧¬v(S(v)∧(v[sn]=Wang ∧w(SC(w)∧(w[s#]=v[s#] ∧t[c#]=w[c#]))))} (6)
通过仔细分析,发现式(1)
原创力文档


文档评论(0)