1.1 数据库基础知识
本节主要从一些常用术语和基本概念出发,介绍数据库的基础知识。
1.1.1 信息、数据与数据处理
1.信息(Information)
信息是指现实世界事物的存在方式或运动状态的反映。信息具有可感知、可存储、可加工、可传递和可再生等自然属性,信息也是各行各业不可缺少的资源,这是它的社会属性。
2.数据(Data)
数据是数据库中存储的基本对象,是描述事物的符号记录。描述事物的符号可以是数字,也可以是文字、图形、声音、语言等。数据有多种表现形式,但它们数字化后都可以存入计算机中。
在现实世界中,人们为了交流信息,了解世界,需要对现实世界中的事物进行描述,例如利用自然语言描述一个学生:“张三是一个2006年入学的男大学生,1987年出生,河北人。”在计算机世界里,为了存储和处理现实世界中的事物,就要抽象出感兴趣的事物特征,组成一个记录来描述该事物。例如,用户对学生最感兴趣的是学生的姓名、性别、出生日期、籍贯、入学时间等,那么在计算机里就可以这样描述:
(张三,男,1987,河北,2006)
这里描述学生的记录就是数据。
3.数据解释(Data Explain)
在计算机世界里,描述学生的一条记录(张三,男,1987,河北,2006),知道它的含义的人会得到如下信息:张三是一名大学生,男,1987年出生,河北人,2006年入学。而不了解其含义的人,就会得不到如上的信息。可见数据的形式还不能完全表达其内容,还需要数据的解释,所以数据与数据的解释是不可分的。
数据的解释是指对数据语义的说明,数据的语义就是数据承载的信息。数据与数据承载的信息是不可分的,数据是信息的载体,是符号表示;信息是数据的内容,是数据的语义解释。
4.数据处理(Data Handle)
数据的处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。数据的管理是指对数据进行的分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。
1.1.2 数据管理技术的发展
数据库技术是应数据管理的需求而产生的。最初的计算机主要是进行复杂的科学计算,随着计算机及其应用的发展,人们开始借助计算机进行数据处理。数据处理技术经历了人工管理、文件系统、数据库系统三个阶段。
1.人工管理阶段
人工管理阶段是指20世纪50年代中期以前的阶段。当时的计算机主要用于科学计算。只有纸带、卡片、磁带,没有大容量的外存;没有操作系统和数据管理软件;数据处理方式是批处理。人工管理阶段的特点是:
(1)数据不长期保存在计算机里,用完就撤走。
(2)应用程序管理数据,数据与程序结合在一起。
(3)数据不共享,数据是面向应用的,一个程序对应一组数据。
(4)数据不具有独立性。
2.文件系统阶段
文件系统阶段是指20世纪50年代后期到60年代中期这一阶段。在这一阶段,由于计算机硬件有了磁盘、磁鼓等直接存取设备;软件有了操作系统,数据管理软件;计算机应用扩展到了数据处理方面。这一阶段的特点是:
(1)数据以文件的形式长期保存在计算机里。
(2)操作系统的文件管理提供了对数据的输入和输出管理。
(3)数据可以共享,一个数据文件可以被多个应用程序使用。
(4)数据文件之间彼此孤立,不能反映数据之间的联系,存在数据的大量冗余。
3.数据库系统阶段
数据库系统阶段从20世纪60年代后期开始,随着计算机硬件与软件技术的发展,计算机用于管理的规模越来越大,文件系统作为数据管理手段已经不能满足应用的需要,为了解决多用户、多应用程序共享数据的需求,人们开始了对数据组织方法的研究,并开发了对数据进行统一管理和控制的数据库管理系统,在计算机这一领域逐步形成了数据库技术这一独立的分支。与人工管理阶段相比数据库系统的特点是:
(1)数据结构化。
(2)数据的共享性高,冗余度低、易扩充。
(3)数据独立性高。
(4)数据由DBMS统一管理和控制。
1.1.3 数据库、数据库管理系统、数据库系统
1.数据库
通俗地讲,数据库(Data Base)是存放数据的仓库。可以借助存放货物的仓库来理解数据库,只不过这些货物是数据,这个仓库是建立在计算机上的。严格的定义:数据库是长期存储在计算机内的、有组织的、可共享的数据集合。这种集合具有如下特点:
(1)数据库中的数据按一定的数据模型组织、描述和存储。
(2)具有较小的冗余度。
(3)具有较高的数据独立性和易扩充性。
(4)为各种用户共享。
2.数据库管理系统
数据库管理系统(Data Base Management System,DBMS)是位于用户与操作系统之间的一层数据管理软件,例如SQL Server 2008就是一个DBMS。数据库管理系统完成数据的组织、存储、维护、获取等任务,具有如下功能。
(1)数据定义功能。用户可以通过DBMS提供的数据定义语言(Data Definition Language,DLL)方便地对数据库中的对象进行定义。
(2)数据操纵功能。用户可以通过DBMS提供的数据操作语言(Data Manipulation Language,DML)方便地操纵数据库中的数据,实现对数据库的基本操作,如增加、删除、修改、查询等。
(3)数据库的运行管理。数据库管理系统统一管理数据库的运行和维护,以保障数据的安全性、完整性、并发性和故障的系统恢复性。
(4)数据库的建立和维护功能。数据库管理系统能够完成初始数据的输入、转换,数据库的转储、恢复,数据库的性能监视和分析等任务。
数据库管理系统是数据库系统的一个重要组成部分。
3.数据库系统
数据库系统(DataBase System,DBS)是采用数据库技术的计算机系统。数据库系统由数据库、数据库管理系统及开发工具、数据库应用程序、数据库管理员和用户组成,如图1.1所示。数据库管理员(DataBase Administrator,DBA)是专门从事数据库的建立、使用和维护等工作的数据库专业人员,他们在数据库系统起着非常重要的作用。一般情况下,数据库系统简称为数据库,数据库系统在计算机系统中的地位如图1.2所示。
图1.1 数据库系统构成
图1.2 数据库系统在计算机系统中的地位
1.1.4 数据模型
数据模型是现实世界数据特征的抽象,是现实世界的模拟。现实生活中的具体的模型,人们并不陌生,如汽车模型、航空模型等,人们看到模型就会想象到现实生活中的事物。数据模型同样是现实世界中数据和信息在数据库中的抽象与表示。
数据模型应满足三方面要求:一是能比较真实的模拟现实世界;二是容易为人所理解;三是便于在计算机中实现。
不同的数据模型提供的模型化数据和信息的方法是不同的。根据模型应用目的的不同,数据模型可以分为两类,一类是概念模型,它是按用户的观点来对数据和信息进行抽象,主要用于数据库设计;另一类是结构数据模型,它是按计算机的观点建模,主要用于DBMS的实现。
概念模型是现实世界到信息世界的第一次抽象,用于信息世界的建模,是数据库设计人员的有力工具,也是数据库设计人员与用户之间交流的语言。
1.信息世界的基本概念
(1)实体(Entity)。实体是指客观存在并可以相互区别的事物。实体可以是具体的人、事、物,也可以是抽象的概念和联系。例如,一个部门、一个产品、一名学生、一名教师等都是实体。
(2)属性(Attribute)。实体所具有的某一特性称为实体的属性,一个实体由若干个属性来描述。例如,教师实体可以由教师编号、姓名、性别、职称、学历、工作时间等属性描述,(1001,杨森,男,副教授,研究生,1965)这些属性组合起来描述了一个教师。
(3)码(Key)。唯一标识实体的属性集成为码。例如教师编号是教师实体的码。
(4)域(Domain)。属性的取值范围称为该属性的域。例如教师实体的“性别”属性的域为(男,女)。
(5)实体型(Entity Type)。具有相同属性的实体成为同型实体,用实体名及其属性名的集合来抽象和刻画同类实体,成为实体型。例如,教师(教师编号,姓名,职称,学历,工作时间)就是一个实体型。
(6)实体集(Entity Set)。同型实体的集合成为实体集。例如,全体教师就是一个实体集,全体学生也是一个实体集。
(7)联系(Relationship)。在现实世界中,事物内部及事物之间是普遍联系的,这些联系在信息世界中表现为实体型内部各属性之间的联系以及实体型之间的联系。两个实体型之间的联系可以分为三类:
① 一对一联系(1∶1)。例如,一个学生只能有一个学生证,一个学生证只能属于一个学生,则学生与学生证之间具有一对一的联系。
② 一对多联系(1∶n)。例如,一个人可以有多个移动电话号码,但一个电话号码只能卖给一个人。人与移动电话号码之间的联系就是一对多的联系。
③ 多对多联系(m∶n)。例如,一门课程同时可以由若干学生选修,而一个学生同时也可以选修若干门课程,课程与学生之间的联系是多对多的联系。
2.概念模型的表示方法
如前所述,概念模型是信息世界比较真实的模拟,容易为人所理解,概念模型应该方便、准确的表示出信息世界中常用概念。概念模型的表示方法很多,其中比较著名的是实体—联系方法(Entity-Relationship),该方法用E-R图来描述现实世界的概念模型。
E-R图提供了表示实体型、属性和联系的方法。
• 实体型:用矩形表示,矩形框内写明实体名。
• 属性:用椭圆表示,椭圆内写明属性名,用无向边将属性与实体连起来。
• 联系:用菱形表示,菱形框内写明联系名,用无向边与有关实体连接起来,同时在无向边上注明联系类型。需要注意的是,联系也具有属性,也要用无向边与联系连接起来。
下面用E-R图表示学生选课管理的概念模型。
学生选课管理设计的实体有:
• 学生 属性有学号、姓名、性别、出生年月、入学时间、班级。
• 课程 属性有课程号、课程名、学时数、学分、课程性质。
• 教材 属性有教材编号、教材名、出版社、主编、单价。
这些实体之间的联系如下:
• 一门课程只能选用一种教材,一种教材对应一门课程。
• 一个学生可以选修多门课程,一门课程可以由多个学生选修。
给出学生选课管理E-R图,如图1.3所示。
图1.3 学生选课管理E-R图
3.常用的结构数据模型
结构数据模型直接描述数据库中数据的逻辑结构,这类模型涉及到计算机系统,又称为基本数据模型。它是用于机器世界的第二次抽象。目前,常用的结构数据模型有四种,他们是:
• 层次模型(Hierarchical Mode)。
• 网状模型(Network Model)。
• 关系模型(Relational Model)。
• 面向对象模型(Object Oriented Model)。
关系模型是目前最重要的一种数据模型。关系数据库系统采用关系模型为数据的组织方式,SQL Server 2008数据库就是基于关系模型建立的。关系模型具有如下优点:
• 关系模型是建立在严格的数学概念基础上。
• 关系模型的概念单一,无论实体还是实体之间的联系都用关系表示,对数据的检索结果也是关系。
• 关系模型的存取路径对用户透明。
1.1.5 数据库系统的体系结构
虽然实际的数据库管理系统多种多样,支持不同的数据模型,使用不同的数据库语言,建立在不同的操作系统之上,数据的存储结构也各不相同,但在体系结构上都采用三级模式两级映射结构。
1.数据库的三级模式结构
数据库的三级结构如图1.4所示,它是由外模式、模式和内模式三级构成。
图1.4 数据库的三级模式结构
(1)模式。模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,也是所有用户的公共数据视图。
模式是数据库数据在逻辑上的视图。一个数据库只有一个模式,它既不涉及存储细节,也不涉及应用程序及程序设计语言。定义模式时不仅要定义数据的逻辑结构,也要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
(2)外模式。外模式又称子模式或用户模式,是模式的子集,是数据的局部逻辑结构,也是数据库用户看到的数据视图。一个数据库可以有多个外模式,每一个外模式都是为不同的用户建立的数据视图。外模式是保证数据库安全的一个有力措施,每个用户只能看到和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。
(3)内模式。内模式也称存储模式,是数据在数据库中的内部表示,即数据的物理结构和存储方式描述。一个数据库只有一个内模式。
2.数据库的数据独立性
数据库系统的三级模式是对数据的三级抽象,数据的具体组织由数据库管理系统负责,使用户能够逻辑的处理数据,而不必关心数据在计算机内部的具体表示与存储方式。为了在内部实现这三个抽象层次的转换,数据库管理系统在这三级模式中提供了两层映射:
• 外模式/模式映射。
• 模式/内模式映射。
(1)外模式/模式映射。所谓外模式/模式映射,就是存在外模式与模式之间的某种对应关系,这些映射定义通常包含在外模式的描述中。
当模式改变时,例如增加了一个新表,数据库管理员对各个外模式/模式的映射做相应的修改,而使外模式保持不变,这样应用程序就不用修改,因为应用程序是在外模式上编写的,所以保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
(2)模式/内模式映射。所谓模式/内模式映射,就是数据库全局逻辑结构与存储结构之间的对应关系,当数据库的内模式发生改变时,例如,存储数据库的硬件设备或存储方法发生改变,由于存在模式/内模式映射,使得数据的逻辑结构保持不变,也即模式不变,因此使应用程序也不变,保证了数据与程序的物理独立性,简称数据的物理独立性。