1.1 数据库系统概述
1.1.1 数据库的4个基本概念
数据(data)
数据库技术是管理数据的技术。数据是数据库中存储的基本对象。因此首先要知道什么是数据,知道数据由多种形式。
广义的说:数据就是描述事物的符号记录。
- 数字
- 文字
- 图像
- 图形
- 音频
- 视频 等
在现代计算机系统中数据的概念是广义的。早期的计算机系统主要用于科学计算,处理的数据是数值型数据。现在计算机能存储和处理的对象越来越广泛,表示这些对象的数据也越来越复杂。
数据的表现形式还不能完全表达其内容,需要经过解释,数据和关于数据的解释是不可分的。
数据的含义称为数据的语义,数据与其语义是不可分的。
数据举例:在日常生活中,人们可以直接用自然语言(如汉语)来描述事物。计算机中常常用记录来描述。数据是有结构的。记录是计算机中表示和存储数据的一种格式或方法。
记录:李明,男,199505,江苏省南京市,计算机系,2013
数据解释:李明同学,男,1995年5月生,江苏省南京市人,2013年入学
语义:学生的姓名、性别、出生年月、出生地、所在院系、入学时间
数据库(DataBase DB)
为什么要建数据库?
- 人们收集并抽取一个应用所需要的大量数据之后,应将其保存起来,以供进一步加工处理,抽取有用信息,转换为有价值的知识。
什么是DB?
- 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
DB的基本特征:
- 数据按一定的数据模型组织、描述和存储,数据模型是数据库的核心。
- 可为各种用户共享,冗余度小、易扩展
- 数据独立性较高
概括地讲,数据库数据具有永久存储、有组织和可共享三个基本特点。
数据库管理系统(DataBase Manager System, DBMS)
DBMS的产生是由于大规模数据的需要
DBMS的用途:科学地组织和存储数据,高效地获取和维护数据
什么是DBMS?
- 位于用户与操作系统之间的一层数据管理软件
- 是计算机的基础软件,也是一个大型复杂的软件系统
主要功能:
- 数据定义功能
- 提供数据定义语言——DDL
- 定义DB中的数据对象的组成和结构
- 数据组织、存储和管理
- 分类组织、存储和管理各种数据
- 确定数据在存储级别上的数据结构和存储方式
- 实现数据之间的联系
- 提供多种存取方法(索引查找、hash查找、顺序查找等)来提高存储效率
- 数据存储和组织的基本目标:提高存储空间利用率和方便存取
- 数据操纵功能
- 提供数据操纵语言——DML
- 实现对DB的基本操作——查询、插入、删除和修改等
- 数据库的事务管理和运行管理
- 数据库在建立、运用和维护时由DBMS统一管理和控制,以保证事务的正确运行,保证数据的安全性、完整性、多用户对数据的并发使用以及发生故障之后的系统恢复
- 数据库的建立和维护功能
- 数据库的转储、恢复功能
- 数据库的重组织功能和性能检测
- 提供实用程序或管理工具
- 提供实用程序或管理工具,完成DB数据批量装载、DB转储,介质故障恢复,DB的重组织和性能监视等。
- 其他功能
- 数据库管理系统与网络中其他软件系统的通信功能
- DBMS之间的数据转换功能
- 异构DB之间的互访和互操作功能
数据库系统(DataBase System, DBS)
DBS的组成:
- DB
- DBMS(及其应用开发工具)
- 应用程序
- 数据库管理员(DBA)
DBS是由上面4个东西组成的存储、管理、处理和维护数据的系统
DBS:
- DBS是指在计算机系统中引入了DB之后的系统构成
- 在一般不引起混淆的情况下,人们常常把DBS简称为数据库
数据库提供数据的存储功能,数据库管理系统提供数据的组织、存取、管理和维护等基础功能,数据库应用系统根据应用需求使用数据库,数据库管理员负责全面管理数据库系统
1.1.2 数据管理技术的产生和发展
数据库技术是应数据管理任务的需要而产生的。
数据管理
- 是指对数据进行分类、组织、编码、存储、检索和维护
- 是数据处理和数据分析的核心问题
数据的处理是指对各种数据进行收集、存储、加工和传播的一系列获得的总和。
在计算机硬件、软件发展的基础上,数据管理技术经历了人工管理、文件系统、数据库系统三个阶段。(发展过程)
20世纪50年代中期以前
由人来定义编写程序,是属于一个一一对应的关系
特点:
- 数据不保存
- 应用程序管理数据
- 数据不共享
- 数据不具有独立性
20世纪50年代后期到60年代中期
存取方法有:随机存取、顺序存取等
某一程序要用到某一文件是由程序员来写程序操作的,实际上还是一一对应的关系
特点:
- 数据可以长期保存
- 由文件系统管理数据
缺点:
- 数据共享性查,冗余度差
- 数据独立性差
20世纪60年代后期——现在
为解决多用户、多应用共享数据的需求,出现了统一管理数据的专门软件系统——DBMS
用数据库系统来管理数据比文件系统具有明显的优点,从文件系统到数据库系统标志着数据管理技术的飞跃。
1.1.3 数据库系统的特点/优点
1、数据结构化
数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
“整体”结构化:
- 不再仅仅针对某一应用,而是面向整个组织或企业;(因此数据可以被多个用户、多个应用共享使用,这些应用之间可以用不同的语言来编写,都可以使用该数据库)
- 不仅数据内部结构化,而且整体是结构化的,数据之间是具有联系的;
- 数据记录可变长;
- 数据的最小存储单位是数据项。
数据整体有结构,使用数据模型描述,无需应用程序定义。
2、数据共享性高、冗余度低且易扩充
数据共享的好处:
- 可以大大减少数据冗余,节约存储空间;
- 避免数据之间的不相容性与不一致性
- 数据库系统弹性大,易于扩充——由于数据面向整个系统,是有结构的数据,不仅可以被多个应用共享使用,而且容易增减新的应用,可以适应各种用户的要求。可以选取整体数据的各种子集用于不同的应用系统,当应用需求改变或增加时,只要重新选取不同的子集或加上一部分数据便可以满足新的需求。
数据不一致性:同一数据不同副本的值不一样。在数据库中数据共享减少了由于数据冗余造成的不一致现象。
3、数据独立性高
物理独立性:指用户的应用程序和数据库中数据的物理存储是相互独立的。
逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。
数据独立性是由DBMS提高的二级映像功能来保证的。
4、数据由数据库管理系统统一管理和控制
DBMS在DB建立运用和维护时对数据进行统一管理和控制
DBMS必须提供以下几方面的数据控制功能:
- 数据的安全性保护
- 数据的安全性是指:保护数据以防止不合法使用造成的数据泄密和破坏
- 数据的完整性检查
- 数据的完整性是指:数据的正确性、有效性和相容性
- 并发控制
- 数据库恢复
- DBMS必须具有将DB从某一错误状态恢复到某一已知的正确状态(亦称完整状态或一致状态)的功能
小结
DB的定义:
- 数据库是长期存储在计算机内,有组织的、可共享的大量数据集合;
- 可以供各种用户共享,具有最小冗余度和较高的数据独立性
- DBMS在数据库建立、运行和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障之后对数据库进行恢复
数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。
1.2 数据模型
- 数据模型是对现实世界数据特征的抽象;
- 通俗地讲数据模型就是现实世界的模拟
- 数据模型应满足的三方面要求
- 能比较真实的模拟现实世界;
- 容易为人理解;
- 便于在计算机上实现
- 数据模型是数据库系统的核心和基础
数据模型的功能:描述数据、组织数据和对数据进行操作
数据库技术的发展史沿着数据模型的主线进行推进的
模型:对现实世界中某个对象特征的模拟和抽象。
1.2.1 两类数据模型
在DBS中根据应用中不同的目的和不同的使用对象,可以把不同模型划分为两大类:
- 概念模型:也称为信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计;
- 逻辑模型和物理模型
- 逻辑模型是按计算机系统系统的观点对数据建模,主要用于数据库管理系统的实现,主要包括:
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
- 物理模型:是对数据最底层的抽象,描述数据在系统内部磁盘上的表示方式和存取方法,是面向计算机系统的。物理模型具体实现是数据管理系统的任务。
- 逻辑模型是按计算机系统系统的观点对数据建模,主要用于数据库管理系统的实现,主要包括:
各种机器上实现的DBMS软件都是基于某种数据模型或者说是支持某种数据模型的。
要把现实世界中的具体事物抽象、组织为某一数据库管理系统支持的数据模型需要2步走:
- 将现实世界抽象为信息世界
- 将信息世界转换为机器世界
概念模型不依赖于具体的计算机系统,不是某一个DBMS所支持的数据模型,而是概念级的模型
- 从现实世界---->概念模型:是由数据库设计人员完成的;
- 从概念模型---->逻辑模型:可以由数据库设计人员完成,也可以用数据库设计工具协助设计人员完成
- 从逻辑模型---->物理模型:主要是由数据库管理系统自动完成
1.2.2 概念模型
概念模型实际上是显示世界到机器世界的一个中间层次
用途:
- 概念模型用于信息世界的建模
- 是现实世界到信息世界的第一层抽象
- 是数据库设计人员进行数据库设计的有力工具
- 是数据库设计人员和用户之间进行交流的语言(目的)
基本要求:
- 具有较强的语义表达能力;
- 简单、清晰、易于用户理解
信息世界中的一些基本概念:
- 实体:客观存在并可相互区别的事物称为实体,可以是具体的人、事、物,也可以是抽象的概念或联系
- 属性:实体所具有的某一特征称为属性,一个实体可以由若干个属性来刻画
- 码(key):唯一标识实体的属性
- 实体型:用实体名及其属性名集合来抽象和刻画同类实体,称为实体型
- 实体集:同一类型的实体的集合
- 联系:
- 现实世界中,事物内部以及事物之间是有联系的,在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系;
- 实体内部的联系通常是指组成实体的各属性之间的联系;
- 实体之间的联系通常是指不同实体集之间的联系,实体之间的联系有:一对一、一对多、多对多。
概念模型有很多种表示方法,其中最常用也是很重要的一种是:实体-联系方法,该方法使用E-R图来描述现实世界的概念模型,E-R图也称为E-R方法。
1.2.3 数据模型的组成要素
- 数据模型是严格定义的一组概念的集合,精确地描述了系统的静态特性、动态特性和完整性约束条件
- 数据模型通常由 数据结构、数据操纵 和 完整性约束条件三部分组成
1、数据结构——描述系统的静态特性
数据结构描述数据库的组成对象以及对象之间的联系。
特点:
- 是刻画一个数据模型性质最重要的方面,数据结构的类型来命名数据模型;
- 描述数据库的组成对象——对象的类型、内容、性质,如:网状模型中的数据项、记录,关系模型中的域、属性、关系等;
- 描述对象之间的联系——是数据之间联系有关的对象,如:网状模型中的系型
2、数据操作——描述系统的动态特性
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。
数据库操作类型:
- 查询
- 更新(增删改,也就是插入、删除、修改)
数据操作语言:
- 定义数据操作的确切含义、操作符号、操作规则(如优先级)
- 实现操作的语言
- 查询语言——DQL
- 更新语言——DML
3、数据的完整性约束条件
数据的完整性约束条件是一组完整性规则的集合。
- 完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则
- 用以限定符合数据模型的数据库状态以及状态的变化(数据经过增删改之后的状态),以保证数据的正确、有效和相容
数据模型对完整性约束条件的定义:
- 反映和规定其必须遵守的基本的和通用的完整性约束条件;
- 告诉DBMS你用哪些数据模型——数据模型应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件
1.2.4 常用的数据模型
数据库领域主要的逻辑数据模型:6种
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
第1个和第2个统称为格式化模型,第4个和第5个统称为对象模型
这里讲的数据模型都是逻辑上的,也就是用户眼里看到的数据范围。同时它们又都是能用某种语言描述的。这些数据模型将以一定的方式存储在数据库系统中,这是数据库管理系统的功能,是数据库管理系统中的物理存储模型。
1.2.5 层次模型
表示方法:
- 实体型:用记录类型描述,每个结点表示一个记录类型(实体)
- 属性:用字段描述,每个记录类型可包含若干个字段
- 联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系
层次模型采用树形结构来表示实体及实体之间的联系。
理解:每个记录类型及其字段都必须命名,各个记录类型、同一记录类型中各个字段不能同名,每个记录类型可以定义一个排序字段,也称码字段,如果定义该排序字段的值是唯一的,则它能唯一标识一个记录值。
1、层次模型的数据结构
层次模型的定义:在数据库中满足下面两个条件的基本层次联系的集合为层次模型:
- 有且只有一个结点没有双亲结点,这个结点称为根结点;
- 根以外的其他结点有且只有一个双亲结点
特点:
- 结点的双亲是唯一的,层次模型像一棵倒立的大树
- 只能处理一对多的实体联系
- 任何一个给定的记录值只能按照其存储路径查看
- 没有一个子女记录值能够脱离双亲记录值而独立存在
在数据模型中我们要严格区分型和值的概念。
型:
值:
2、层次模型的数据操纵与完整性约束
数据操纵:
- 查询
- 插入
- 删除
- 更新
完整性约束:
- 如果没有对应的双亲结点值就不能插入它的子女结点值;
- 如果删除双亲结点值,则相应的子女结点值也会被同时删除;
- 更新操作时,应更新所有相关记录,以保证数据的一致性。
3、层次模型的优缺点
优点:
- 层次模型的数据结构比较简单清晰,和现实世界中层次关系非常一致;
- 查询效率高,性能优于关系数据库,不低于网状数据库;
- 层次数据模型提供了良好的完整性支持。
缺点:
- 结点之间的多对多联系表示不自然;
- 对插入和删除操作的限制比较多,因此应用程序的编写比较复杂;
- 查询子女结点必须通过双亲结点;
- 层次命令趋于程序化。
1.2.6 网状模型
采用网状模型作为数据的组织方式来表示各类实体以及实体间的联系,表示方法与层次模型相同。
1、网状模型的数据结构
网状模型能很好的客服层次模型不能多对多的缺点。
网状模型的定义:在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:
- 允许一个以上的结点无双亲
- 一个结点可以有多于一个的双亲
特点:网状模型是一种比层次模型更具普遍性的结构,去掉了层次模型的两个限制(1和2)
- 允许多个结点无双亲
- 允许一个结点有多个双亲结点
- 允许两个结点之间有多种联系(称为复合联系)。因此,网状模型可以更直接地去描述现实世界,二层次模型实际上是网状模型的一个特例。
- 要为每个联系命名,并指出与该联系有关的双亲记录和子女记录——层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一
多对多的联系在网状模型中的表示:
-
网状模型间接表示多对多联系
-
方法:
将多对多联系分解成一对多联系
例:
一个学生可以选修若干门课程
某一课程可以被多个学生选修,学生与课程之间是多对多联系
-
引进一个学生选课的联结记录
选课(学号, 课程号,成绩)
/某个学生选修某一门课程及其成绩/
2、网状模型的数据操纵和完整性约束
导航式的查询语言和增删改操作语言——去过程化的
完整性约束条件不严格:
- 允许插入尚未确定双亲结点值的子女结点
- 允许只删除双亲结点值
- 具体的网状数据库系统对数据操纵都加了一些限制,提供了一定的完整性约束
“属籍类别”:有些子女记录要求双亲记录存在才能插入,双亲记录删除时也连同删除。学生选课记录值必须是数据库中存在的某一学生选修存在的某一门课的记录。课程号必须是课程记录中存在的某一门课程号。
3、网状模型的优缺点
优点:
- 能够更为直接地描述现实世界,如一个结点可以有多个双亲,结点之间可以有多种联系
- 具有良好的性能,存储效率较高
缺点:
- 结构比较复杂,随着应用环境的扩大,DB的结构变得越来越复杂,不利于最终用户掌握
- 网状模型的DDL、DML复杂,并且要嵌入某一种高级语言中,不易使用。
- 由于记录之间的联系是通过存储路径实现的,应用程序在访问数据时必须选择适当的存储路径,加重了程序员的负担
1.2.7 关系模型
关系模型是最重要的一种数据模型
- 关系数据库系统采用关系模型作为数据库的组织方式
- 1970年,美国IBM公司研究员E.F.Codd首次提出了数据库系统的关系模型,1981年获得ACM图灵奖
- DB厂商新推出的DBMS几乎都支持关系模型
1、关系模型的数据结构
从用户观点来看,关系模型由一组关系组成,每个关系的数据结构(数据的逻辑结构)是一张规范化的二维表。
专业术语:
- 关系:一个关系对应一张表
- 元组:表中的一行
- 属性:表中的一列即为一个属性,给每一个属性起一个名称即属性名
- 主码:也称码键,表中的某个属性组可以唯一确定一个元组
- 域:是一组具有相同数据类型的值的集合,属性的取值范围来自某个域
- 分量:元组中的一个属性值
- 关系模式:对关系的的描述,一般表示为:
关系模型数据模型的限制约束条件:
- 关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,最基本的一条:关系的每一个分量必须是一个不可以分的数据项,不允许表中还有表。
关系模型数据结构与二维表的术语对比:
2、关系模型的数据操纵与完整性约束
数据操纵:
- 查询
- 删除
- 插入
- 更新
关系的完整性约束条件
- 实体完整性
- 参照物完整性
- 用户定义的完整性
1和2是关系的2个不变性,由关系模型来确定,任何关系必须满足实体完整性和参照物完整性两个条件
特点:
- 关系模型中数据操作是集合的操作,操作对象和操作的结果都是集合,即若干元组的集合,而不是格式化模型中的单记录操作方式
- 关系模型把存取路径向用户隐蔽起来,用户只要指出“干什么”或“找什么”,不必详细说明“怎么干”或“怎么找”,大大提高了数据的独立性,提高了用户生产率。
3、关系模型的优缺点
优点:
- 建立在严格的数学概念(也就是关系)的基础上;
- 关系模型的概念单一(就是一个:关系)。
- 无论是实体还是实体之间的联系都用关系来表示:学生课程和学生选课就是三个关系,用选课表来表示学生和选课之间的联系
- 对数据的检索和更新结果也是关系(表)——操作对象和操作结果都是关系
- 关系模型的存取路径对用户透明
- 具有更高的数据独立性、更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
缺点:
- 存取路径对用户是隐蔽的,查询速率往往不如格式化数据模型;
- 为了提高性能,DBMS必须对用户的查询请求进行优化(查询优化技术),增加了开发DBMS的难度。
用户不必考虑上面这些系统内部的优化技术细节