1.1 数据库
为了让读者了解数据库,需要先介绍数据库系统、数据库模型和数据库语言。
1.1.1 数据库系统
1. 数据库
数据库(DB)是存放数据的仓库。这些数据存在一定的关联,并按一定的格式存放在计算机上。从广义上讲,数据不仅包含数字,还包括文本、图像、音频、视频等。
数据库、数据库系统
例如,把一个学校的学生、课程、学生成绩等数据有序地组织并存放在计算机内,就可以构成一个数据库。因此,数据库是由一些持久的相互关联的数据的集合组成,并以一定的组织形式存放在计算机的存储介质中。数据库是事务处理、信息管理等应用系统的基础。
2. 数据库系统
数据库管理系统(DBMS)按一定的数据模型组织数据、管理数据库。数据库应用系统通过DBMS提供的接口操作数据库,数据库管理员(DBA)通过DBMS提供的界面管理操作数据库。
数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员一起构成了一个完整的数据库系统。图1.1描述了数据库系统的构成。
图1.1 数据库系统的构成
1.1.2 数据模型
数据模型是指数据库管理系统中数据的存储结构。数据库管理系统根据数据模型对数据进行存储和管理。
1. 常见的数据模型
常见的数据模型有:层次模型、网状模型和关系模型。
(1)层次模型
层次模型是最早用于商品数据库管理系统的数据模型。它以树状层次结构组织数据。树形结构的每个节点表示一个记录类型,记录之间的联系是一对多的。位于树形结构顶部的节点称为根节点,层次模型有且仅有一个根节点。根节点以外的其他节点有且仅有一个父节点。图1.2所示为某学校按层次模型组织的数据示例。
图1.2 某学校按层次模型组织的数据示例
层次模型结构简单,容易实现,对于某些特定的应用系统效率很高,但如果需要动态访问数据(如增加或修改记录类型)时,效率并不高。另外,对于一些非层次性结构(如多对多联系),层次模型表达起来比较烦琐和不直观。
(2)网状模型
网状模型可以看作是层次模型的一种扩展。它采用网状结构组织数据,每个节点表示一个记录类型,记录之间的联系是一对多的。一个节点可以有一个或多个父节点和子节点,这样,数据库中的所有数据节点就构成了一个复杂的网络。图1.3所示为按网状模型组织的数据示例。
图1.3 按网状模型组织的数据示例
与层次模型相比,网状模型具有更大的灵活性,更直接地描述现实世界,性能和效率也较好。网状模型的缺点是结构复杂,用户不易掌握。
(3)关系模型
关系模型是目前应用最多、最为重要的一种数据模型。关系模型建立在严格的数学概念基础上,以二维表格(关系表)的形式组织数据库中的数据,二维表由行和列组成。从用户观点看,关系模型是由一组关系组成的,关系之间通过公共属性产生联系。每个关系的数据结构是一个规范化的二维表,所以一个关系数据库就是由若干个表组成的。图1.4所示为按关系模型组织的数据示例。
图1.4 按关系模型组织的数据示例
在图中显示的关系模型中,描述学生信息时使用的“学生”表涉及的主要信息有:学号、姓名、性别、出生时间、专业、总学分及备注。
表格中的一行称为一个记录,一列又称为一个字段,每列的标题称为字段名。如果给关系表取一个名字,则有n个字段的关系表的结构可表示为:关系表名(字段名1,……,字段名n),通常把关系表的结构称为关系模式。
在关系表中,如果一个字段或几个字段组合的值可唯一标识其对应记录,则称该字段或字段组合为码。例如,学生的“学号”可唯一标识每一个学生,则“学号”字段为“学生”表的码。有时一个表可能有多个码,对于每一个关系表通常可指定一个码为“主码”,在关系模式中,一般用下画线标出主码。
设“学生”表的名字为XSB,关系模式可表示为:XSB(学号,姓名,性别,出生时间,专业,总学分,备注)。
从图1.4可以看出,按关系模型组织数据表达方式简洁、直观,插入、删除、修改操作方便,而按层次、网状模型组织数据表达方式,操作比较复杂。因此,关系模型得到广泛应用,关系型数据库管理系统(RDBMS)成为主流。目前,比较流行的关系型数据库管理系统包括SQL Server、Access、Oracle、Sybase、MySQL、DB2等。
SQL Server是由Microsoft公司开发的Windows平台大中型关系数据库管理系统。SQL Server版本从SQL Server 6.5、SQL Server 7.0、SQL Server 2000、SQL Server 2005、SQL Server 2008到SQL Server 2012、SQL Server 2014,SQL Server 2016也已经上市。本书主要介绍SQL Server 2016。
2. 其他数据模型
随着信息管理内容的不断扩展和新技术的层出不穷,数据库技术面临着前所未有的挑战。面对新的数据形式,除了层次模型、网状模型、关系模型,人们提出了丰富多样的数据模型,例如面向对象模型、半结构化模型等。同时也提出了众多新的数据库技术(XML数据管理、数据流管理、Web数据集成、数据挖掘等)。
3. 流行关系数据库产品
关系数据库分为两类:一类是桌面数据库,另一类是客户/服务器数据库。
一般而言,桌面数据库用于小型的、单机的应用程序,它不需要网络和服务器,实现起来比较方便,但它只提供数据的存取功能。例如Access、FoxPro、Excel和dBase等。
客户/服务器数据库主要适用于大型的、多用户的数据库管理系统,包括两部分:一部分驻留在客户机上,用于向用户显示信息及实现与用户的交互;另一部分驻留在服务器中,主要用来实现对数据库的操作和对数据的计算处理。
例如,大型关系型数据库管理系统一般为Oracle,SQL Server、DB2、Ingers、Informix和Sybase等。小型关系型数据库管理系统一般为MySQL、PostgreSQL和SQLite。其中SQLite是一个强大的嵌入式关系型数据库管理系统;MySQL是最流行的RDBMS;PostgreSQL是最先进SQL型开源objective-RDBMS。
在开发数据库应用程序时,也可以将它们放在一台计算机上进行调试,调试完成后再把数据库放到服务器上。
1.1.3 关系型数据库语言
关系型数据库除了通过DBMS操作外,还可用关系型数据库的标准语言——SQL(Structured Query Language,结构化查询语言)操作。SQL语言是用于关系数据库查询的结构化语言,功能包括数据查询、数据操纵、数据定义和数据控制4部分。
一般来说,关系型数据库管理系统均支持SQL语言,但每家关系型数据库管理系统都对SQL语言的功能进行了扩展。例如,SQL Server数据库系统支持的是Transact-SQL(简称T-SQL),而Oracle数据库所使用的SQL语言则是PL-SQL。所以,不同数据库管理系统之间的SQL语言不能完全通用。