第1章 名称与数据元素
1.1 名称
以前,每个程序员都有一套自己的命名规范。但是,他们常常都太有创造性了。我特别喜欢举的一个例子是,有一个人使用某类主题词作为他的COBOL段名:一段程序可能使用**名,另外一段可能使用花卉,等等。即使就程序员而言,这显然也是很奇怪的行为,但是很多程序员的个人命名系统只有他们自己明白,别人都无法理解。
例如,我使用的**个FORTRAN版本只允许6个字母的名称,所以我变得善于使用和发明6个字母的��称。开始编程时使用弱类型或无类型语言的程序员们都喜欢使用匈牙利表示法(参见Leszynski和Reddick)。老的习惯很难放弃。
当软件工程变成规范后,每个公司都制定了自己的命名规范,并使用某种数据字典实施这些规范。使用*广泛的一套规则可能要算是由美国国防部建立的MIL STD8320.1,但它在联邦政府之外却从未流行起来。这与先前缺乏有效组织的体系相比,已经有了很大进步,但是每个公司都有很大的不同:有些对于名称构造有正式的规则,而另外一些则只是将赋予数据元素的**个名称登记一下。
现在,我们有了ISO-11179标准,它正变得越来越普遍,是某些政府工作所需要的,并且正在被放入到数据储存库产品中。一些工具和大量标准化编码方案也被放入到了这个标准中。考虑到这一点,并考虑到XML是一种标准交换格式,ISO-11179在今后将成为元数据参考的方法。 本书不是一本SQL入门书。真的,如果你需要的是学习如何使用SQL进行编程,有其他更好的书。本书应该是你买的第二本书,而不是**本。
本书假设你已经能够编写一定水平的SQL,并且希望进一步提高。如果你想要学习SQL编程技巧,可以买一本我编写的Joe Celko's SQL FOR Smarties(2005年第3版)①。在本书中,我想教给读者的,是如何以逻辑和说明性的方式编程,而不是以过程化或面向对象的方式--也就是要“用查询的思维看数据库”②。
绝大多数sQL程序员都是在有了几年的过程化语言或面向对象语言编程经验之后才开始接触SQL的。他们拿到某个SQL产品,然后只能自学,使用的书都是“sQL forBrain-Dead Morons(SQL傻瓜书)”、“Le锄SQL in ten:Easy Lessons or Five Hard Ones(用10节容易的或5节复杂的课程学会SQL)”或其他更烂的书。
这太荒唐了!成为熟练的木匠或厨师都至少需要5年。为什么你会相信人们在一个**内就能变成SQL高手?他们会变成糟糕的SQL程序员,只会使用本地SQL产品中的方言,并带有他们从前使用的编程语言的浓重口音。你可能需要读一下Peter Norvig写的“Treach Yourself Programming in Ten Years”一文(www.norvig.com/21-days.html)或Fred:Brooks写的“No SilverBullets”(Computer,20(4):10.19,1987年4月),以了解真实情况。
可怕的是这些人常常不知道自己是拙劣的程序员。一个**情况是,整个公司的人都做得很差,他们从来没有见过高手。