1.5 练习
现在到了该做练习的时候了。当然,在本书中的第1章就进行查找练习是不可能的,下面大多数是复习题。尽管如此,我还是建议你们尽力独自去回答问题,而不要去看后面给出的答案。注意,前两个练习似乎有些不公平,因为我还没有�%
1这里仍然指的是计算机专业人员,而不是一个天才的“终端用户”,他可能会合理地忽略掉本书中讨论的大部分内容。
2本书的前言中曾提醒读者,在本书中我将用缩写形式“SQL and Relational Theory”代表我的著作SQL and Relational Theory: How to Write Accurate SQL Code(第二版,O’Reilly, 2012)。
3顺便说一下,虽然物理数据库不如逻辑数据库抽象,但它仍然是经过抽象后形成的。它一般包含很多成分,如存储的文件或索引,这些存储的文件或索引以一种更低级别的方式来表示,如页或磁盘空间。页或磁盘空间相应地又是一些更低级别组成成分的抽象,如二进制位或字节,当然,它们本身也是一种抽象(抽象的级别可以很深,只要你能想像的到)。
4这种极少的情况是很重要的,参见本章后面的练习1.2。
5一个典型的例子,大家几乎可以在Internet上随处看到这样一种现象:“MySQL 是世界上最受欢迎的开源数据库”。但是它不是,它也许是世界上最受欢迎的开源数据库管理系统(我也不太清楚),但不是数据库。
6这要比各种建议中提到的类似定义简单多了(但这种犯错太频繁了,这样说我感到非常抱歉),这是因为有关系模型作为替代(例如:XML、NoSQL、角色模型等)。顺便说一下,我从来没有看见过这样一种建议,即提出这种建议的人真正理解了关系模型。可以肯定的是,如果你想声明技术A不好,需要用技术B替代,那么对于你来说首先理解技术A就是一项义不容辞的职责,尤其是要证明技术B如何解决了特定的问题,而技术A不能解决。
7在本书第一版出版之后,Tutorial D已经修订并扩充了一些内容。修订版本的描述(在本书中我采用的就是修订版)可以在Hugh Darwen和我的另一本书中找到,即Database Explorations: Essays on The Third Manifesto and Related Topics (Trafford, 2010),也可以参见网页:www.thethirdmanifesto.com。
8事实上,是属于一种特定数据类型,除非有类型继承关系,但在本书中是不存在类型继承关系的。注意:类型是不能相交的(至少我们所关心的就是),即没有一个值会同时属于2个或者多个类型。
9这样就会出现一个很明显的问题,即是否还有类似于这样特性的运算符,但它是不是只读的呢?答案当然是肯定的。修改运算符就是在被借用时不返回值,但是修改一些变量。然而,我们将会在后面看到,任何给定的修改运算符的借用在功能上都等价于一个赋值操作。从逻辑上讲,赋值就是我们需要的修改运算符。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。