1.2 数据库技术的相关概念
数据库技术涉及的基本概念有:数据、信息、数据库、数据库管理系统、数据库应用程序、数据库系统、数据模型、数据库模式以及数据库语言等。下面分别介绍这几个概念。
1.2.1 数据和信息
1.数据和信息的概念
日常生活中,大家将数据和信息混为一谈,认为数据就是信息,信息就是数据。这个观点是错误的,信息和数据根本不是一回事。数据和信息的区别,可以用一句话来概括:数据是信息的形式,信息是数据的内容。
(1)数据的概念
如果将客观存在并且可以相互区分的事物称为实体,那么数据是对实体特性的一种记载,这种记载通常表现为符号的记录。
纯粹的数据没有任何意义,需要经过解释才能明确其表达的含义。例如21,当解释其代表人的年龄时就是21岁;当解释其代表商品价格时,就是21元。
(2)信息的概念
将从数据中获得的有意义的内容称为信息。信息和解释不可分,数据的解释是对数据含义的说明,数据的含义称为数据的语义,也就是数据的信息。
例如,对于(姜笑枫,197101,1989,计算机系)这样一个数据集合,其语义可以解释为:姜笑枫,1971年1月生,1989年考入计算机系;还可以解释为:姜笑枫,工号197101,1989年任职于计算机系。
2.数据的静态特征
数据的静态特征指的是数据的基本结构、数据间的联系以及数据的约束。对于学生成绩而言,可以用这三个特征来描述学生成绩信息。
(1)数据的基本结构
对于每一个学生的成绩,既可以用{学号、姓名、性别、专业、班级、数学、外语、计算机}这样的一个集合结构来描述;也可以用{学号、姓名、性别、专业、班级}以及{学号、数学、外语、计算机}这样的两个集合结构来描述。
(2)数据间的联系
如果用{学号、姓名、性别、专业、班级}以及{学号、数学、外语、计算机}这样的两个集合结构来描述学生的成绩,那么第一个集合结构的学号与第二个集合结构的学号必然存在着某种联系。
(3)数据的约束
数据反映的是客观对象的信息,它必然要遵循某些约束。例如对于百分制的课程成绩,学生的成绩必然在0~100分之间;又如,学生的性别只能取“男”或“女”这两个值。
3.数据的动态特征
数据的动态特征包括对数据可以进行的操作以及操作规则。对数据库技术而言,数据的操作主要有查询和更新两大类。查询最常用,例如查询成绩不及格的学生名单;更新又包括插入、删除和修改三项操作,对于一般的数据库应用而言,也是必不可少的。
1.2.2 数据库
数据库(database),顾名思义,就是存放数据的仓库,只是这个仓库是在计算机存储器上建立的,而且仓库中的数据按一定的格式组织并长期存储,提供给用户共同使用。
严格地讲,数据库是长期存储在计算机外部存储器上的有组织的、可共享的数据集合。有组织的数据集合意味着数据的结构化和关联化:结构化表现为数据打包成一个个既定结构的数据对象;关联化表现在数据对象之间的互连性。
图1-2描述了数据库“销售订单”的数据对象及其联系:订单数据库包含sllers、product、Customer、order和orderdetail 5个数据对象;这5个数据对象都有很多属性,例如数据对象product包括商品编号、商品名称、商品价格、商品库存、商品简介和畅销否6个属性;这5个数据对象之间都通过公共属性相互关联,例如数据对象sller和数据对象order通过销售员编号这个公共属性相互关联。
图1-2 数据库的数据结构
数据的组织总是基于某种数据模型的,科学组织的数据可以极大地提高数据的共享度、检索速度和管理效率。数据模型这一内容将在1.2.6小节中介绍。
1.2.3 数据库管理系统
1.数据库管理系统的概念
数据库管理系统(database management system)是一种管理和操纵数据库的软件,英文缩写为DBMS,其主要功能是科学地组织和存储数据、高效地获取和维护数据,在数据库系统中起核心的作用,是用户程序与数据库中数据的接口。
由于DBMS功能复杂,一般由软件供应商开发并授权用户使用。例如Microsoft公司的Access就是微软公司开发的一个DBMS,其他商用的DBMS产品还有Microsoft公司的Visual FoxPro、SQL Server、Oracle公司的Oracle、IBM公司的DB2等。尽管还有其他DBMS产品,但这5种DBMS几乎囊括了所有的市场份额。
2.数据库管理系统的功能
DBMS 的功能主要有:创建数据库、创建表、创建其他支持对象(如索引等),读取数据库数据,插入、更新或删除数据库数据,维护数据库结构,定义和执行约束规则,并发控制,提供数据安全保障等。
(1)DBMS的首要功能是创建数据库、创建数据库中的表和其他辅助结构。例如,创建图1-3所示的数据库“订单”,创建数据库中的数据表order和product。为了提高检索速度,还可以给数据表创建索引等支持结构。
(2)DBMS的第二个功能是读取和修改数据库中的数据。为此,DBMS接收用户或应用程序的请求,并将这些请求转化为对数据库文件的操作。DBMS的第二个功能还包括数据库结构的维护。例如,根据业务变化修改表的结构或改变相关辅助对象的属性等。
(3)DBMS的第三个功能是约束规则的定义和检查。例如,在图1-2所示的订单数据库中,如果用户在order表中提交一张订单,订单中有一个商品的商品编号在product表中没有相应的数据,就会导致错误。为了防止这种错误的发生,用户可以用DBMS制定如下的数据约束规则:order表中商品编号的值必须引用 product 表中商品编号的值,对于 product 表中不存在的商品编号, DBMS应该拒绝含有这样商品编号的订单的插入或更新请求。
(4)DBMS的第四个功能是并发控制,它可以保证一个用户的工作不会干扰另一个用户的工作。另外DBMS具有安全保证功能,它可以保证只有授权用户能对数据库完成得到授权的活动,例如防止用户查看特定数据,又如限制用户操作在指定的范围内。
一般来说,DBMS还应该具有备份数据库和恢复数据库的功能。数据库是数据的集中仓库,是具有相当价值的重要资源,必须采取有效步骤,确保在软硬件故障或自然灾害等事件中没有数据丢失。
1.2.4 数据库应用程序
为了提高数据库的易用性,普通用户对数据库的管理和访问一般通过数据库应用程序作为媒介,而不是直接使用DBMS命令。现在的DBMS都给用户提供了很多应用程序开发工具,如报表设计器、窗体设计器、查询设计器等,它们为数据库应用程序的开发和使用提供了良好的环境和帮助,可提高生产率20~100倍。
数据库应用程序的功能一般包括:窗体的创建和处理、查询的创建和处理、报表的创建和处理等。当然,数据库应用程序的上述功能都是围绕着特定应用的业务逻辑展开的。
1.2.5 数据库系统
数据库系统是在计算机系统中引入数据库后的系统,它是以计算机平台为基础,动态地组织、存储、管理和分析处理数据库数据的软硬件系统。数据库系统的组成如图1-3所示,它包括五个部分:计算机平台、用户、数据库应用程序、数据库管理系统和数据库。
图1-3 数据库系统的组成
在图1-3中,最右边的组成部分是数据库,它是描述实体的数据对象的集合。右数第二个组成部分是数据库管理系统,一般使用它的英文缩写DBMS,这是一个计算机系统软件,一般由软件巨头开发并授权用户使用,它的主要功能是数据库的创建、管理和维护。
数据库应用程序是用户和DBMS间的媒介程序,它通过向DBMS发送请求命令来更新数据库中的数据,也可以通过DBMS检索数据库中的数据,并以友好的形式向用户显示结果。数据库应用程序可以由软件供应商提供,也可以由数据库用户编写。
用户是数据库系统的第四个组成部分,他们一般通过数据库应用程序进行事务管理,当然高级用户也可以直接通过DBMS操纵和管理数据库。
1.2.6 数据模型
对于模型,人们并不陌生。日常生活中所说的模型通常是指某个真实事物按比例缩小的版本,例如航模飞机、地图等,它们与所模拟的真实事物在结构上是相似的,因此,模型是对现实世界中研究对象的模拟和抽象。在日常生活中,模型的一个重要的作用是在制造真实事物之前,花费最少的代价,利用模型对研究对象的结构、性能等进行实验和评估,以降低真实对象的制造风险。
1.数据模型的概念
数据模型是一种用来表达数据的工具模型。在数据库领域,数据模型用于表达现实世界中的对象及其联系,即将现实世界中杂乱的信息用一种规范的、形象化的方式表达出来。
前面说过,数据呈现结构、约束和操作三类特征,相应地,在计算机中表示数据的数据模型应该能够全面地描述数据的数据结构、数据约束和数据操作。尽管数据模型具有结构、约束和操作三方面的要素,但数据模型的结构是最核心的,很多情况下提到的数据模型,指的就是数据对象的数据结构。
数据模型既要面向现实世界,又要面向机器世界,因此需满足三个要求:①能够真实地模拟现实世界;②容易被人们理解;③能够方便地在计算机上实现。
在数据库领域建立数据模型的目的有两个:一个是提高数据库的可研究性,另一个是规避风险,将真实数据的组织、管理和分析处理风险掌握在可控范围中。
2.数据模型的层次
数据描述涉及三个世界:一是现实世界,这是存在于人们头脑之外的客观世界;二是信息世界,这是现实世界在人们头脑中的反映形式;三是机器世界,这是信息世界的信息在机器世界中的数据组织形式。
数据模型是对数据的抽象和模拟,根据不同应用目的,可以将数据模型分为三大类:第一类是概念层数据模型,第二类是组织层数据模型,第三类是物理层数据模型。
(1)概念层数据模型
概念层数据模型,即概念模型,它按用户的观点对现实世界的论域建立模型。概念模型更关注数据的语义,是现实世界的论域在人脑中的模型,属于信息世界的建模。概念模型是面向用户和现实世界的模型,与具体的DBMS无关,不依赖于数据的组织结构。
常用的概念层数据模型有实体-联系模型、语义对象模型等。本书主要应用实体-联系模型进行概念层次的数据建模,这个内容在1.5节中有详细的介绍。
(2)组织层数据模型
数据库中的数据是按一定的逻辑结构存放的,这种结构是用组织层数据模型来表示的。组织层数据模型是基于机器世界的数据库系统视角来建模的,用于DBMS实现,因此与具体的DBMS有很大关系。组织层数据模型,在数据库的设计中,有着非常重要的作用,直接影响数据库中数据的质量和效率。请注意:如果没有特别声明,下文提到数据模型,指的都是组织层数据模型。
(3)物理层数据模型
物理层数据模型是对数据最底层的抽象,描述数据在计算机系统内部的表示方式和存取方法,在计算机外部存储设备上的存储方式和存取方法。
3.组织层数据模型
任何一个数据库管理系统都是基于组织层次的某种数据模型的,数据库技术的发展就是沿着组织层数据模型的主线展开的。迄今为止,比较流行的组织层数据模型有三种:层次数据模型、网状数据模型以及关系数据模型。
(1)层次数据模型
在层次数据模型(hierarchical data model)的数据集合中,各数据对象之间是一种依次的一对一的或一对多的联系。在这种模型中,层次清楚,可沿层次路径存取和访问各个数据对象。层次结构犹如一棵倒置的树,因而也称其为树形结构。图1-4所示即为层次数据模型的数据集合的一个例子。
层次数据模型的特点如下。
? 有且仅有一个根结点,它是一个无父结点的结点。
? 除根结点以外的所有其他结点有且仅有一个父结点。
? 同层次的结点之间没有联系。
层次数据模型的优点是结构简单、层次清晰,并且易于实现。适宜描述类似于行政编制、家族关系及书目章节等信息载体的数据结构。但用层次模型不能直接表示多对多的联系,因而难以实现对复杂数据关系的描述。
(2)网状数据模型
在网状数据模型(network data model)中,各数据对象之间建立的往往是一种层次不清楚的一对一、一对多或多对多的联系,此种结构可用来表示数据间复杂的逻辑关系。图1-5即是一个网状数据模型的例子。
图1-4 层次数据模型举例
图1-5 网状数据模型举例
网状数据模型的特点如下。
? 一个结点可以有多个父结点。
? 可以有一个以上的结点无父结点。
? 两个结点之间可以有多个联系。
网状数据模型的主要优点是在表示数据之间多对多的联系时具有很大的灵活性,但这种灵活性是以数据结构的复杂化为代价的。
事实上,网状数据模型和层次数据模型在本质上是类似的,它们都是用结点表示实体,用连线表示实体之间的联系。在计算机中具体实现时,每一个结点都是一个存储的数据记录,而用链接指针来实现数据记录之间的联系。这种用指针将数据记录联系在一起的方法,很难对整个数据集合进行修改和扩充。
(3)关系数据模型
关系数据模型(relational data model)用二维表表示实体以及实体之间的联系,每一个二维表被称为一个关系。表1-6所示的学生信息就是一个典型的关系数据模型数据结构的例子。
关系数据模型与层次数据模型、网状数据模型的主要区别在于它描述数据的一致性。它把每个数据实体以及实体之间的关系都分别按同一方法描述为一个关系,并且不像后两者那样事先规定实体之间的先后顺序或从属、层次等关系,而是让实体之间彼此独立。
最终,关系数据模型(关系模型)成了计算机人的选择。主要的原因是关系模型具有结构简单、数据独立性高以及提供非过程性标准操纵语言SQL等。关系模型的特征将在1.3节中展开介绍。
表1-6 关系数据模型的数据结构
1.2.7 数据库模式
数据模型是描述数据的一种工具,而数据库模式是使用具体的数据模型工具描述的数据库中全体数据的逻辑结构和完整性约束。需要提醒大家的是,描述数据库模式的模型工具一般都是组织层数据模型。
关于数据库模式,在特定的上下文,还有狭义和广义之分。狭义的数据库模式,仅仅指数据库中数据的逻辑结构;而广义的数据库模式,除了数据库的逻辑结构、完整性约束以外,还包括数据库的数据操作。
说到数据库模式,还要提一提数据库的用户模式和存储模式。用户模式一般是数据库模式的一个子集,是用户能够看到和使用的数据库中的局部数据结构。存储模式是数据库在计算机中的数据物理结构和存放方式的描述。
尽管一个数据库只能有一个数据库模式,但基于数据库模式可以定义多个数据库的用户模式,以满足不同用户的需求。另外,数据库只能有一个存储模式。下文将基于关系数据模型构建关系数据库的模式,这方面的内容请参看1.4节。
1.2.8 数据库语言
前面介绍了数据库模式的结构、操作和约束,那么怎样在数据库中定义数据的结构和完整性约束呢?又怎样来描述数据操作呢?这就需要开发一种语言,它至少满足以下两个条件:首先功能必须是强大的,必须支持数据库系统的数据模型;其次可用性必须是很高的,必须是通用的、简洁的、易用的。只有满足这两个条件,数据库用户才能够接受这种语言,并使用它定义和操纵数据库。
对于数据库技术来说,开发这样一种语言,是一个至关重要的问题,说它关系到数据库技术的生死存亡也不为过,因此一度出现了很多种语言。
随着时间的流逝,其中一种语言——SQL,成为了数据库用户的选择。SQL,是 Structured Query Language的缩略词,中文名称是结构化查询语言或结构查询语言,它的主要功能是关系数据库的定义和操纵,之所以关系数据库能够风靡一时,SQL发挥了重要的作用。
今天,SQL已成为国际标准。使用SQL,可以轻松地定义关系数据库中数据表的数据结构和完整性约束,可以灵活地操纵数据表中的数据。这部分内容将在第6章重点介绍。