基本定义:
数据库(DB):
DB是长期存储在计算机内、有组织、可共享的大量数据的集合。数据库的数据按一定的数据模型组织描述、存储,具有较小的冗余度、较高的数据独立性和易扩展性,并且可以为各种用户共享,数据库具有永久存储、有组织、可共享三个基本特点。
数据库管理系统(DBMS):
数据库管理系统是位于用户与OS之间的一层数据管理软件,它为用户或应用程序提供了访问DB的方法。是由一个相互关联的数据的集合(DB)和一组用以访问、管理和控制这些数据的程序(建立在操作系统之上的系统软件)组成。主要功能包括:
1.数据定义功能
数据库管理系统提供数据定义语言(DDL),用户通过它可以对数据库的数据对象的组成和结构进行定义。
2.数据组织、存储和管理
数据库管理系统要分类组织、存储、管理各种数据,包括数据字典、用户数据、数据库的存取路径等。提供多种存取方法(如索引查找、顺序查找等)来提高存取率。
3.数据操纵功能
数据库管理系统提供数据库操作语言(DML),用户可以使用它操作数据,实现对数据库的基本操作,如增删改查。
4.数据库的事务管理和运行管理
数据库在建立、运用、维护时由数据库管理系统统一管理和控制,确保事务的正确运行,保证数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复。
5.数据库的建立和维护功能
数据库的建立和维护功能包括数据库初始数据的输入、转换功能、数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。这些功能一般是由一些实用程序或管理工具完成的。
数据库系统(DBS)
是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其应用开发工具)、应用系统、数据库管理员和最终用户构成。——人机系统
数据库管理技术
产生与发展:
人工管理阶段(20世纪50年代中期以前)
数据面向应用程序,应用程序与数据集一对一,数据需要由应用程序自己定义和管理,数据无法共享,数据冗余较严重
文件管理阶段(20世纪50年代后期到60年代中期)
应用程序和数据集时间的关系如下,数据可以长期保存、由文件系统管理数据
文件系统的特点:
- 文件系统实现了文件内的结构性,即一个文件内的数据是按记录进行组织的,这样的数据是有结构的(语义的) ,数据的语义是明确的。
- 整体上还是无结构的,即多个文件之间是相互独立的,无法建立全局的结构化数据管理模式。
- 程序和数据之间由文件系统提供的存取方法进行转换,程序员可以不必过多地考虑数据的物理存储细节。
- 由于数据在物理存储结构上的改变不一定反映在程序上,因此应用程序与数据之间有了一定的物理独立性。
文件系统的弊端:
数据共享性差、数据冗余和不一致
- 数据冗余是指相同的数据在不同的地方(文件)重复存储
- 文件系统中的一个(或一组)文件基本上对应于一个应用程序,不同应用程序之间很难共享相同数据
独立性差
- 文件系统中的文件组是为某一特定应用服务的,其逻辑结构对于该特定应用程序来说是优化的,但是系统不易扩充
- 因此,数据与应用程序之间缺乏逻辑独立性
数据孤立,数据获取困难
- 对于数据与数据之间的联系,文件系统仍缺乏有效的管理手段
完整性问题
- 数据的完整性是指数据的正确性、有效性和相容性,也称为一致性约束
- 例如,一个学生需要选修某门课程,该学生必须已经修过了该课程规定的先修课程时才能选修(因为课程之间存在先修后修关系);必须在该教学班尚未选满时才能选修(因为教室容量有限);必须在时间上与其它已经选修的课程不冲突时才能选修
安全性问题
- 一个系统可能有很多用户,不同用户可能只允许其访问一部分数据,即该用户只有一部分数据的访问权限
原子性问题
- 计算机系统有时会发生故障,一旦故障发生并被检测到,数据就应该恢复到故障发生前的状态
- 例如,学生选课时,不仅要在选课文件中增加某学生选修某门课的记录,同时也要在该课程教学班记录中将已选课人数加1,以便学生选课时进行容量控制因此,增加选课记录与选课人数加1两个操作要么都发生,要么都不发生,这就是学生选课操作的原子性要求
- 如何有效地保障操作的原子性就成为急需解决的问题
并发访问异常
- 系统应该允许多个用户同时访问数据,在这样的环境中由于并发更新操作相互影响,可能会导致数据的不一致
- 如何有效地进行并发控制(即确保并发操作正确性)就成为急需解决的问题
数据库管理系统阶段(20世纪60年代后期以来)
解决了文件管理系统存在的问题
数据库管理系统的主要特点
1、数据结构化。数据库管理系统实现数据的整体结构化,这是数据库的主要特征之一,也是数据库管理系统与文件系统的本质区别。
- 数据不仅仅是内部结构化,而是将数据以及数据之间的联系统一管理起来,使之结构化。
- 在数据库中的数据不是仅仅针对某一个应用,而是面向全组织的所有应用。例如:学校信息系统中的学生数据要面向全校各个职能管理部门和院系的应用,而不仅仅是教务处的一个学生成绩管理应用。
2、数据的共享度高、冗余度低,易扩充
- 数据库管理系统从整体角度描述和组织数据,数据不再是面向某个应用,而是面向整个系统
- 因此,数据可以被多个用户、多个应用共享使用
- 数据共享可以大大减少数据的冗余,避免数据之间的不一致性
3、数据独立性高
- 数据独立是指数据的使用(即应用程序)与数据的说明(即数据的组织结构与存储方式)分离
- 数据独立性用来描述应用程序与数据结构之间的依赖程度,包括数据的物理独立性和数据的逻辑独立性,依赖程度越低则独立性越高
- 物理独立性是指用户的应用程序与数据库中数据的物理结构是相互独立的。数据在磁盘上如何组织和存储由DBMS负责,应用程序只关心数据的逻辑结构;当数据的物理存储结构改变时,应用程序不用修改
- 逻辑独立性是指用户的应用程序与数据库中数据的逻辑结构是相互独立的。数据的(全局)逻辑结构由DBMS负责,应用程序只关心数据的局部逻辑结构(即应用视图),数据的(全局)逻辑结构改变了,应用程序也可以不用修改
4、数据有数据库管理系统同意管理和控制
- 数据的安全性保护:保护数据以防止不合法的使用造成数据的泄密和破坏
- 数据的完整性检查:将数据控制在有效的范围内,或保证数据之间满足一定的关系
- 并发控制:对多个用户或应用同时访问同一个数据的并发操作加以控制和协调,确保得到正确的修改结果或数据库的完整性不遭到破坏
- 数据库恢复:当计算机系统发生硬件或软件故障时,需要将数据库从错误状态恢复到某一已经正确状态
数据模型-对现实世界的数据特征进行抽象
数据模型是一个描述数据结构、数据操作以及数据约束的数学形式体系(即概念及其符号表示系统)
- 数据结构用于刻画数据、数据语义以及数据与数据之间的联系
- 数据约束是对数据结构和数据操作的一致性、完整性约束,亦称为数据完整性约束
分类:
概念模型:概念层次的数据模型,也称为信息模型
逻辑模型:用于描述数据库数据的整体逻辑结构
物理模型:用来描述数据的物理存储结构和存取方法
概念模型
按用户的观点或认识对现实世界的数据和信息进行建模。常用的概念模型有实体-联系模型(E-R模型)和面向对象模型(OO模型)
E-R模型基本概念:
1.实体
客观存在并可以相互区分的事务叫实体
2.属性
实体所具有的某一特性叫属性,每个属性所允许的取值范围或集合称为该属性的域
3.码(主键)
唯一标识实体的属性称为主键
4.实体集
具有相同类型即相同性质(或属性)的实体组成的集合
5.联系
实体之间的联系通常是指不同实体集之间的联系
实体间的联系分为一对一、一对多、多对多
逻辑模型
数据的计算机实现形式
不同的DBMS提供不同的逻辑数据模型有:
层次模型(hierarchical model)、网状模型(network model)、关系模型(relational model)、面向对象模型(即OO模型)、XML模型、对象关系模型(object relational model)
物理模型
数据抽象的最底层,数据库中的数据具体存放等问题。
数据模型的组成要素
数据结构:描述数据库的组成对象以及对象之间的联系
数据操作:指对数据库中各种对象(型)的实例(值)允许执行的操作集合,包括操作及有关的操作规则
数据完整性约束:一组数据完整性规则,是数据、数据语义和数据联系所具有的制约和依存规则,包括数据结构完整性规则和数据操作完整性规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据库中数据的正确、有效和相容
逻辑数据模型——层次模型
1.层次模型的数据结构
用树形结构来表示各类实体以及实体间的联系。实体用记录来表示,实体间的联系用链接(可看作指针)来表示。
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型
(1)有且只有一个节点没用双亲结点,这个节点称为根结点
(2)根以外的其他结构有且只有一个双亲结点
层次结构像一课倒立的树
2.层次模型的数据操作与完整性约束
数据操作:查询、插入、删除、更新。进行插入、删除、更新操作要满足层次模型的完整性约束条件。
进行插入操作,如果没有相应的双亲结点值就不能插入他的子女结点值。
进行删除操作时,如果删除双亲结点值,则相应的子女结点值也将被同时删除。
3.层次模型的优缺点:
优点:数据结构简单清晰;查询效率高;提供了良好的完整性支持
缺点:现实世界中很多联系是非层次性、如果一个结点具有多个双亲结点等,用层次结构表示这类联系就很笨拙,只能通过引入冗余数据或创建非自然的数据结构来解决,对插入和删除操作的限制比较多,因此应用程序的编写比较复杂;查询子女结点必须经过双亲结点;由于结构严密,层次命令趋于程序化
逻辑数据模型——网状模型
1.网状模型的数据结构
满足以下两个条件的基本层次联系集合称为网状模型
(1)允许一个以上的结点无双亲
(2)一个结点可以有多于一个的双亲
2.网状模型的数据操作和完整性约束
网状模型是一种比层次模型更具普遍性的结构,它去掉了层次模型的两个限制,还允许两个结点之间有多种联系(称为复合联系)。因此,网状模型可以更直接地去描述现实世界。具体的网状数据库系统对数据操作都加了一些限制,提供了一定的完整性约束
3.网状模型的优缺点
优点
(1)能够更为直接的描述现实世界
(2)具有良好的性能,存取效率较高
缺点
(1)结构比较复杂,且随着应用环境的扩大,数据库的结构变得越来越复杂,不利于最终用户掌握
(2)网状模式的DDL、DML复杂。,并且要嵌入某一种高级语言,用户不容易掌握
(3)由于记录之间的联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,加重编写应用程序的负担
逻辑数据模型——关系模型
1、关系模型的数据结构
关系模式(relational schema):通过关系名和属性名列表对关系进行描述,即二维表的表头部分(表格的描述部分)
表头:关系模式、属性
表体:关系、元组
超码、候选码、主码、外码
关系模式:对关系的描述一般为——关系名(属性1,属性2,...,属性n)
最基本的规范条件是:
- 关系的每一个元组必须是可分区的,即存在码属性
- 关系的每一个属性(即元组的分量)必须是一个不可分的数据项,即不允许表中有表
2、关系模型的数据操作和完整性约束
数据操作:
- 关系数据模型的操作主要包括查询和更新(插入、删除和修改)
- 关系:元组的集合,关系模型的数据操作是集合操作,操作对象和操作结果都是关系(元组的集合)——不同于传统的非关系模型的数据操作:单记录操作
- 关系模型:存取路径是透明的,用户只要指出“干什么”或“找什么”,不必说明“怎么干”或“怎么找”,从而大大提高了数据的独立性,提高了软件的开发和维护效率
关系数据模型的完整性约束:实体完整性(主码属性不能为null)、参照完整性(外码属性要么为null,要么为参照的主码值)和用户自定义完整性
3、 关系模型的优缺点
优点
(1)建立在严格的数学概念的基础上:有关系代数作为语言模型,有关系数据理论作为理论基础
(2)关系模型的概念单一。无论实体还是实体之间的联系都用关系表示,所以其数据结构简单、清晰,用户易懂易用。
(3)关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作
缺点
由于存取路径对用户是隐蔽的所以查询效率不如格式化数据模型
数据抽象
数据库的三级模式
根据数据抽象的3个不同级别,DBMS也应该提供观察数据库的3个不同角度,以方便不同的用户使用数据库的需要。这就是数据库的三级模式结构。
模式——核心关键
- 也称为逻辑模式,对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 模式的一个具体值称为模式的一个实例(instance)
- 它是DBMS模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关
外模式
- 也称子模式或用户模式,对应于视图层数据抽象
- 是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一具体应用有关的数据的逻辑表示
- 外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的
内模式
也称存储模式,对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式
数据库的两层映像功能和数据独立性
外模式/模式映像
- 对应于一个模式可以有多个外模式。对于每一个外模式,数据库管理系统都有一个模式/外模式映像,它定义了该外模式与模式之间的对应关系
- 在各自的外模式描述中定义外模式/模式映像
- 保证了数据与应用程序的逻辑独立性,简称为数据的逻辑独立性
模式/内模式映像
- 数据库中只有一个模式,也只有一个内模式,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。
- 在模式描述中定义模式/内模式映像
- 保证了数据与应用程序的物理独立性,简称为数据的物理独立性
三级模式和三层模型的联系和区别
作用及目的不同。
三级模式是DBMS的体系结构,目的是:
1.隐藏数据的存储和维护的细节,为用户提供数据在不同层次上的视图,方便不同的使用者可以从不同的角度去观察和利用数据库中的数据。
2.支持数据独立性的实现。
3.提供全局逻辑视图(模式):支持整体结构化,从而实现数据共享度高、冗余度低、易扩充。
4.部分支持安全性的实现。
三层模型是数据库设计的工具和方法(要满足DBMS体系结构的要求),目的是:
1.较真实地模拟现实世界、容易被人理解、便于计算机实现。一个数据模型不可能同时满足这些要求!
2.提供全局逻辑模型:支持整体结构化,从而实现数据共享度高、冗余度低。
3.同时满足DBMS三级模式结构(模式与内模式)要求。
两者之间的联系为: