图1-3 数据库系统管理阶段数据与应用程序之间的关系
数据库系统管理是由数据库管理系统统一管理数据,数据库管理系统负责数据库的创建和维护、数据的查询和更新(插入、删除、修改)操作,并提供数据保护和控制功能,形成数据处理中心。数据以数据库文件组织形式长期保存,应用程序与数据的逻辑结构和物理存储结构无关,数据具有较高的逻辑独立性和物理独立性。数据库中数据是有结构的,根据数据库管理系统所支持的数学模型决定其结构形式。
数据库系统中的数据不再只是为某一应用系统所使用,而是采用面向全局的观点组织起来,为多个应用系统所使用。例如,一所学校往往包括多个应用系统,如学籍管理系统、教学管理系统,输入学生记录不仅使用学籍管理系统,还要使用教学管理系统等。因此,数据库不仅包括数据本身,而且包括数据之间的联系。数据库中的数据能够满足多用户、多应用的不同需求。数据的共享性高、冗余度小。节约存储空间可以避免数据之间的不相容性与不一致性。
4.分布式数据库系统
分布式数据库是数据库技术与网络技术相结合的产物。随着传统的数据库技术日趋成熟,以及计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上,这时集中式数据库系统表现出它的不足之处,数据按实际需要已在网络上分布存储,再采用集中式处理,势必会出现通信开销大的情况;应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统都会受到影响,可靠性不高;集中式处理导致系统的规模和配置都不够灵活,系统的可扩充性差。在这种形势下,集中式数据库的“集中计算”开始向“分布计算”发展。
分布式数据库系统有两种:一种在物理上是分布的,但逻辑上却是集中的;另一种在物理上和逻辑上都是分布的,也就是联邦式分布数据库系统。
5.面向对象数据库系统
将面向对象技术与数据库技术结合产生面向对象的数据库系统,是数据库应用发展的迫切需要,也是面向对象技术和数据库技术发展的必然结果。
面向对象的数据库系统必须支持面向对象的数据模型,具有面向对象的特性。一个面向对象的数据模型是用面向对象的观点来描述现实世界实体的逻辑组织、对象之间的限制和联系的。
另外,将面向对象技术应用到数据库应用开发工具中,使数据库应用开发工具能够支持面向对象的开发方法并提供相应的开发手段,对于提高数据库应用开发效率及增强数据库应用系统界面的友好性、可伸缩性、可扩充性等具有重要的意义。
6.数据仓库
随着客户机服务器技术的成熟和并行数据库的发展,信息处理技术实现了从大量的事务型数据库中抽取数据,并将其清理、转换为新的存储格式的过程,即为决策目标把数据聚合在一种特殊的格式中。随着此过程的发展和完善,这种支持决策的、特殊的数据存储被称为数据仓库(Data Warehouse)。数据仓库是支持管理决策过程的、面向主题的、集成的、稳定的、随时间变化的数据集合。
7.数据挖掘
数据挖掘(Data Mining)又被称为数据库中的知识发现(Knowledge Discovery in DataBase),它是一个从数据库中获取有效的、新颖的、潜在有用的、最终可理解的知识的复杂过程。简单来说,数据挖掘就是从大量数据中提取或挖掘知识。
数据挖掘和数据仓库的协同工作,一方面可以迎合和简化数据挖掘过程中的重要步骤,提高数据挖掘的效率和能力,确保数据挖掘过程中数据来源的广泛性和完整性;另一方面,数据挖掘技术已经成为数据仓库应用中极为重要和相对独立的工具。
8.大数据
大数据(Big Data)又被称为巨量数据、海量数据、大资料,是指所涉及的数据量规模巨大,很难通过人工在合理时间内达到截取、管理、处理并整理成为人们所能解读的信息。一般认为,大数据具有4V特点,即Volume(数据量大)、Variety(数据多样性)、Velocity(处理速度快)、Value(价值)。
大数据的 4V 特点具有 4 个层面的含义。第一,数据量大,从 TB 级别跃升到 PB 级别(1PB=1024TB),或者从PB级别跃升到EB级别(1EB=1024PB);第二,数据多样性,如网络日志、视频、图片、地理位置信息等;第三,处理速度快,1秒定律(要在秒级时间范围内给出分析结果,超出这个时间,数据就失去了价值),可从各种类型的数据中快速获取高价值的信息;第四,只要合理利用数据并对其进行正确、准确的分析,将会带来很高的价值回报。
对大数据而言,通过云计算技术、分布式处理技术、存储技术和感知技术的发展,这些原本很难收集和使用的数据开始容易被利用起来,通过各行各业的不断创新,大数据会逐步为人类创造更多的价值。
1.1.3 数据库系统概述
数据库系统(DataBase System,DBS)是指引入数据库技术后的计算机系统。数据库系统实际上是一个集合体,一般由计算机硬件系统、数据库、数据库管理系统及其相关的软件、数据库应用系统、数据库管理员和用户组成。
1.数据库
数据库(DataBase,DB)是长期存储在计算机内,有组织的、可共享的、统一管理的相关数据的集合。数据库中的数据按一定的数据模型进行组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性。数据库中不仅包括描述事物的数据本身,而且包括相关事物之间的关系。
数据库中的数据不仅面向某一种特定的应用,还面向多种应用,可以被多个用户、多个应用程序共享。
例如,某企业的数据库,可以被该企业下属的各个部门的有关管理人员共享使用,而且可供各个管理人员运行的不同应用程序共享使用。当然,为了保障数据库安全,对于使用数据库的用户应该有相应权限的限制。
2.数据库管理系统
数据库管理系统(DataBase Management System,DBMS)是数据库系统的核心软件,其主要任务是支持用户对数据库的基本操作,对数据库的创建、运行和维护进行统一管理和控制。
注意:用户不能直接接触数据库,而只能通过数据库管理系统来操作数据库。
数据库管理系统的主要功能包括以下几个方面。
(1)数据定义功能。
数据库管理系统提供了数据定义语言(Data Description Language,DDL)供用户定义数据库的结构、数据之间的联系等。
(2)数据操纵功能。
数据库管理系统提供了数据操纵语言(Data Manipulation Language,DML)完成用户对数据库提出的各种操作要求,以实现对数据库的插入、修改、删除、检索等基本操作。
(3)数据库运行控制功能。
数据库管理系统提供了数据控制语言(Data Control Language,DCL)实现对数据库进行并发控制、安全性检查、完整性约束条件的检查等功能。它们在数据库运行过程中监视数据库的各种操作,控制管理数据库资源,处理多用户的并发操作等。
(4)数据库维护功能。
数据库管理系统还提供了一些实用程序,用于对已经创建好的数据库进行维护,包括数据库的转储与恢复、数据库的*与重构、数据库性能的监视与分析等。
(5)数据通信功能。
数据库管理系统还提供了与通信有关的实用程序,以实现网络环境下的数据通信功能。
3.数据库管理员
数据库管理员(DataBase Administrator,DBA)是负责数据库的创建、使用和维护的专门人员。
4.数据库应用系统
数据库应用系统是利用数据库系统资源,为特定应用环境开发的应用软件,如学籍管理系统、教务管理系统、财务管理系统、图书管理系统等。
5.数据库系统的组成
数据库系统是指引入数据库技术后的计算机系统,数据库系统实际上是一个集合体,通常包括以下几部分。
(1)数据库。
(2)数据库管理系统及其相关软件。
(3)数据库应用系统。
(4)计算机硬件系统。
(5)数据库管理员。
(6)用户。
数据库系统各部分之间的关系如图1-4所示。
图1-4 数据库系统各部分之间的关系
1.1.4 关系型数据库
数据库技术发展至今已经有 50多年,主要按照数据模型的发展而演变,经历了层次和网状数据库系统、关系型数据库系统、面向对象数据库系统。基于层次模型(Hierarchical Model)、网状模型(Network Model)的层次和网状数据库系统构成早期的数据库产品,基于关系模型(Relational Model)的关系数据库系统当前被大量使用,如Access 2016就是基于关系模型的关系型数据库管理系统。基于面向对象模型(Object Oriented Model)的数据库系统现阶段商业化程度还不够高,大多处在实验研究阶段,有待成熟。
1.实体联系模型
在创建一个数据库应用系统之前,先要搞清楚用户需要从数据库得到什么?从而决定数据库中要存储哪些数据及如何存储这些数据。要解决这个问题,需要分析理解现实世界中的客观事物,对它某一方面的客观属性进行描述,如描述某个学生,总是用他的姓名、性别、年龄、籍贯、家庭住址、家庭成员等属性来反映他的客观存在。这样,人的认识从客观世界(现实世界)进入了概念世界(信息世界)。下一步就断定数据库存储的学生记录中需要有姓名、性别、年龄、籍贯、家庭住址、家庭成员等字段,这就进入了数据世界(计算机世界)。上述的分析过程只是一种近似的描述,在数据库技术领域,使用严格的数学模型工具完成相应的工作。实体联系模型(Entity Relationship,E-R)就是一种描述信息世界的模型,它只描述用户所关心的信息结构,而不涉及信息在计算机中的表示,是一种与任何计算机系统无关的“概念数据模型”,是用户与数据库设计人员之间进行交流的工具。
E-R模型中常用到实体、实体集、属性、码、域、联系和E-R图,它们的概念如下。
(1)实体(Entity)。
客观存在并可相互区别的事物被称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一所院校、学生与院校的就学关系等都是实体。同一个事物在不同的场合可以是不同的实体。例如,小张在学校是学生,在家庭是子女。
(2)实体集(Entity Set)。
同一类型的实体的集合构成实体集。例如,全体学生就是一个实体集。
(3)属性(Attribute)。
实体在某一方面的特性被称为属性,一个实体可以由若干个属性来刻画。例如,学生实体的学号、姓名、性别、出生日期、所在院系等属性表示了学生实体的5个方面的特性。实体名和各个属性名的集合构成实体型。例如,学生(学号,姓名,性别,出生日期,所在院部)就是一个实体型,(200610201,李建,男,1988/6/6,音乐学院)就是学生实体型的一个实体。
(4)码(Key)。
能唯一表示每个实体的属性集合被称为码(关键字)。例如,在学生实体中的学号。而姓名则不是,因为可能出现重名。
(5)域(Domain)。
属性的取值范围被称为该属性的域。例如,学号的域是 8 位正整数,性别的域为(男、女),姓名的域为8个字符串集合。
(6)联系(Relationship)。
现实世界的事物之间总是存在某种联系的,任何实体都不可能孤立存在,实体的联系包括实体内部的联系(通常指组成实体的各属性之间的联系)和实体之间的联系。
两个实体之间的联系可分为以下3类。
① 一对一联系(1∶1)。
如果实体集A中的每一个实体仅对应实体集B中最多一个(也可以没有)实体,反之亦然,则称实体集A与实体集B具有一对一联系,记为1∶1。例如,一夫一妻制下的丈夫与妻子、公民与身份证、学生与学号等。
② 一对多联系(1∶n)。
如果实体集A中的每一个实体与实体集B中一个以上的实体对应;反之,对实体集B中的每一个实体,实体集A中最多只有一个实体与之对应,则称实体集A与实体集B具有一对多联系,记为 1∶n。例如,班级与学生、学校与院系、工厂与车间、国家与省份、省份与县市等。
③ 多对多联系(m∶n)。
如果实体集A中的每一个实体与实体集B中一个以上的实体对应;反之,实体集B中的每一个实体也与实体集 A 中一个以上的实体对应,则称实体集 A 与实体集 B 具有多对多联系,记为n∶m。例如,一个学生可以同时选择多门课程,一门课程可以供多个学生选择,所以学生与课程之间就具有多对多联系。
(7)E-R图。
E-R图提供了表示实体、属性和联系的图示方法,是由P.P.S Chen 于1976年提出的,用于描述客观世界的概念模型。
① 矩形表示实体型,矩形框内为实体名。
② 椭圆形表示属性,椭圆形框内为属性名,并用无向边将其与实体连接。
③ 菱形表示联系,菱形框内为联系名,并用无向边分别与有关实体型连接,同时注明联系类型(1∶1、1∶n或m∶n)。如果联系有属性,则要用无向边与该联系连接起来。
图1-5所示为某高校教师教学情况的E-R图。
图1-5 某高校教师教学情况的E-R图
学校有若干个系部,每个系部有若干个教师。每个教师可讲授多门课程。本教学实体涉及“系部”“教师”“课程”3 个实体,系部与教师之间的“隶属”关系为一对多的联系,教师与课程之间的“授课”关系为多对多的联系。假设“系部”实体的属性有系号、系名和系主任,“教师”实体的属性有教工号、姓名和性别,“课程”实体的属性有课程号、课程名和学分,“授课”联系的属性是次数。
2.关系模型
使用 E-R 图将客观世界抽象为概念世界以后,还要再将概念世界转换为机器世界,这时需要使用数据模型。数据模型主要有层次模型、网状模型、关系模型和面向对象模型。其中,关系模型是Access 数据库管理系统所使用的。
利用二维表结构来表示实体联系的数据模型被称为关系模型。关系数据模型以关系数学理论为基础,一个关系对应一个二维表。直观上无论是实体还是实体之间的联系都使用关系(一个二维表)来表示。例如,教师、课程、教师与课程之间的“授课”联系都使用关系来表示,如表1-1所示。
表1-1 “教师”关系
“授课”关系