1.1 数据库基本概念

1.1.1 数据库与数据库管理系统

1.数据库

数据库(DB)是存放数据的仓库,只不过这些数据存在一定的关联,并按一定的格式存放在计算机上。从广义上讲,数据不仅包含数字,还包括文本、图像、音频和视频等。

例如,把一个学校的学生姓名、课程、学生成绩等数据有序地组织并存放在计算机内,就可以构成一个数据库。因此,数据库是由一些持久的、相互关联的数据集合组成,并以一定的组织形式存放在计算机的存储介质中。数据库是事务处理、信息管理等应用系统的基础。

2.数据库管理系统

数据库管理系统(DBMS)是管理数据库的系统,它按一定的数据模型组织数据。DBMS应提供如下功能。

(1)数据定义功能:可定义数据库中的数据对象。

(2)数据操纵功能:可对数据库表进行基本操作,如插入、删除、修改、查询等。

(3)数据的完整性检查功能:保证用户输入的数据应满足相应的约束条件。

(4)数据库的安全保护功能:保证只有赋予权限的用户才能访问数据库中的数据。

(5)数据库的并发控制功能:使多个应用程序可在同一时刻并发地访问数据库的数据。

(6)数据库系统的故障恢复功能:数据库运行出现故障时,系统进行数据库恢复,以保证数据库可靠运行。

(7)在网络环境下访问数据库的功能。

(8)提供方便、有效的存取数据库信息的接口和工具。编程人员通过程序开发工具与数据库的接口编写数据库应用程序。数据库系统管理员(DBA,DataBase Administrator)通过提供的工具对数据库进行管理。

数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员一起构成了一个完整的数据库系统。图1.1描述了数据库系统的构成。

自20世纪70年代关系数据模型提出后,商用数据库系统迅速采用了这种模型,涌现出很多性能优良的关系数据库管理系统(RDBMS)。

目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。主流的关系型数据库管理系统包括Oracle、SQL Server、DB 2、Sybase、Informix和Ingres等,小型的关系型数据库管理系统包括MySQL、Access、Visual FoxPro等。

图1.1 数据库系统的构成

1.1.2 数据模型

数据库管理系统根据数据模型对数据进行存储和管理,采用的数据模型主要有:层次模型、网状模型和关系模型。

(1)层次模型:以树形层次结构组织数据。图1.2为某学校按层次模型组织的数据示例。

图1.2 某学校按层次模型组织的数据示例

(2)网状模型:每一个数据用一个节点表示,每个节点与其他节点都有联系,这样,数据库中的所有数据节点就构成了一个复杂的网络。图1.3为按网状模型组织的数据示例。

图1.3 按网状模型组织的数据示例

(3)关系模型:以二维表格(关系表)的形式组织数据库中的数据。从用户观点看,关系模型由一组关系组成,每个关系的数据结构是一个规范化的二维表。所以一个关系数据库就是由若干个表组成的。

例如,在描述学生信息时使用的“学生”表,涉及的主要信息有:学号、姓名、性别、出生时间、专业、总学分、备注。表1.1描述了一些学生的信息。

表格中的一行称为一个记录;一列称为一个字段,每列的标题称为字段名。如果给每个关系表取一个名字,则有 n 个字段的关系表的结构可表示为:关系表名(字段名1,…,字段名n)。通常把关系表的结构称为关系模式。

表1.1 “学生”表

在关系表中,如果一个字段或几个字段组合的值可唯一标识其对应记录,则称该字段或字段组合为码。例如,学生的“学号”可唯一标识每一个学生,则“学号”字段为“学生”表的码。有时一个表可能有多个码,对于每一个关系表通常可指定一个码为“主码”,在关系模式中,一般用下横线标出主码。

设表1.1的名字为XSB,关系模式可表示为:XSB(学号,姓名,性别,出生时间,专业,总学分,备注)。

综上所述,按关系模型组织的数据表达方式简洁、直观,插入、删除、修改操作方便,而按层次、网状模型组织的数据表达方式复杂,插入、删除、修改操作复杂。因此,关系模型得到了广泛应用,关系型数据库管理系统成为了主流。Oracle正是支持关系数据模型的数据库管理系统。

1.1.3 关系型数据库语言

关系数据库的标准语言是SQL(Structured Query Language,结构化查询语言)。SQL语言是用于关系数据库查询的结构化语言,最早由Boyce和Chambedin在1974年提出,称为SEQUEL语言。1976年,IBM公司的San Jose研究所在研制关系数据库管理系统System R时将其修改为SEQUEL 2,即目前的SQL语言。1976年,SQL开始在商品化关系数据库管理系统中应用。1982年,美国国家标准化组织ANSI确认SQL为数据库系统的工业标准。SQL是一种介于关系代数和关系演算之间的语言,具有丰富的查询功能,同时具有数据定义和数据控制功能,是集数据定义、数据查询和数据控制于一体的关系数据语言。目前,有许多关系型数据库管理系统支持SQL语言,如SQL Server、Access、Oracle、MySQL、DB 2等。

SQL语言的功能包括数据查询、数据操纵、数据定义和数据控制四个部分。SQL语言简洁、方便、实用,为完成其核心功能只用了6个动词——SELECT、CREATE、INSERT、UPDATE、DELETE和GRANT(REVOKE)。作为关系数据库的标准语言,它已被众多商用数据库管理系统产品所采用,成为应用最广的关系数据库语言。不过,不同的数据库管理系统在其实践过程中都对SQL规范做了某些编改和扩充。所以,实际上不同数据库管理系统之间的SQL语言不能完全相互通用。例如,甲骨文公司的Oracle数据库所使用的SQL语言是Procedural Language/SQL(简称PL/SQL),而微软公司的SQL Server数据库系统支持的是Transact-SQL(简称T-SQL)。

1.1.4 数据库设计

数据库设计是将业务对象转换为数据表等数据库对象的过程,是数据库应用系统开发过程中首要的和基本的内容。

按照规范设计的方法,考虑数据库及其应用系统开发全过程,将关系型数据库的设计分为六个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库运行与维护。其中需求分析的任务是通过详细调查现实世界要处理的对象,明确用户的各种需求,然后在此基础上确定系统的功能。数据库实施、运行与维护的任务是在数据库的结构设计完成后由数据库管理员在DBMS上实现设计结果。这里具体介绍数据库设计中的概念结构设计、逻辑结构设计和物理结构设计。

1.概念结构设计

通常,把每一类数据对象的个体称为“实体”,而每一类对象个体的集合称为“实体集”。例如,在管理学生所选课程的成绩时,主要涉及“学生”和“课程”两个实体集。

其他非主要的实体可以很多,例如,班级、班长、任课教师、辅导员等实体。把每个实体集涉及的信息项称为属性。就“学生”实体集而言,它的属性有学号、姓名、性别、出生时间、专业、总学分和备注。“课程”实体集属性有课程号、课程名、开课学期、学时和学分。

实体集“学生”和实体集“课程”之间存在“选课”的关系,通常把这类关系称为“联系”。通常将实体集及实体集之间联系的图称为E-R模型。

E-R模型的表示方法为:

● 实体集用矩形框表示,矩形框内标注实体名;

● 实体集的属性用椭圆框表示,框内标注属性名,并用无向边与其实体集相连;

● 实体集间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向边将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—nmn

● 如果一个联系有属性,则这些属性也要用无向边与该联系连接起来。

因此,E-R模型也称为E-R图。通常,关系数据库的设计者使用E-R图来对信息世界建模。从分析用户项目涉及的数据对象及数据对象之间的联系出发,到获取E-R图的这一过程称为概念结构设计。

两个实体集A和B之间的联系可能是以下三种情况之一。

(1)一对一的联系(1∶1)

A中的一个实体仅与B中的一个实体相联系,B中的一个实体也仅与A中的一个实体相联系。例如,“班级”与“正班长”这两个实体集之间的联系是一对一的联系,因为一个班只有一个正班长,反过来,一个正班长只属于一个班。“班级”与“正班长”两个实体集的E-R模型如图1.4所示。

图1.4 “班级”与“正班长”实体集E-R模型

(2)一对多的联系(1∶n

A中的一个实体可以与B中的多个实体相联系,而B中的一个实体仅与A中的一个实体相联系。例如,“班级”与“学生”这两个实体集之间的联系是一对多的联系,因为,一个班可有若干学生,反过来,一个学生只能属于一个班。“班级”与“学生”两个实体集的E-R模型如图1.5所示。

图1.5 “学生”与“班级”两个实体集的E-R模型

(3)多对多的联系(mn

A中的一个实体可以与B中的多个实体相联系,而B中的一个实体也可与A中的多个实体相联系。例如,“学生”与“课程”这两个实体集之间的联系是多对多的联系,因为一个学生可选修多门课程;反过来,一门课程可被多个学生选修,每个学生选修了一门课程以后都有一个成绩。“学生”与“课程”两个实体集的E-R模型如图1.6所示。

图1.6 “学生”与“课程”实体集间的E-R模型

2.逻辑结构设计

用E-R图描述管理系统中实体集与实体集之间的联系,目的是以E-R图为工具设计关系模式,即确定应用系统所使用的数据库应包含的表和表的结构。通常这一设计过程被称为逻辑结构设计。

(1)(1∶1)联系的E-R图到关系模式的转换

对于(1∶1)的联系既可以单独对应一个关系模式,也可以不单独对应一个关系模式。

① 联系单独对应一个关系模式,则由联系属性、参与联系的各实体集的主码属性构成关系模式,可选参与联系的实体集的任何一方的主码作为这个关系模式的主码。

例如,图1.4描述的“班级”(BJB)与“正班长”(BZB)实体集通过“属于”(SYB)联系的E-R模型可设计如下关系模式(下横线表示该字段为主码):

BJB(班级编号,院系,专业,人数)

BZB(学号,姓名)

SYB(学号,班级编号)

② 联系不单独对应一个关系模式,联系的属性及一方的主码加入到另一方实体集对应的关系模式中。例如,图1.4的E-R模型可设计如下关系模式:

BJB(班级编号,院系,专业,人数)

BZB(学号,姓名,班级编号)

或者

BJB(班级编号,院系,专业,人数,学号)

BZB(学号,姓名)

(2)(1∶n)联系的E-R图到关系模式的转换

对于(1∶n)的联系既可单独对应一个关系模式,也可以不单独对应一个关系模式。

① 联系单独对应一个关系模式,则由联系的属性、参与联系的各实体集的主码属性构成关系模式,n端的主码作为该关系模式的主码。

例如,图1.5描述的“班级”(BJB)与“学生”(XSB)实体集通过“属于”(SYB)联系的E-R模型可设计如下关系模式:

BJB(班级编号,院系,专业,人数)

XSB(学号,姓名,性别,出生时间,专业,总学分,备注)

SYB(学号,班级编号)

② 联系不单独对应一个关系模式,则将联系的属性及“1”端的主码加入n端实体集对应的关系模式中,主码仍为n端的主码。

例如,图1.5“班级”(BJB)与“学生”(XSB)实体集E-R模型可设计如下关系模式:

BJB(班级编号,院系,专业,人数)

XSB(学号,姓名,性别,出生时间,专业,总学分,备注,班级编号)

(3)(mn)联系的E-R图到关系模式的转换

对于(mn)的联系,单独对应一个关系模式,该关系模式包括联系的属性、参与联系的各实体集的主码属性,该关系模式的主码由各实体集的主码属性共同组成。

例如,图1.6描述的“学生”(XSB)与“课程”(KCB)实体集之间通过“选课”(CJB)的联系可设计如下关系模式:

XSB(学号,姓名,性别,出生时间,专业,总学分,备注)

KCB(课程号,课程名称,开课学期,学时,学分)

CJB(学号,课程号,成绩)

关系模式CJB的主码是由“学号”和“课程号”两个属性组合起来构成的一个主码,一个关系模式只能有一个主码。

3.物理结构设计

数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就称为数据库的物理结构设计。

数据库的物理结构设计通常分为以下两步:

(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;

(2)对物理结构进行评价,评价的重点是时间和空间效率。