1.1 数据库基本概念
1.1.1 数据库与数据库管理系统
1.数据库
数据库(DB)是存放数据的仓库,只不过这些数据存在一定的关联,并按一定的格式存放在计算机内。广义上讲,数据不仅包含数字,还包括文本、图像、音频、视频等。
例如,把一个学校的学生、课程、学生成绩等数据有序地组织并存放在计算机内,就可以构成一个数据库。因此,数据库由一些持久的相互关联的数据的集合组成,并以一定的组织形式存放在计算机的存储介质中。
2.数据库管理系统
数据库管理系统(DBMS)是管理数据库的系统,它按一定的数据模型组织数据。DBMS应提供如下功能。
(1)数据定义功能:可定义数据库中的数据对象。
(2)数据操纵功能:可对数据库表进行基本操作,如插入、删除、修改、查询等。
(3)数据的完整性检查功能:保证用户输入的数据满足相应的约束条件。
(4)数据库的安全保护功能:保证只有具有权限的用户才能访问数据库中的数据。
(5)数据库的并发控制功能:使多个应用程序可在同一时刻并发地访问数据库的数据。
(6)数据库系统的故障恢复功能:使数据库在运行出现故障时进行数据库恢复,以保证数据库可靠运行。
(7)在网络环境下访问数据库的功能。
(8)方便、有效地存取数据库信息的接口和工具。编程人员通过程序开发工具与数据库的接口编写数据库应用程序。数据库系统管理员(DBA, DataBase Adminitrator)通过提供的工具对数据库进行管理。
数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员一起构成了一个完整的数据库系统。图1.1描述了数据库系统的构成。
图1.1 数据库系统的构成
自20世纪70年代关系模型提出后,商用数据库系统迅速采用了这种模型,涌现出很多性能优良的关系数据库管理系统(RDBMS)。
目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。主流的关系型数据库管理系统包括Oracle、SQL Server、DB2、Sybase、Informix和Ingers等,小型的关系型数据库管理系统包括MySQL、Access、Visual FoxPro等。
SQL Server是由Microsoft公司开发和推广的在Windows平台上最为流行的大中型关系数据库管理系统。SQL Server版本从SQL Server 6.5、7.0、2000到2005,再到目前的SQL Server 2008,功能不断完善。本书主要介绍SQL Server 2008。
1.1.2 数据模型
数据库管理系统根据数据模型对数据进行存储和管理,数据库管理系统采用的数据模型主要有:层次模型、网状模型和关系模型。
(1)层次模型:以树状层次结构组织数据。图1.2所示为某学校按层次模型组织的数据示例。
图1.2 某学校按层次模型组织的数据示例
(2)网状模型:每一个数据用一个节点表示,每个节点与其他节点都有联系,这样,数据库中的所有数据节点就构成了一个复杂的网络。图1.3所示为按网状模型组织的数据示例。
图1.3 按网状模型组织的数据示例
(3)关系模型:以二维表格(关系表)的形式组织数据库中的数据。
例如,在学生成绩管理系统所涉及的学生、课程和成绩三个表中。学生表涉及的主要信息有学号、姓名、性别、出生时间、专业、总学分、备注。课程表涉及的主要信息有课程号、课程名、开课学期、学时和学分。成绩表涉及的主要信息有学号、课程号和成绩。表1.1、表1.2和表1.3分别描述了学生成绩管理系统中学生、课程和成绩这三个表的部分数据。
表1.1 学生表
表1.2 课程表
表1.3 成绩表
表格中的一行称为一个记录,一列称为一个字段,每列的标题称为字段名。如果给每个关系表取一个名字,则有 n 个字段的关系表的结构可表示为关系表名(字段名1, …,字段名n),通常把关系表的结构称为关系模式。
在关系表中,如果一个字段或几个字段组合的值可唯一标识其对应记录,则称该字段或字段组合为码。
例如,表1.1中的“学号”可唯一标识每一个学生,表1.2中的“课程号”可唯一标识每一门课。表1.3中的“学号”和“课程号”可唯一标识每一个学生一门课程的成绩。
有时,一个表可能有多个码,比如表1.1中,姓名不允许重名,则“学号”、“姓名”均是学生信息表码。对于每一个关系表,通常可指定一个码为“主码”,在关系模式中,一般用下划线标出主码。
设表1.1的名字为XSB,关系模式可分别表示为XSB(学号,姓名,性别,出生时间,专业,总学分,备注)。
设表1.2的名字为KCB,关系模式可分别表示为KCB(课程号,课程名,开课学期,学时,学分)。
设表1.3的名字为CJB,关系模式可分别表示为CJB(学号,课程号,成绩,学分)。
从上面可看出,按关系模型组织的数据表达方式简洁、直观,插入、删除、修改操作方便,而按层次、网状模型组织的数据表达方式复杂,插入、删除、修改操作也很复杂。因此,关系模型得到了广泛应用,SQL Server 2008是支持关系数据模型的数据库管理系统。
1.1.3 关系型数据库语言
关系型数据库的标准语言是SQL(Structured Query Language,结构化查询语言)。SQL语言是用于关系数据库查询的结构化语言,最早由Boyce和Cha MBedin在1974年提出,称为SEQUEL语言。1976年,IBM公司的San Jose研究所在研制关系数据库管理系统System R时修改为SEQUEL2,即目前的SQL语言。1976年,SQL开始在商品化关系数据库管理系统中应用。1982年,美国国家标准化组织ANSI确认SQL为数据库系统的工业标准。SQL是一种介于关系代数和关系演算之间的语言,具有丰富的查询功能,同时具有数据定义和数据控制功能,是集数据定义、数据查询和数据控制于一体的关系型数据库语言。目前,许多关系型数据库管理系统支持SQL语言,如SQL Server、Access、Oracle、Sybase、MySQL、DB2等。
SQL语言的功能包括数据查询、数据操纵、数据定义和数据控制4部分。SQL语言简洁、方便、实用,为完成其核心功能只用了6个动词:SELECT、CREATE、INSERT、UPDATE、DELETE、GRANT(REVOKE),目前已成为应用最广的关系数据库语言。SQL语言易学易用,作为关系数据库的标准语言,它已被众多商用数据库管理系统产品所采用。不过,因为不同的数据库管理系统在其实践过程中都对SQL规范做了某些编改和扩充,所以,实际上不同数据库管理系统之间的SQL语言不能完全通用。例如,微软公司的SQL Server数据库系统支持的是Transact-SQL(简称T-SQL),而甲骨文公司的Oracle数据库所使用的SQL语言则是PL-SQL。