第 9章 数 据 库
? 9.1数据库概述
? 9.2关系型数据库
? 9.3面向对象数据库
9.1数据库概述
? 数据库发展
? 数据库( Database ) 产生 20世纪 60年代末,是
计算机软件的分支。
? 1968年美国的 IBM公司开发了第一个数据库系
统。
? 1969年提出了著名的关于网状模型的 DBTG报
告,1970年定义了数据库操纵语言、模式定义
语言和子模式定义语言的概念。
? 1970年,提出了关系代数和关系演算。
? 20世纪 70年代,网状数据库、层次数据库得到
了广泛的应用,而关系数据库处于实验和理论
研究的阶段。
数据库概述
? 数据库发展
? 20世纪 80年代后,关系数据库从理论到实践
都取得了辉煌成果,理论上,确立了完整的
关系理论、数据依赖理论以及关系数据库的
设计理论等;实践上,开发了许多著名的关
系数据库系统。
? 1986年,ANSI通过了关系数据库查询语言
SQL的文本标准
? 到 20世纪 80年代末,关系数据库系统逐步取
代层次和网状数据库系统,成为主流产品。
? 到 80年代后期和 90年代初期,出现了面向对
象数据库系统
数据库概述
? 数据库系统的概念
? 数据库系统( Database System,记为 DBS) 是一
个复杂的系统,它是由硬件、软件(操作系统、
数据库管理系统和编译系统等)、数据库和用户
构成的系统。
硬件
操作系统
数据库管理系统 DBMS
应用系统开发工具
应用系统


数据库概述
? 数据库系统的概念
? 数据库系统与图书馆的比较
数据库 图书馆
数据 图书
外存 书库
用户 读者
数据模型 书卡格式
数据库管理系统 图书馆管理员
数据的物理组织方法 图书馆图书存放方法
用户对数据库的操作 读者对图书馆的访问
( 使用数据操纵语言对数据 ( 用普通语言借书, 还书等 )
检索, 插入, 删除, 修改 )
数据库概述
? 数据库系统的概念
? 数据库管理系统,
? DBMS是一种非常复杂的, 综合性的, 在数据库系统中对
数据进行管理的大型系统软件 。 用户在数据库系统中的
一切操作, 包括数据定义, 查询, 更新及各种控制, 都
是通过 DBMS进行的 。
? DBMS的主要功能,
? 数据库定义功能
? 数据操纵功能
? 数据库运行和控制功能
? 数据库的建立和维护功能
? 数据通信功能
? 数据字典
数据库概述
? 数据库系统的概念
? DBMS的组成,
? 语言编译处理程序
? 系统运行控制程
? 系统建立, 维护程序
以上只是一般 DBMS所包括的主要程序内容。而一个具体的
DBMS并不受上述列举的内容限制,在设计上各有侧重。
数据库概述
? 数据库系统的概念
? DBMS对数据的存取过程
? 用户 A( 或应用程序 A) 用某种特定的数据操
作语言向 DBMS发出一个存取请求命令, 命令
给出想要读的记录 。
? DBMS接受这个请求并解释它 。
? DBMS依次检查外模式, 外 /概念映象, 概念模
式, 概念 /内映象以及存储结构定义等 。
? DBMS对存储数据库执行必要的存取操作 。
? DBMS按外模式导出用户程序需要的记录形式,
然后把数据从系统缓冲区送到用户 A的工作区
数据库概述
? 数据库的研究内容
? 数据库理论
? 数据模型
? 数据库语言
? 数据的安全性(存取控制、可恢复性)
? 事务管理(并发控制)
9.2关系型数据库
? 关系模型的基本概念
? 一个关系型数据库由多个关系组成,每个
关系是以二维表的形式组织数据的。
学号 姓名 年龄 性别 系 年级
82021 张平 18 男 计算机 2
82022 王英 17 女 计算机 1
… … … … … …
82030 李强 17 男 物理 1
主码 属性名

组(
行)


属性列
关系型数据库
? 关系模型的基本概念
? 关系型数据库主要特点,
? 一个关系(表)由行与列组成。
? 在关系模式中,能唯一标识元组的属性集称为超键
( super key); 如果一个属性能唯一标识元组,且又
不含有多余属性,那么这个属性称为候选键
( candidate key); 关系模式中用户正在使用的候选
键称为主键( primary key)。
? 列是同质的,即同列所有分量是同类型的元素;
? 用户能检索、查询表里的数据集。
? 用户能把相关的表链接在一起,以便检索存储在不同
表中的数据。
关系型数据库
? 关系模型的基本概念
? 对一个关系的限制
? 关系中没有重复元组,任意元组在关系中都是唯
一的
? 元组的顺序无关紧要,即元组的次序可以任意交换。
? 属性的顺序是非排序的,即它的次序可以任意交换。
? 属性必须具有不同的属性名,不同的属性可来自同
一个域。
? 同一属性名下的诸属性值 (同列 )是同类型数据,且
来自同一个域。
? 所有的属性值都是原子的
关系型数据库
? 关系模型的基本概念
? 关系数据库的体系结构-是三级体系结构
? 绝大多数数据库系统在总的体系结构上都
具有三级模式的特征。三级模式是对数据
的三个抽象级别,
? 外模式(用户模式)
? 模式(逻辑模式)
? 内模式(存储模式)
关系型数据库
? 数据库系统体系结构
应用 A 应用 B 应用 C 应用 D 应用 E
外模式 1 外模式 2 外模式 3
模式
内模式
数据库
外模式 /模式映象
模式 /内模式映象
关系型数据库
? 关系模型的三类完整性规则
? 实体完整性规则( entity integrity rule)
? 这条规则要求关系中元组在关键的属性上不能有空值。
如果出现空值,那么关键值就起不了唯一表识元组的
作用。
? 引用完整性规则( reference integrity rule )
? 这条规则要求, 不允许引用不存在的元组, 。这条规
则规则也称为, 参照完整性规则, 。
? 用户定义的完整性规则
? 这是针对某一具体数据的约束条件,由应用环境决定。
它反应某一具体应用所涉及的数据必须满足的语义要
求。
关系型数据库
? 关系模型的形式定义
? 关系类型,
? 数据结构
? 数据操作
? 完整性规则。
? 关系模型的突出优点
? 提供单一的数据结构形式,具有高度的简明性和精确性。
? 逻辑结构和数据操作完全独立于数据存储方式,具有高
度的数据独立性,用户完全不必关心物理存储细节。
? 建立在坚实的数学基础上。
? 关系数据库语言与一阶谓词逻辑的固有内在联系,为以
关系数据库为基础的推理系统和知识库系统的研究提供
了方便,成为新一代数据库技术不可缺少的基础。
关系型数据库
? 关系代数
? 关系数据库的查询语言分成两大类,
? 关系代数语言:查询操作是以集合操作为基础的运算
? 关系演算语言:查询操作是以谓词演算为基础的运算
? 关系代数语言是一种抽象的查询语言。
? 关系代数的运算对象是关系,运算结果亦为关系。
? 关系代数用到的运算符包括四类,
? 集合运算符,∪( 并 ) ∩( 交 ) — (差 ) × (广义笛卡儿积 )
? 专门关系运算符,σ( 选择 ) π( 投影 )χ( 连接 ) *(自然连
接 )÷ (除 )
? 算术比较符,θ={>,<,≥,≤,=,≠}
? 逻辑运算符,∧( AND) ∨(OR) ┐(NOT)
注:具体运算在以后数据库原理与技术课中会详细介绍
关系型数据库
? 关系数据库语言和数据库的建立
? 表
? 记录
? 字段
? 表、记录和字段之间的关系
数据库 表 记录 字段
关系型数据库
? 关键字
? 主关鍵字
? 索引
实例:下面在 Access2000环境下建立学生数据库及 学生基本情况表,
课程表和课程成绩表 。
Sno
Sname
Ssex
Sage
Sdept
95001
95002
95003
95004
……
李勇
刘晨
王名
张立




20
19
18
19
Cs
IS
MA
IS







关系型数据库
Cno
Cname
Cpno
Ccredit
1
2
3
4
5
6
7
数据库
数学
信息系统
操作系统
数据结构
数据处理
Pascal语言
5
1
6
7
6
4
2
4
3
4
2
4
Sno
Cno
Grade
95001
95001
95001
95002
95002
……
1
2
3
2
3
92
85
88
90
80








9.3面向对象数据库
? 面向对象数据库系统( Object Oriented
DataBase System,OODBS) 是数据库技术与
面向对象程序设计方法结合的产物。
? OO数据模型和面向对象数据库系统的研究在
数据库研究领域沿着三条路线展开,
? 以关系数据库和 SQL为基础的扩展关系模型。
? 以面向对象的程序设计语言为基础,研究持久的程
序设计语言,支持 OO模型。
? 建立新的面向对象数据库系统,支持 OO数据模型。
面向对象数据库
? 面向对象程序设计方法
? 面向对象的程序设计方法是一种支持模块化设计
和软件重用的实际可行的编程方法。
? 面向对象的程序设计的基本思想是封装和可扩展
性。
? 面向对象的程序设计就是把数据结构和数据结构
上的操作算法封装在一个对象中。
? 对象是以对象名封装的数据结构和可施加在这些
数据上的私有操作。
? 面向对象的程序设计可扩展性体现在继承性和行
为扩展两个方面。
面向对象数据库
? 面向对象数据模型
? OO模型的核心概念
? 对象、封装、类、类层次、消息
? 对象和对象标识
? 对象结构、对象标识、封装
? 类和层次
? 类的概念、类的层次结构,
? 继承
? 滞后联编
? 对象的嵌套
面向对象数据库
? 面向对象数据库语言
? OODB语言用于描述面向对象数据库
模式,说明并操纵类定义与对象实例
? OODB语言主要包括对象定义语言
( ODL) 和对象操纵语言( OML),
对象操纵语言中一个重要子集是对象
查询语言( OQL)