一、四个基本概念
(一)数据
数据(Data)是数据库中存储的基本对象,其含义成为数据的语义
(二)数据库
数据库(Database)是长期储存在计算机内,有组织的,可共享的大量数据集合
数据库的特征:
- 数据按一定的数据模型组织,描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
(三)数据库管理系统
数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件
DBMS的用途:
- 科学的组织和存储数据,高效的获取和维护数据
- 数据定义功能
- 数据组织、存储和管理
- 数据操纵功能:提供数据操纵语言
DBMS的主要功能: - 数据库的运行管理(数据控制DCL)
- 数据库的建立和维护功能
(四)数据库系统
数据库系统(DBS)是指在计算机系统中引入数据库后的系统构成
(五)数据库系统的构成
由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成
数据库系统构成图示:
二、数据库管理技术的产生和发展
(一)【难】数据库的特点
- 数据的管理者:DBMS
- 数据面向的对象:现实世界
- 数据的共享程度:共享性高
- 数据的独立性:高度的物理独立性和一定的逻辑独立性
- 数据的结构化:整体结构化
- 数据的控制能力:由DBMS统一管理和控制
【考】文件系统与数据库系统的本质区别在于数据库系统实现整体数据的结构化,数据库中实现的数据的真正结构化
(二)【考】数据库管理的三个阶段的比较
人工管理阶段、文件系统阶段、数据库阶段
数据独立性:
- 物理独立性:指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,当数据的物理存储改变了,应用程序可以不变
- 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的,数据的逻辑结构改变了,用户程序也可以不变
数据独立性是由DBMS的二级影响功能来保证的
(三)数据由DBMS统一管理和控制
- 数据的安全性(Security)保护
- 数据的完整性(Integrity)检查
- 并发(Concurrency)控制
- 对多用户的并并发操作加以控制和协调,防止相互干扰而得到错误的结果
- 数据库恢复(Recovery)
三、数据模型
数据模型分成两个不同的层次
(1)概念模型
也称信息模型,他是按照用户的观点来对数据和信息建模,主要用于数据库设计
(2)逻辑模型和物理模型
逻辑模型主要包括网状模型,层次模型,关系模型等,他是按照计算机系统的观点对数据建模
物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的
数据模型是数据库系统的核心和基础
(一)数据模型的组成要素
- 数据结构
数据结构:描述数据库的组成对象及对象之间的联系
两类对象(实体,联系)
数据结构是对系统静态特性的描述 - 数据操作
数据操作:是指对数据库中各种对象的实例允许进行的操作的集合,包括操作及其有关操作规则
数据操作的类型(查询,更新)
数据模型对操作的定义(符号、规则、含义、语言)
数据操作是对系统动态特性的描述 - 数据的约束条件
一组完整性规则的集合,完整性规则是给定的数据模型中数据及其联系所具有的制约和存储规则
数据模型对约束条件的定义
(二)概念模型
- 概念模型的用途
概念模型用于对信息世界的建模 - 对概念模型的基本要求
较强的语义表达能力,能够方便直接的表达应用中的各种语义知识
简单、清晰、易于用户理解
易于向数据模型转化 - 信息世界中的基本概念
- 实体(Entity):客观存在并可相互区别的事物成为实体。可以是具体的人、物,也可以是抽象的概念或联系
- 属性(Attribute):实体具有的某一特性成为属性
- 码(Key):唯一标识实体的属性集称为码,如学号是学生实体的码
- 域(Domain):属性取值的范围
- 实体型(Entity Type):实体名及其属性集合来抽象和刻画同类实体,称为实体型,如学生及其学号姓名等信息
- 实体集(Entity Set):同一类型的实体集合,如全体学生
- 联系(Relationship):一对一,一对多,多对多
- 一对一联系
如果对于实体集A正宗的每一个实体,实体集B中之多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系。记为1:1
实例
班级与班长之间的联系
一个班级只有一个正班长,一个班长只在一个班中任职 - 一对多联系
如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n
实例
班级与学生之间的联系;
一个班级有若干名学生,每个学生只在一个班级中学习 - 多对多联系
如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m(m>=0)个实体与之联系,则称实体集A与实体集B有多对多联系,记为m:n
实例
课程与学生之间的联系
一门课程同时有若干个学生选修,一个学生可以同时选修多门课程 - 同一实体集内各实体间的联系
一对多: 职工实体集内部具有领导与被领导的联系
一对一: 球队‘对阵’联系
多对多: 大夫‘治病联系’
- 概念模型的表示方法
实体-联系方法(E-R方法)
用E-R图来描述现实世界的概念模型,他提供了表示实体型,属性和联系的方法
E-R方法也称为E-R模型‘’
(三)常用的数据模型
- 非关系模型
- 层次模型
- 网状模型
数据结构:以基本层次联系为基本单位
基本层次联系:两个记录以及他们之间的一对多(包括一对一)的联系
- 关系模型
数据结构:表 - 面向对象模型
数据结构:对象 - 对象关系模型
1. 层次模型
层次模型的数据结构
满足下面两个条件的基本层次联系的集合为层次模型
- 有且只有一个结点没有双亲结点,这个结点成为根结点
- 跟以外的其他结点有且只有一个双亲结点
层次模型中的几个术语
根结点,双亲结点,兄弟结点,叶节点
表示方法
- 实体型:用记录类型描述,每一个结点表示一个记录类型
- 属性:用字段描述,每个记录类型可包含若干个字段
- 联系:用结点之间的连线表示记录(类)型之间的一对多的联系
实例:教员-学生数据模型
教员学生层次数据库的一个值
多对多联系在层次模型中的表示
用层次模型间接表示多对多联系
方法:将多对多联系分解成一对多联系
分解方法:冗余结点法、虚拟结点法
右上为冗余结点法,下方为虚拟结点法
层次模型特点
- 结点的双亲是惟一的
- 只能直接处理一对多的实体联系
- 每个记录类型定义一个排序字段,也称为码字段
- 任何记录值只有按其路径查看时,才能显示出他的全部意义
- 没有一个子女记录值能够脱离双亲记录值而独立存在
层次模型的数据操纵
- 查询
- 插入
- 删除
- 更新
层次模型的完整性约束
- 无相应双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应的子女结点值也被同时删除
- 更新操作时应更新所有相应记录,以保证数据的一致性
层次模型的存储结构
- 邻接法
按照层次数前序遍历的顺序把所有记录值一次邻接存放,即通过物理空间的位置相邻来实现层次顺序
- 链接法
用指引元来反映数据之间的层次关系
- 层次序列链接法
层次模型的优缺点
- 优点
- 层次模型简单,对具有一对多的层次关系的部门描述自然、直观、容易理解
- 性能优于关系模型,不低于网状模型
- 层次数据模型提供了良好的完整性支持
- 缺点
- 多对多联系表示不自然
- 对插入和删除操作的限制多
- 查询子女结点必须通过双亲结点
- 层次命令趋于程序化
2. 网状模型
满足下面两个条件的基本层次联系的集合为网状模型
- 允许一个以上的节点无双亲
- 一个节点可以有多与一个的双亲
表示方法(与层次模型相同)
特点
- 只能直接处理一对多的实体联系
- 每个记录类型定义一个排序字段,也称为码字段
- 任何记录值只有按其路径查看时,才能显示出他的全部意义
网状模型与层次模型的区别
- 网状模型允许多个节点没有双亲结点
- 网状模型允许节点有多个双亲结点
- 网状模型允许两个结点之间有多种联系(复合联系)
- 网状模型可以更直接的去描述现实世界
- 层次模型实际上是网状模型的一个特例
完整性约束条件
虽然没有层次模型那么严格但是也提供了一些约束条件
- 支持记录码的概念
- 双亲和子女一对多联系
- 支持双亲和子女之间的某些约束条件
网状模型的优缺点
- 优点
能够更为直接的描述现实世界,如一个节点可以有多个双亲
具有良好的性能,存储效率高 - 缺点
结构比较复杂,而且随着应用环境的扩大,数据结构就变得越来越复杂,不利于最终用户掌握
DOL,DML语言复杂,用户不容易使用
3. 关系模型
在用户观点下,关系模型中数据的逻辑结构是一张二维表,他由行的列组成
实体及实体间的联系的表示方法
实体型:直接用关系(表)表示
属性:用属性名表示
一对一联系:隐含在实体对应的关系中
一对多联系:隐含在实体对应的关系中
多对多联系:直接用关系表示
关系模型的数据操纵
查询,插入,删除,更新
数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合
存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”
关系模型的完整性约束
实体完整性
参照完整性
用户定义完整性
关系模型的优缺点
- 优点
建立在严格的数学概念的基础上,概念单一,数据结构简单,清晰,用户易懂易用
实体和各类联系都用关系来表示
对数据的检索结果也是关系
关系模型的存储路径对用户透明
具有更高的数据独立性,更好的安全保密性
简化了程序员的工作和数据库开发建立的工作 - 缺点
存储路径对用户透明导致查询效往往补不如非关系数据模型
为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度