1.1.1 关系、数据库系统、服务器和客户
数据库(database)就是一个由一批数据构成的有序集合,这个集合通常被保存为一个或多个彼此相关的文件。这些数据被分门别类地存放在一些结构化的数据表(table)里,而数据表之间又往往会形成种种内在的交叉引用关系。存在于数据表之间的这种关系(relation)使数据库又被称为关系(型)数据库。
为了把事情说得更明白,下面来看一个例子。假设某公司有一个由3个数据表构成的数据库,第1个数据表保存着该公司的顾客名单数据(姓名、地址等),第2个数据表保存着该公司的产品数据,第3个数据表保存着该公司的订单数据。在这3个数据表之间建立起必要的关系之后,这家公司的员工就可以通过订单数据表去访问另外两个数据表里的数据了(如通过顾客编号和产品代码)。
MySQL、Oracle、Microsoft SQL Server和IBM DB2都是关系(型)数据库系统(relational database system)。除了数据,一个这样的系统还包括用来管理各种关系数据库的程序。一个合格的关系数据库系统不仅要确保各种数据的存储情况安全可靠,还必须能够处理对现有数据进行查询、分析和排序以及对新数据进行保存等诸多命令。而所有这一切不仅会发生在一台独立运行的计算机上,还有可能发生在网络上。因此,在谈论数据库系统的时候,就不得不经常提到数据库服务器(database server)。
有服务器的地方就应该有客户。连接到数据库系统的每一个程序都可以被称为一个数据库客户(database client)。数据库客户的工作是帮助最终用户简便易行地用好数据库。数据库系统的用户没有一个愿意与数据库服务器直接打交道,因为那么做既过于抽象,又过于麻烦(与数据库服务器直接进行交流的事还是交给程序员们去操心好了)。相反,用户普遍期望——他们也有这个权利——能够通过简便易用的数据表和列表清单框等迅速查找到自己想要的数据或是输入新的数据。
数据库客户的类型各种各样,事实上,有不少用户或许从未意识到自己经常使用的某个程序是一个数据库程序,更不用说什么数据库客户了。这类客户的典型例子包括网上论坛里供人们查阅和发布各种消息的HTML页面、提供多个窗口供人们管理各种地址信息和约会安排信息的程序、用来完成某种系统管理工作的Perl脚本等。数据库程序设计的涉及面实在是太广了。





