1.1 数据管理技术的产生和发展
1.1.1 数据处理的基本概念
在讨论数据管理技术之前,先简单介绍一下数据和数据处理的概念。
(1)数据(Data)。数据是对客观事物及其活动的抽象符号表示,是存储在某一种媒体上可以鉴别的符号资料。数据的形式可以是数字、文字、图形、图像、声音,以及学生档案、图书管理和员工的情况等。
例如:两名学生的考试成绩分别为85分和59分,这里85和59就是数据。
(2)信息(Information)。信息是指数据经过加工处理后所获取的有用知识,是以某种数据形式表现的。数据和信息是两个相互联系但又相互区别的概念,数据是信息的具体表现形式,信息是数据所表现的意义。也有人说信息是事物及其属性标识的集合。
例如:某学生看到自己的考试成绩是85分或59分,通过思考判断成绩及格或不及格,这里及格或不及格就是通过对数据85或59处理获取的信息。
(3)数据处理(Data Processing)。数据处理是指对数据进行加工的过程,即将数据转换成信息的过程,是对各种数据进行收集、存储、加工和传播的一系列活动的总和。
例如:编写一个C语言程序,对所输入的学生成绩进行分析判断并输出是否及格。
C源程序:
#include<stdio.h>
main()
{char no[11];int score;
scanf("%s%d",no,&score); /*输入学号与分数*/
if(score>=60) /*如果分数大于等于60分*/
printf("%s:pass!",no); /*输出该学号对应成绩及格*/
else /*否则小于60分*/
printf("%s:fail!",no); /*输出该学号对应成绩不及格*/
getchar();getchar();}
运行该程序,当输入数据85或59时,通过if语句的判断处理将得到及格或不及格的信息。
我们经常应用的Word文字处理、Excel表格处理和Photoshop图像处理等都是对各种数据进行收集、存储、加工的过程,即使用计算机数据处理。
1.1.2 数据管理技术的发展
数据管理是指对各种数据进行分类、组织、编码、存储、检索和维护。数据管理技术经历了人工管理、文件系统和数据库系统三个阶段,并逐步实现网络化、智能化和集成化。
1.人工管理阶段
20世纪50年代中期以前,计算机主要用于科学计算。那时没有存储数据的磁盘等硬件,也没有专门管理数据的软件,数据由计算或处理它的程序自行携带,程序设计依赖于数据表示。
人工管理阶段的特点如下。
数据不能长期保存。
应用程序本身管理数据。
数据不共享。
数据不具有独立性。
2.文件系统阶段
20世纪50年代后期到60年代中期,计算机不仅用于科学计算,还大量用于数据管理。这一时期,不仅出现了磁鼓和磁盘等存储硬件,还出现了高级语言和操作系统等软件。程序和数据有了一定的独立性,并且有了程序文件和数据文件。但此时期的数据文件是为某一特定的应用服务的,修改了数据的逻辑结构就要修改相应的程序,反之亦然。程序设计仍然依赖于数据表示。
文件系统阶段的特点如下。
数据可以长期保存。
由文件系统管理数据。
数据冗余大,共享性差。
数据独立性差。
例如:编写一个C语言程序,建立10名学生的数据文件,已知每个学生的数据包括学号、课程名和成绩。
要求:用键盘输入10名学生的数据,把学生数据写入sdata.dat磁盘文件中。
C源程序:
#include "stdio.h"
struct student
{char num[7]; char course[20];float score;};
struct student st[10];
main()
{FILE *fp;int i;
for(i=0;i<10;i++) /*通过循环输入10名学生的学号、课程名和成绩*/
scanf("%s%s%f",&st[i].num,&st[i].course,&st[i].score);
if((fp=fopen("sdata.dat", "w"))==NULL)
printf("Can not open file sdata.dat");
else
{for(i=0;i<10;i++) /*通过循环将10名学生的学号、课程名和成绩写入文件*/
fwrite(&st[i],sizeof(struct student),1,fp);
close(fp);}}
执行此程序,用键盘输入10名学生的学号、课程名和成绩,即可得到以下数据文件。
sdata.dat
0101001 C++语言 78
0101001 操作系统 62
0102005 电子技术 73
...
对于这个程序,虽然学生的数据能够长期保存,但如果学生的数据结构发生变化,那么程序的相应部分也要进行修改。如果另一个程序也要使用学生的数据,则此程序的设计也必须充分考虑到学生数据文件(sdata.dat)的逻辑结构和物理结构。由于数据文件依赖相应程序,不能完全独立,所以不能为各种应用程序所共享。每个程序使用自己的数据文件必将造成数据冗余和随之带来的数据更新异常,同时依赖于程序的数据文件也不易于反映各数据文件之间的联系。
3.数据库系统阶段
从20世纪60年代后期开始,计算机信息管理的规模越来越大,随着网络的发展,数据共享的需求也日益增加,计算机软硬件功能越来越强,从而发展了数据库技术。特别是关系型数据库技术已经非常成熟,并且广泛地应用于企事业各部门的信息管理中,如事务处理系统、地理信息系统(GIS)、联机分析系统、决策支持系统、企业资源计划(ERP)、数据仓库和数据挖掘系统等都是以数据库技术作为重要支撑的。数据库系统阶段的主要特点如下。
数据结构化:用特定的数据模型来表示事物及事物之间的联系。
数据共享性高:减少数据冗余,减少更新异常。
数据独立性强:程序和数据相对独立。
数据粒度小:粒度单位是记录中的数据项,粒度越小处理速度就越快、越方便。
统一的管理和控制:数据定义、操作和控制由数据库管理系统(Database Management System,DBMS)统一管理和控制。例如,Access、Oracle和SQL Server等数据库管理系统软件。
独立的数据操作界面:DBMS提供管理平台,通过命令或界面(菜单、工具栏、对话框等)对数据库进行访问和处理。
例如:在教务管理数据库“EDUC”中有一个如下所示的选课表“SC”,在各种高级语言的程序中可以嵌入SQL查询语言对其进行数据查询。
SID(学号) CID(课程号) Scores(成绩)
---------- ----------- -----------
2014216001 16020010 96.0
2014216001 16020011 80.0
2014216002 16020010 67.0
2014216003 16020012 78.0
2014216003 16020013 87.0
2014216003 16020014 85.0
2014216111 16020014 89.0
2014216111 16020015 90.0
2015216089 16020010 58.0
执行下面的SQL查询语句,完成成绩在90分以上的学生信息的检索:
SELECT * FROM SC WHERE Scores>=90
查询结果如下:
SID CID Scores
---------- -------- -------
2014216001 16020010 96.0
2014216111 16020015 90.0
执行下面的SQL查询语句,完成成绩不及格的学生信息的检索:
SELECT * FROM SC WHERE Scores<60
查询结果如下:
SID CID Scores
---------- -------- -------
2015216089 16020010 58.0
从以上结果可以看出,查询语句与数据有很好的独立性。
4.数据管理技术的发展
数据、计算机硬件和数据库应用,这三者推动着数据库技术与系统进入数据结构多元化、存储异构化的时代。数据库要管理的数据的复杂度和数据量都在迅速增长;计算机硬件平台的发展仍然遵循着摩尔定律,尤其是互联网的发展,极大地改变了数据库的应用环境,向数据库领域提出了前所未有的技术挑战。这些因素的变化推动着数据库技术的进步,出现了一批新的数据库技术,如Web数据库技术、并行数据库技术、数据仓库与联机分析技术、数据挖掘与商业智能技术、内容管理技术、海量数据管理技术和云计算技术等。限于篇幅,本书不可能逐一展开阐述这些方面的进展,读者可以通过继续学习和实践来体会新技术为数据管理带来的益处。