在此,如果您对数据库不熟悉,可能还不能肯定是否需要一个数据库或是否能够使用一 个数据库。或者,如果您对MySQL或SQL 一无所知,需要一种入门性的指导,那么应该仔 细阅读本章。对MySQL或对数据库系统具有一定经验的读者可能希望跳过这一章。但是, 不管是否是初学者都应该阅读1. 2节“一个样例数据库”,因为这一节中给出的数据库是熟悉 数据库的用途和内容的一个最好的样例,本书将要反复地用到它。
1.1MySQL的用途
本节介绍MySQL的应用场合。提供MySQL能够做什么,以何种方式做的一个大致的概 念。如果您不需要了解数据库的用途,或许您已经在头脑中有了要解决什么问题的想法,只 是希望知道怎样用MySQL来帮助解决它,那么可以跳到1.2 节“一个样例数据库”。 数据库系统本质上是一种用来管理信息列表的手段。这些信息可来自不同的地方。例如, 它可以代表研究数据、业务记录、顾客请求、运动数据统计、销售报告、个人爱好信息、人 事记录、问题报告或学生成绩等。虽然数据库系统能够处理广泛的信息,但您不会仅仅只是 为用它而用它。如果一项工作很容易,那么就没有理由非得仅为了使用数据库而将数据库引 入这项工作。杂货单就是一个很好的例子:开列一个购物清单,购买后在上面画叉,然后将 它扔了,极不可能为此事使用一个数据库。即使您有一台便携式电脑,也只会为杂货单使用 记事本,而不会启用数据库。
数据库系统的力量只在组织和管理的信息很庞大或很复杂,用手工处理极为繁重时才能 显示出来。当然,每天处理数百万个业务的大公司可以使用数据库。但是,即使只涉及个人 爱好的单一人员维护信息的小公司也可能会需要数据库。不难想像由于在信息变得难于管理 之前,使用了数据库而带来的好处。考虑下列情形:
■ 您的木工店有几个员工。需要保存员工和工资记录,以便知道给谁付过工资,什么时 候付的,并且必须对这些记录进行汇总以便能向税务部门报收益表。还需要明了您的 公司雇人所做的工作以及对每项工作所做的安排。
■ 您有一个汽车零部件的库房网,需要知道哪些库房中有给定的零件,以便能填写顾客 订单。
■ 作为玩具销售商,要特别关注所进货物是否流行。需要知道某项物品的当前销售曲线, 以便能够估计是否需要增加库存量(对越来越流行的物品),或减少其库存量(从而用 不着存放一大堆销售不好的东西)。
■ 多年课题研究收集的大量研究数据需要进行分析以便发表。希望对大量的原始数据进 行加工,得出结论性的信息,并为更详细的统计分析筛选出观察样本子集。
■ 您是位受欢迎的演讲者,到全国各地的各种集会上进行演讲,如在毕业典礼、商务会 议、城市集会和行政大会上进行讲演。作了这么多讲演,自己很难记住在什么地方讲 了些什么,因此一定很愿意保存过去讲演的记录,以帮助准备以后的演说。如果您回 到了一个以前曾作过演说的地方,肯定不愿意作一个与上一次类似的演讲,到过的地 方都有一个记录能帮助您避免重复。您必定也愿意注意讲演受欢迎的程度。(您在“大 都会狗窝”俱乐部所做的演讲“我为什么喜欢猫”不太成功,那么下次去那儿时一定 不希望再犯同样的错误。)
■ 您是个教师,需要知道学分和出勤情况。每当您进行测验或考试时,都要记录学生们 的学分。将考试成绩写在学分簿上很容易,但以后利用这个学分簿却很费事。因此, 在学期未确定最终成绩时,您宁可不进行学分排序,而且宁可不汇总每个学生的学分。 要统计出每个学生的缺旷课情况也不是一件简单的事。
■ 您是某机构的秘书,这个机构有一个庞大的会员姓名地址簿。(所谓机构可以是任何组 织,如一个专业团体、俱乐部、交响乐团或球迷俱乐部等。)您每年都要根据会员信息 变化,用字处理器进行编辑,然后为每个会员们打印一个地址名录。 您厌倦了以这种方式维护这个地址簿,因为它限止了您利用它可做的事。用它难于以不 同的方式对各条目排序,不能方便地选择每个条目的特定部分(如给出仅由姓名和电话号码 组成的清单)。也不能查出某组会员,如那些不久就需要更新其会员资格的人员,如果可能的 话,应该取消为了找到哪些需要发送补充说明的会员而每个月都要查找所有条目的工作。 而且,您一定不愿意自己做地址簿的编辑工作,但是团体没有那么多的预算,请人会产 生问题。您听说过“无纸化办公”,这是一种导致电子化保存记录的方法,但您没有看到任何 好处。现在会员记录是电子化的,但具有讽刺意义的是,除了地址簿的打印外,没省多少事。 上述情形中有的涉及信息量较大,有的涉及信息量较小。它们的共同特征都是所涉及的 任务可由手工完成,但是用数据库系统来做会有效得多。 使用如像MySQL这样的数据库系统希望看到什么样的效果呢?这有赖于您的特定需求, 正如上面的例中所看到的那样,其效果的差异是相当大的。我们来考虑一种常见的情形,从 而也是一种相当有代表性的数据库应用。 通常利用数据库管理系统来处理诸如人们用文件柜来完成的那样一类的任务。确实在某 种意义上说,数据库就像一个大文件柜,只不过是一个内建的文件编排系统而已。电子化处 理记录相对手工处理记录有很多优点。例如,如果您在某种保存有客户记录的办公设施内工 作,那么MySQL可在某些方面向您提供帮助:
■ 减少记录编档时间。不必为寻找增加新记录的位置而查看橱柜的所有抽屉。只要将记 录放入文件编排系统,并令文件编排系统为您将该记录放入正确的位置即可。
■ 减少记录检索时间。在查找记录时,不需要自己去寻看每个记录以找到含有所需信息 的那个记录。假如您在一个牙科诊所中工作。如果想给所有近来未到诊断做过检查的 病人发催询单,只需要求文件编排系统查找合适的记录即可。当然,这样做会有别于 吩咐别人去做。吩咐别人去做,您只需说,“请确定哪些病人最近6 个月内没来过。”
而使用数据库,则需要发出一串奇怪的“咒语”:
SELECT last_name,first_name,last_visit FROM patient
WHERE last_visit
■ 灵活的查找序列。不需要按记录存放的固定序列去查看它们(例如,按姓查找)。可以要求文件编排系统以任意的序列查出记录;如按姓、保险公司名、最后光临日期等提出记录。
■ 灵活的输出格式。在查找到感兴趣的记录后,不需要手工拷贝其信息。可以让文件编排系统为您生成一份清单。有时,您可能只需要打印这些信息。有时,您又可能希望在其他程序中使用这些信息。(如,在生成误了看牙预约的病人清单后,可将这些信息送入一个字处理器,打出送给这些病人的通知单。)或者您只对汇总信息感兴趣,如对所选出记录数感兴趣。不必自己数它们;文件编排系统可自动生成汇总。
■ 多个用户同时访问记录。对纸上的记录,如果两个人想同时查找一个记录,那么其中一个人必须等另一个人找完才能查找。MySQL提供多个用户同时查找的能力,从而两个人可同时访问记录。
■ 记录的远程访问与电子传输。纸面记录需要有该记录在手边才能使用,或者需要有人做拷贝再发送给您。而电子记录可以远程访问或进行电子化传输。如果您的牙医专家在多个诊所工作,那么他们可从自己的所在地访问您的记录,不需要给他们发快信。如果需要记录的某个人没有与您的数据库软件相同的软件,但有电子邮件,那么您可以选择所需的记录,用电子文档发送。
如果您以前使用过数据库管理系统,已经了解数据库的上述诸般好处,可能会想,怎样才能超越“取代文件柜”的用途。现在,数据库系统已经可以用来提供过去不能,直到最近才能够提供的服务。例如,许多机构以一种与Web 结合的方式使用数据库,这种方式过去是做不到的。
假如您的公司有一个库存数据库,在顾客询问库房中是否有某项物品,它的价格是多少时,服务台人员使用这个数据库,这是数据库的一种较为传统的应用。但是,如果您的公司向顾客提供一个可供访问的Web 站点,那么可以提供另一项服务,即:提供一个允许顾客确定物品价格和可得性的搜索页。这给顾客提供了他们所需的信息,提供的方法是让顾客自动地搜索存放在库存中的物品信息。顾客可以立即得到信息,不用听预先录好的音,或受服务台是否正在工作的限制。对于每个使用您的Web 站点的顾客,所花的费用比服务台工作人员转接电话的费用还少。(或许,该Web 站点已为这个付了费。)
还有比上述更好的利用数据库的方法。基于Web的库存查询请求可以不仅仅为顾客提供信息,而且还可以为您自己提供信息。该查询请求告诉您顾客在找什么,而查询的结果又可以让您知道能否满足他们的请求。您可能会在不能满足顾客需求的方面丧失商机。因此,记录有关库存搜索的信息是很有意义的,如记录:顾客在找什么、库存有没有。然后,可以利用这些信息调整您的库存,更好地为顾客提供服务。
数据库的另一新用途是在Web 页上做标题广告。我也和您一样不喜欢它们,但事实是这是一种很流行的MySQL应用,可用MySQL来存储广告,然后检索它们为Web服务器的显示而用。此外,MySQL还可以用来进行跟踪,这种跟踪涉及哪些广告起了作用、它们被显示了多少次、哪个站点访问了它们等等信息。
因此,知道如何利用MySQL最好的办法是自己试试,为此目的您应该有一个试验性的数据库。