《交互式程序设计 第2版》一1.2 关于术语的一些说明

1.2 关于术语的一些说明

在1.1节的关系化问题列表中,你可能意识到我使用了形式化术语“关系”(relation)、“元组”(tuple)及“属性”(attribute)。SQL当然不使用这些术语,取而代之的是更“用户友好的”术语:“表”(table),“行”(row),“列”(column)。只要有助于使知识更易于理解,我通常都会赞同使用更“用户友好的”术语。然而,就当前的情况而言,我(遗憾地)认为它们没有使知识更易于理解,而是曲解了知识并实际上损害了真正理解的形成。真相是,关系并不是表,元组并不是行而属性也并不是列。尽管在某些非正式上下文中对术语的曲解(即关系是表,元组是行而属性是列——译者注)是可被接受的(事实上我自己也经常如此),但是我要说:只有当我们全都理解“用户友好的”术语只是对于真相的近似而不能抓住事实本质时,它才是可接受的。换个说法:如果你确实理解真实情况,那么合理地使用“用户友好的”术语是一个不错的想法,但是如果以学习和领会真实情况为第一要义的话,你需要使用正式的术语。因此,在这本书中,我将会使用正式用语(至少在我讲述与SQL相对的关系模型时会是如此),并在合适的时机为这些正式术语给出精确定义。相反,在SQL上下文中,我会使用SQL的专用术语。
关于术语的另外一点是:尽管我已经说过SQL试图简化一个术语集合,但我必须强调的是,它使另外一个术语集合复杂起来。我指的是SQL对于术语“运算符”(operator)、“函数”(function)、“过程”(procedure)、 “程序”(routine)和“方法”(method)的使用,所有这些本质上代表同一个事物(即使有差别也微乎其微)。在这本书中我会全程使用术语“运算符”;比如,我会明确地将“=”(等值比较)、“:=”(赋值)、“+”(加)、DISTINCT、JOIN、SUM和GROUP BY(等等)都称作运算符。
需要注意的是,说到SQL,请允许我提醒你(如前言所述):除非是在极为有限的几个上下文中,否则本书中的SQL指的都是标准版本的SQL语言。注2
然而:

  • 标准所用的术语有时并不适合使用。此时,我一般会使用我自己的术语。比如,我会使用“表表达式”(table expression)代替SQL标准中的术语“查询表达式”(query expression),这是因为:首先,这种表达式表示的值实际是表而不是查询;其次,查询并不是使用这种表达式涉及的唯一上下文(事实上,SQL标准中确实使用了术语“表表达式”,但是用的很不恰当;具体来说, “表表达式”在标准中用来指代SELECT表达式中SELECT子句后面的部分)。
  • 紧接着上一点,(不论是从我的观点还是从标准的观点出发)在SQL中并不是所有的“表表达式”在其本应合法的所有上下文中都是合法的。尤其是,尽管一个显式JOIN调用肯定表示一个表,但它不能作为独立的(stand alone)表表达式出现(即,不能独自出现在嵌套查询中的最外层),也不能作为构成子查询的括号内部表表达式出现(参见第12章)注3。请注意,这些说明适用于书中很多单独的讨论,但不断地重复这些说明是很乏味的,我也不会那么做(不过,在第12章的BNF语法部分我会再次提及它们)。
  • 我忽略了SQL标准中被认为是晦涩难懂的部分,尤其是那些不是SQL标准所谓的核心SQL部分或是与关系化处理本身无紧密联系的部分。这些内容的具体例子包括:分析或窗口(OLAP)函数,动态SQL,临时表,以及用户自定义类型的细节。
  • 出于某些原因,我使用了不同于SQL标准的注释风格。具体来说,我使用由“/”及“/”分隔符包围的斜体字符串来显示注释。
    不过要注意,所有的SQL数据库产品都包括SQL标准本身不存在的特性。行编号(row ID)就是一个普遍的例子。一般情况下,我对于此类特性的建议是:只要这些特性不违反关系化原则,那么就尽可能地使用(毕竟,我倡导的是SQL的关系化方法)。比如,行编号尤其容易单独违反或同时违反互换性原理(The Principle of Interchangeability,参见第9章)和信息原理(The Information Principle,参见附录A);如果违反了,那么我就肯定不会使用行编号。不过,不管在哪,最高规则是:只要你知道你正在做什么,那么你怎么做都行。
时间: 2024-10-02 16:56:50

《交互式程序设计 第2版》一1.2 关于术语的一些说明的相关文章

《交互式程序设计 第2版》一1.2 交互领域中的编程

1.2 交互领域中的编程 这本书之所以名为<交互式程序设计>,是因为我们主要关注交互设计中要用到的编程知识,也就是用编程的手段,去创造用户能直接与之交互的应用.编程有很多种,其中有些技术和思维方法更适合用于服务器和数据库,而不是交互.而本书集中讨论的东西将是你用来建立用户和应用之间沟通的知识和技能.交互设计中的一大挑战是如何在你设计的作品和用户之间建立真正的交互. 1.2.1 交互的本质 那么,"交互"到底是什么呢?我们可以把它定义为双方或多方之间的信息交换.作家及电子游戏

《交互式程序设计 第2版》一第3章

第3章 使用ProcessingProcessing是较早的开源项目之一,它简化了创建交互式图形应用程序的难度.它就像是艺术家和设计师的专用工具一样,你无需高深的编程技巧,也可以容易地用它进行艺术创作.Processing是完全开源和免费的,你可以下载.使用甚至修改它.最初,麻省理工学院的Casey Reas和Ben Fry在John Maeda的指导下开始这个项目,后来一组开发人员不断更新Processing的内核和工具.现在Processing的最新版本是1.5版译注1,提供的工具支持创建J

《交互式程序设计 第2版》一3.11 小结

3.11 小结 Processing既是一个集成开发环境,也是一门程序设计语言.它们是一体的,可以在processing.org/download上下载.Processing语言是基于Java语言的,但作了简化,以便帮助艺术家和设计师容易地建立可视化样本和交互式应用程序.Processing集成开发环境顶端的工具栏上有几个按钮.单击"Run"按钮可以运行程序:单击"Stop"按钮可以停止应用程序的运行:此外还有"New"."Open&q

《交互式程序设计 第2版》一1.1 本书读者对象

1.1 本书读者对象 本书基于这样一个目标:技术和代码不是计算机科学家和工程师的专用工具,任何人都不需要畏惧或逃避电子技术.硬件和代码.艺术家和设计师可能想知道,如何通过定制的计算机应用程序来更好地实现用户之间以及应用之间的交互.你可能会关心如何创造出富有科技感的应用,这里有两种情况,一种是该应用本身具有突出的科技特性,另一种是看上去很高科技或者使用了一些代表了科技力量的元素,例如键盘.鼠标和触摸屏.你也可能关注交互领域的其他方面,又或者希望把冰冷的技术隐藏于更具生命机理的界面之下.本书会介绍用

《交互式程序设计 第2版》一1.5 数据交换与探索

1.5 数据交换与探索 交互设备的任务.目标和实现其交互的方式都很重要.与之前提到的一样,下面的分类并不是一个交互作品分类的完整清单,只是列举了一些最常见主题,为本书后面的内容提纲挈领一下. 支持数据可视化 我们身处的社会越来越以信息为中心,每天都有大量的数据在处理,数据可视化就变得越来越重要了.结构良好的数据可视化是一种有力的工具,它不仅让用户理解独立的数据点,还让用户明白数据点之间的关系,检测数据模式,甚至重新配置数据,或将其置于新的语境中.数据可视化不是向用户单方面灌输信息,而是通过和用户

《交互式程序设计 第2版》一3.9 导出Processing应用程序

3.9 导出Processing应用程序 如果你想看看应用程序运行情况,想检查代码,那么运行和调试的确很有用.但如果你要把应用程序与某个朋友分享,运行和调试就没有用了,需要做的是导出应用程序.第一步是点击菜单"File"→"Export Application",或者直接按Ctrl + E组合键(Mac OS X下是-E).会弹出如图3-10所示的对话框,让你选择程序将来运行所需的操作系统.如果你单击了Export(导出)按钮,会显示一个对话框,将当前应用程序所在的

《交互式程序设计 第2版》一导读

前 言 本书分三部分.第一部分(第1-6章)介绍贯穿本书的3个项目,第二部分(第7-10章)介绍交互设计和应用程序创作中最普遍的主题,第三部分(第11-17章)深入讨论相关进阶主题.当中还有对相关人士的采访,包括程序员.艺术家.设计师以及工具的开发者.本书涉猎如此广泛,无法对每一个主题进行深入探讨,有兴趣进一步研究的读者不妨参考书中所列出的书目.网站.设计师和艺术家. 本书包括及未包括的内容 当下交互设计领域迅猛发展,观念日新月异,笔者对此的兴奋之情难以言表.受时间和篇幅所限,无法囊括所有的方面

《交互式程序设计 第2版》一2.3.4 运算符

2.3.4 运算符 在程序中,运算符就是编译器用来执行命令和运算的符号,例如"="用来赋值,"=="用来比较等.运算符有三类:一是数学运算符,用于数学运算,就跟数学课上学到的一样:二是赋值运算符,用来改变变量的值:三是比较运算符,比较两个变量是否相等,谁大谁小. 数学运算符的用法就跟一般数学式子里的一样.用"+"可以把两个变量相加,例如: int apples = 5: int moreApples = apples + 3; // moreAp

《交互式程序设计 第2版》一3.4 Processing绘图基础

3.4 Processing绘图基础 因为Processing是为艺术家提供的工具,所以它简化了很多任务,其中最重要的一个任务是绘图.第8章和第9章会介绍利用矢量和位图绘图.第13章将介绍图形库OpenGL(Open Graphics Library)和一些3D(3 Dimension,三维)基础,以及如何创建复杂的绘图系统.在本节,你将学习如何绘制简单的形状和线条,以及如何创建颜色去填充它们. 3.4.1 rect().ellipse()和line()方法 有3个最简单的绘图方法rect().

《交互式程序设计 第2版》一1.2.4 交互语言

1.2.4 交互语言 任何一种交互都需要一套相应的词汇.例如,你要用鼠标把桌面上的某个文件删除,你会说"选中该文件,然后把它拖到回收站".事实上,对你这个动作,系统并不是完全如你这般理解,但没关系.重要的是你明白你可以做什么动作,而对于同一个动作,系统有相同的理解,并作出你所预期的响应.建立一个有意义.有效和有结果的交互,就像创造一种语言或代码,需要交互双方对符号的意思和动作指令的意义有一致的协议.而同一个符号或动作,在不同类型的界面和交互中, 含义会相差很大. 各式各样的交互种类繁多