当前位置:首页 > 计算机网络 > 数据库 > SQL与关系数据库理论
出版社:清华大学出版社
出版日期:2010-8
ISBN:9787302224006
作者:戴特
页数:400页
章节摘录
插图:视图是为了什么到目前为止,本章都是假设你已经知道视图为的是什么——但是尽管如此我还是想就这个主体说上一些。事实上,视图有两个截然不同的目的:·那些定义视图V什么的用户,显然是知道相应的视图定义表达式x的。因此这个用户可以在任何期望使用表达式x的地方使用名字y,但是这样的用法只是基本缩写,并且明显地这个正在讨论的用户理解这个缩写。·相反,那些仅是被通知嗍实存在以及这个,是可用的用户是被假设(至少理想情况下)不知道这个表达式x的,对于这些用户,事实上,v是被假设成看上去并且感觉像是一个基关系变量,就像我已经详细地解释的那样。并且这是视图的第二个事实上非常重要的用法,这也是本章到目前为止我的焦点所在。逻辑数据独立前面介绍的第二个目的与逻辑数据的独立这个问题密切相关。回忆一下第1章中物理数据上的独立的意思是我们可以改变数据的物理存储的方式并且由用户感觉到的数据的访问方式不需要做相应的改变。因此,相当的足够,逻辑数据的独立意味着我们可以改变数据逻辑上的存储方式并且用户感觉到的数据的访问方式不需要做相应的改变。并且视图被假设用来提供的就是这个逻辑数据的独立。
前言
SQL语言使用非常广泛。但是SQL又是难以使用的:它非常复杂,并且很令人费解,而且更容易出错。为了使你能确信写出的SQL代码是精确的(换句话说,这些SQL代码只做你希望做的事情,不多也不少),因此你就必须遵循适当的规则,这就是本书需要论述的问题,即关系地使用SQL语言就是你需要遵循的规则。但这又意味着什么呢?难道SQL不是相关的吗?当然在关系数据库中,SQL是事实上的标准,但事实上SQL自己并不是相关的。不幸的是,在很多方面SQL都是从关系理论分离开的,如重复的行和空行就是两个明显的例子,但并不是只有这两个例子。其结果就是,就像它给了你一根绳子把你自己捆住一样。因此如果你不想捆住自己,就需要理解关系理论(是什么和为什么);你需要了解SQL是如何从这个理论分离开来的;并且需要了解如何避免可能产生的问题。总之,你需要关系地使用SQL,然后你才能把SQL看作是关系型的那样行事,这样你就能获得它事实上的好处,从而实现一个真正的关系系统。现在,如果每个人都已经关系地使用SQL语言,那么类似于本书这种类型的书就不需要了,但事实上并非如此。相反地,在当前的SQL使用中,我看到了非常多的糟糕的例子。甚至在一些教科书和类似的出版物中,作者所推荐的实践中都存在这样的糟糕的例子,这些作者本应知道得更好;事实上,在这方面对这些文献资料的回顾是非常的令人沮丧的。在1969年,关系模型就首先令人看到了曙光,然而到现在为止,已经过去40年了,在数据库社区,关系模型看上去还是没有被普遍地理解。部分地因为这种原因,所以本书使用关系模型本身作为组织的原则;本书将会深入解释关系模型的各种特性,并且在每一个例子中都会说明如何最好地使用SQL来实现那些令人怀疑的特性。
内容概要
作者:(美国)戴特(Date C.J.) 译者:周成兴 等C.J. Date个独立的作者、演讲者、研究者和技术顾问,其研究领域为关系数据库技术。他最著名的图书“An Introduction to Database Systems”(8th edition,Addison·Wesley,2004)以销售25万多册,被全世界几百所大学用作教材。他还编写了很多数据库管理方面的其他图书:Temporal Data and the Relational Model (Morgan Kaufmann, 2003)Database in Depth: Relational Theory for Practitioners (O'Reilly, 2005)Database, Types, and the Relational Model: The Third Manifesto (3rd edition, Addison-Wesley, 2006)The Relational Database Dictionary (O'Reilly, 2006)Date on O'Reilly, 2005: Writing 2000-2006 (Apress, 2007)Logic and Database: The Roots of Relational Theory (Trafford, 2007)The Relational Database Dictionary, Extended Edition (Apress, 2006)Date于2004年进入了“计算机工业”名人堂。对其评语是,他具有以清晰而易懂的方式阐述复杂技术内容的突出能力。
书籍目录
前言第1章 设置场景 关系模式是非常容易被误解的 一些术语的注释 法则,而不是产品 最初模式的一个回顾 模型和实现 关系的特性 基础关系和产生的关系 关系和关系变量 值和变量 结论 练习第2章 类型与域 类型和关系 等式比较 数据值的原子性 什么是类型 标量和非标量类型 SQL中的标量类型 SQL中的类型检查和强制类型转换 SQL中的一些整序 SQL中的行和表类型 结论 练习第3章 元组与关系、行和表 什么是元组 SQL中的行 什么是关系 关系和它们的关系体 关系是n维的 关系比较 TABLE—DUM和TABLE—DEE SQL中的表 SQL中列的命名 结论 练习第4章 无重复与无空值 重复有什么问题 复行:进一步讨论 在SQL中避免复行 空值有什么错 在SQL中避免空值 对外连接的评论 结论 练习第5章 基本关系变量与基本表 数据定义 更新是集合级别的 关系赋值 更多关于候选键的内容 关于外键更多的讨论 关系变量和断言 关系和类型 练习第6章 SQL与关系代数Ⅰ:原始的操作符 一些预备知识 有关闭包的更多讨论 约束 投影 连接 并、交和差 哪些操作符是原始的 每次都形成表达式的一小步 关系表达式的意思是什么 求一个表表达式的值 表达式转换 属性名字上的依赖 练习第7章 SQL与关系代数Ⅱ:附加的操作符 半连接和半差 扩展 映像关系 除 聚集操作符 映像关系再讨论 概要 概要再论 分组和不分组 what if查询 ORDER BY如何 练习第8章 SQL与约束 类型约束 SQL中的类型约束 数据库约束 SQL中数据库约束 事务 为什么数据库约束的检测必须是实时的 难道某些检测不是不得不被推迟吗 约束和谓词 各种各样的问题 练习第9章 SQL与视图 视图是关系变量 视图和谓词 获取操作 视图和约束 更新操作 视图是为了什么 视图和快照 练习第10章 SQL与逻辑 简单和复合的命题 简单和复合的谓词 定量 关系计算 更多的关于量化 一些等价形式. 结论 练习第11章 使用逻辑来形式化SQL表达式 一些转换规则 例子1:逻辑隐含 例子2:普遍的限定 例子3:隐含和一般的限制 例子4:相关的子查询 例子5:命名子查询 例子6:更多的关于命名子表达式 例子7:处理不确定性 例子8:使用COUNT 例子9:连接查询 例子10:唯一限制 例子11:ALL或者ANY比较 例子12:GROUP BY和HAVING 练习第12章 SQL主体杂项 SELECT 显表 名字限定 范围变量 子查询 “可能的非确定”表达式 空集 SQL表表达式的BNF范式语法 练习附录A 关系模式附录B 数据库设计理论附录C 练习答案附录D 进一步阅读
编辑推荐
《SQL与关系数据库理论》是由清华大学出版社出版的。
作者简介
《SQL与关系数据库理论》内容简介:确保你的SQL代码正确,确保你的数据库模式是健壮且可维护的最好办法,就是理解SQL底层的理论。如果不能很好地精通这个理论,你可能就会陷入到很多陷阱中。在《SQL与关系数据库理论》中,作者C.J. Date阐述了你该如何把关系理沦直接应用到SQL的应用中。通过大量的示例及其背后的推理阐述,你将学会如何处理如下的很多常见难题:
数据库是否应该使用视图而不是基表来访问?
数据库中的Null是否使你得到了错误的答案,为什么?关于Null,你又可以做些什么呢?是否可以编写一个SQL查询,通过这个查询,可以得到在同一个部门中同时工作超过六个月的员工?
SQL支持“量化的比较”,但是最好避免使用它们。
为什么?你又该如何来避免使用它们?约束是非常重要的,但是大部分的SQL一产品都没有恰当地支持它们。为了解决这个问题,你能做些什么呢?
自E.F Codd于1969年首次定义关系模式以来,数据库理论与实践就一直在发展。《SQL与关系数据库理论》独立于任何SQL,产品,描绘了关系数据库理论十几年来的研究进展,为读者介绍了有关关系数据库理论的最新知识。任何具有一定SQL,知识的人都可以从《SQL与关系数据库理论》的很多方面受益。C.J. Date于1970的早期在IBM开始从事数据库方面工作。他是一个多产的作者,其著名的教材是“An Introduction to Database Systems(Addison-Wesley)”,该书被广泛地认为是关于数据库管理基础知识的最好教科书之一。数据库是否应该使用视图而不是基表来访问?数据库中的Null是否使你得到了错误的答案,为什么?关于Null,你又可以做些什么呢?是否可以编写一个SQL查询,通过这个查询,可以得到在同一个部门中同时工作超过六个月的员工?SQL支持“量化的比较”,但是最好避免使用它们。为什么?你又该如何来避免使用它们?约束是非常重要的,但是大部分的SQL一产品都没有恰当地支持它们。为了解决这个问题,你能做些什么呢?
图书封面