本节书摘来自异步社区出版社《你不可不知的关系数据库理论》一书中的第1章,第1.1节,作者:【美】C.J.Date,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.1 什么是数据库
数据库被认为是一种电子文件柜,它包含了一些数字化的信息(即数据),这些信息可以被永久保存在某种存储介质上,通常是被保存在磁盘上。用户可以通过管理数据库的软件发出请求(request)或命令(command)来向数据库中插入信息,删除、修改或检索数据库中已经存在的信息,这种管理数据库的软件叫做数据库管理系统(DBMS)。
注意:
在本书中,术语user的含义将根据上下文的要求理解为应用程序员或者是交互用户1或者是应用程序员和交互用户。
实际上,现在这些发给DBMS的用户请求可以采用各种各样的方法进行格式化(例如,单击鼠标)。然而,为了达到我们的目的,采用某种正规语言中的简单文本串的形式来表示这些请求会更方便些。例如,有一个人力资源数据库,我们可能会这样写:
EMP WHERE JOB = 'Programmer'
这个表达式表示了一个检索请求(retrieval request)——但通常我们都称之为查询(query)——这个表达式的含义是要获得员工工作性质为Programmer的员工信息。
可以运行的例子
图1.1给出了某种类型数据库中的一些样本数据,包含供应商表(suppliers)、零件表(parts)、货物表(shipments,即由供应商提供的零件数量)。
从图1.1可以看出,这个数据库包含了三个文件(file)或称之为表(table)。(实际上它们就是关系’[relations],我们将在第2章讲解,但在本章中我们称之为“文件”或者“表”。)这些表的名称分别为S、P和SP。因为它们都是表,所以它们都是由行和列组成的(在传统的文件术语中,行对应为文件中的记录,列对应为字段)。可以按照如下的方式来理解。
表S代表签署了合同的供应商(suppliers under contract)。每个供应商都有一个唯一的供应商号(SNO)、姓名(SNAME)(姓名必须唯一,图1.1中给出的样本数据中姓名唯一只是巧合)、一个状态值(STATUS)、供应商位置(CITY)。注意:在本书的其他位置,“签署了合同的供应商”都缩写为供应商(suppliers)。
表P代表零件的种类(kinds of parts)。每种零件都有一个唯一的零件号码(PNO)、零件名称(PNAME)、零件颜色(COLOR)、零件重量(WEIGHT)、零件储存位置(CITY)。注意:在本书的其他位置,“零件的种类”都缩写为零件(parts)。
表SP代表供应关系(shipments),即表明零件从哪里运输或者由哪个供应商来提供。每个供应关系都有一个供应商号(SNO)、一个零件号(PNO)以及供应数量(QTY)。因为在特定的时间内,一个特定的供应商和特定零件之间至多有一种供应关系,所以由供应商号和零件号组合在一起表示一个唯一的供应关系。
本书中其他地方的例子大多是基于前面提到的这个数据库。现在,你可以再仔细看看前面的这个数据库,我已经在很多其他的书籍和著作中用过,包括SQL and Relational Theory2,在许多现场演讲时也用过,所以你可能会有点厌烦的感觉。但是就像我在别处写的那样,我相信在各种不同的出版物中使用相同的一个例子对学习是有帮助的,而不是障碍。当然,真正的数据库应该比这个像“玩具”一样的例子复杂得多,但是使用接近于实际的例子会遇到的麻烦就是它们太复杂了,在某种程度上会造成只见树木不见森林的结果。所以我还是要说,即使这个例子有点不现实,但供应商和零件表数据库至少适合说明我们后面要测试的所有观点。因而,要达到本书的目的,这个例子足够了。但要注意的是,在本书其余部分的例子中,除非做特殊说明,否则我会假定使用图1.1所示的特定的样本数据。